제2부. codevisionavr c...
TRANSCRIPT
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
45
제2부. CodeVisionAVR C 컴파일러
제1장. CodeVisionAVR 설치 및 사용 방법
1. CodeVisionAVR C 컴파일러 특징
CodeVisionAVR C 컴파일러는 가격에 비해 성능이 우수한 컴파일러로
다음과 같은 특징이 있다
- 편리한 통합 환경 : 소스 에디터, 컴파일/링크, Flash-ROM/EEPROM 다운로드,
통신 프로그램 등이 함께 제공 됨.
- 자동 소스 코드 생성 기능(CodeWizardAVR)
- 풍부한 라이브러리 함수 제공 : 통신(UART), LCD표시, 온도, 시계, A/D 소자
함수 제공.
- 편리한 FLASH, EEPROM, SRAM 변수 관리
- 포트 및 변수의 비트 제어 기능
- 인 라인 어셈 기능 제공
- 저 가격. (30 만원 대)
- 무료 평가 버전 사용 가능(용량 제한 및 일부 함수 사용 제한)
2. 회로 설치
준비물
- 컴퓨터(PC)
- AVR_EDU 보드
- AVR 다운로드 포드(POD)
- 전원 장치 : 5V 전압 출력
- CodeVisionAVR C 컴파일러
- AVR Studio 3.56 이상 (시뮬레이션 필요시)
커넥터 접속
컴퓨터의 프린터 포트에 AVR ISP 포드를 접속하고, POD의 6핀 케이블을 CN16에 접속,
CN17과 CN28을 8핀 케이블로 접속, 전원 장치의 5V를 CN1에 접속 함.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
46
PCB 기판 부품 배치도
AVR20핀
RS232C
커넥터
AVR40핀
RS232C
커넥터5V
전원 입력
커넥터
스텝 모터
접속
커넥터 모터 전원
입력
커넥터
DC 모터
접속
커넥터 DC 모터
제어
신호 입력
스텝 모터
제어
신호 입력
ISP
케이블
접속
D/A
변환기
가변
저항 7세그먼트
표시
LED
표시
KEY
입력
LCD
표시
RCM103
모듈 접속
40핀
ATmega85
20핀
AT90S2313
RCM 8
RCM 128
40핀
ATmega8535
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
47
설치 사진 (ISP POD 접속)
표시 LED
전원 입력(5V)
ISP 포드
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
48
회로 연결도
VCC
AR24.7Kx4
2345
1 AVR-ISPPOD 접속
D10
LED
D12
LED
CN16
ISP_20P
123456
MISO2
RXD
D8
LED
8핀 케이블 접속
AR3
1Kx8
23456789
1
X28MHz
CN17CN_PB
1 2 3 4 5 6 7 8
VCC
D14
LED
U4
AT90S2313DIP
1
345
2
6789
10
20191817
1514131211
16
RESET
PD1(TxD)XTAL2XTAL1
PD0(RxD)
PD2(INT0)PD3(INT1)PD4(T0)PD5(T1)GND
VccPB7[SCK)
PB6[MISO)PB5(MOSI)
PB3(OC1)PB2
PB1[AIN1)PB0[AIN0)PD6(ICP)
PB4
CN28CN_LED1 2 3 4 5 6 7 8
SCK2
C920pF
D9
LED
D15
LED
MOSI2TXD
C820pF
VCC
CN18CN_PD
1 2 3 4 5 6 7 8
VCC
/RESET2
D11
LED
D13
LED
LED Display
설명:
ISP 커넥터(ISP_20P) :
6핀으로 되어 있는데, 전원선 2개와 신호선 4개로 구성되어 있다.
AVR의 내부 FLASH나 EEPROM 내용을 다운 로드 하는데 사용한다.
접속 방향(1번 적색 신호)에 유의 한다.
포트 사용:
AT90S2313의 경우 B포트는 8개 D포트는 7개의 포트를 사용할 수 있는데,
ISP에 사용되는 신호도 일반 포트로 사용할 수 있다. 단 다운 로드 시에 신호에 신
호 충돌이 없도록 해야 한다.
8개의 LED(액티브 Low로 동작)와 포트 B는 8핀 케이블로 접속한다.
동작 클럭:
AT90S2313-10PI의 경우 10MHz까지 사용이 가능하며 8MHz 발진자가 부착되어
있음.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
49
3. CodeVisionAVR C 컴파일러 사용 방법
LED를 표시하는 간단한 예제를 사용하면서 CodeVisionAVR 사용법을 읽혀보자.
<1> 프로그램 실행
<2> 프로그램 실행 화면
처음 실행 화면
<3> File => New 항목을 실행
Project 선택:
아이콘 실행
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
50
<4> 자동 소스 코드 생성 기능을 사용할지를 묻는다
Yes: 프로그램 전체 코드의 골격을 생성
No: 사용자가 처음부터 작성
이 예제에서는 자동 생성 기능을 사용해 본다. Yes 선택
<5> 사용하는 AVR Chip과 동작 클럭을 선택한다.
<5> 여기서는 포트B를 출력으로 하여
LED를 카운트 ON하는 프로그램을
작성하므로 방향을 출력(O)으로
설정한다.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
51
<6> 소스 프로그램 생성
> Generate, Save and Exit 실행
> 소스 파일 이름 지정 : led.c
> 프로젝트 이름 지정 : led.prj
> CodeWizardAVR 프로젝트 이름 지정 : led.cwp
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
52
> 소스 프로그램이 생성 되었음
Wizard를 사용한 소스 프로그램 내용:
/*********************************************
This program was produced by the
CodeWizardAVR V1.24.4 Standard
Automatic Program Generator
?Copyright 1998-2004
Pavel Haiduc, HP InfoTech S.R.L.
http://infotech.ir.ro
e-mail:[email protected] , [email protected]
Project :
Version :
Date : 2004-12-31
Author : Cheol-oh Kim
Company : RealSYS Seoul Korea
Comments:
Chip type : AT90S2313
Clock frequency : 8.000000 MHz
Memory model : Tiny
Internal SRAM size : 128
External SRAM size : 0
Data Stack size : 32
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
53
*********************************************/
#include <90s2313.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B
DDRB=0xFF;
PORTB=0xFF;
// Port D
DDRD=0x00;
PORTD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Output Compare
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Output Compare
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
while (1)
{
// Place your code here
};
}
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
54
<7> 소스 프로그램 편집
수정된 소스 파일:
*********************************************
This program was produced by the
CodeWizardAVR V1.0.1.3c Standard
Automatic Program Generator
?Copyright 1998-2000
Pavel Haiduc, HP InfoTech S.R.L.
http://infotech.ir.ro
e-mail:[email protected] , [email protected]
Project :
Version :
Date : 2004-12-31
Author : Cheol-oh Kim
Company : RealSYS Seoul Korea
Comments:
Chip type : AT90S2313
Clock frequency : 8.000000 MHz
Memory model : Tiny
Internal SRAM size : 128
External SRAM size : 0
Data Stack size : 32
*********************************************/
#include <90s2313.h>
// Declare your global variables here
char m_cnt=0; // 바이트 크기의 m_cnt 외부 변수 선언
void main(void)
{
// Declare your local variables here
long i; // 4바이트 크기의 i 자동 변수 선언
// Input/Output Ports initialization
// Port B
DDRB=0xFF;
PORTB=0xFF;
// Port D
DDRD=0x00;
PORTD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
55
// Mode: Output Compare
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Output Compare
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
while (1)
{
// Place your code here
m_cnt++; // m_cnt 변수 1 씩 증가
PORTB = ~m_cnt; // 반전(1의 보수)하여 포트 B로 출력 함
for(i=0;i<1000;i++); // 딜레이 루틴
};
}
설명:
char m_cnt=0; // 바이트 크기의 m_cnt 외부 변수 선언
main() 함수 외부 위에 변수를 선언하였으므로 외부 변수가 되고 크기는 1바이트 임.
long i; // 4바이트 크기의 i 자동 변수 선언
main() 함수 내부에 선언하였으므로 자동 변수(스택 영역 사용)가 되고 크기는 4 바이트
.
m_cnt++; // m_cnt 변수 1 씩 증가
PORTB = ~m_cnt; // 반전(1의 보수)하여 포트 B로 출력 함
for(i=0;i<1000;i++); // 딜레이 루틴
반전(1의 보수)하여 포트 B로 출력하는 이유는 LED가 0일 때 ON이 되므로.
For 루틴은 단순 지연 루틴으로 LED 증가 상태를 육안으로 확인 할 수 있도록 하기 위
해서 임
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
56
<8> 컴파일 하기
Project => Compile File 메뉴나 해당 아이콘을 눌러 컴파일 시켜본다.
> 컴파일 정보가 표시
<8> 링크(메이크) 하기
Project => Make 메뉴나 해당 아이콘을 눌러 컴파일 시켜본다.
화면이 잠시 도스 모드로 이동한 후 링크를 마치고 다시 윈도우로 돌아 옴.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
57
<9> 플래시 롬에 다운로드 하기
Tools => Chip Programmer 메뉴나 해당 아이콘을 눌러 컴파일 시켜본다.
> CodeVision Chip Programmer 화면이 나타남.
> File를 Load 한 후, Erase Chip 및 FLASH 항목을 실행 함
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
58
<10> 플래시 롬에 다운로드 하기 (메이크 후 자동 실행 방법)
링크 동작 후 바로 플래시 롬 프로그램을 실행하는 방법이 있다.
> Project => Configure의 설정을 실행 한다.
> After Make 에서 Program the Chip의 체크 박스를 체크 한다.
> 링크 정보와 함께 Program 버튼이
나타나고 이 버튼을 누르면
자동으로 Erase > Program > Verify
동작을 완료한다.
<11> AVR 프로그램 다운 로드 완료
프로그램 다운 로드를 마치면
자동으로 프로그램이 실행 된다.
전원이 OFF 되어도 프로그램은 지워지지 않음.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
59
<12> 몇 가지 설정 항목 고찰
> Project=>Configure 항목 실행
> 다음과 같은 화면이 표시 됨.
비트 변수영역
최대 112비트
스택 영역:
자동 변수 사용량을
고려하여 적절히 설정
스택 영역을 많이 잡으면
외부 변수 영역이 적어 짐
내부 RAM 영역:
Chip 종류에 따라 다름
생성 코드 최적화
방법 선택
Chip 종류 및
동작 속도
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
60
> Settings => Programmer 항목 설정
> Settings => Debugger 항목 설정
AvrStudio.exe로 설정
> Settings => Terminal 항목 설정
사용하는 포트와 BPS로 설정
프린터 포트형은
Kanda.. 로 설정
사용하는
LPT 포트로 설정
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
61
<13> 통신 프로그램 사용하기
> Tools => Terminal 항목 실행
CodeVisionAVR은 통신 터미널 프로그램을 내장하고 있으므로 별도의 하이퍼 터미널 등
을 사용하지 않아도 통신 동작 시험이 가능하다.
부가적으로 문자 단위의 16진수 코드의 송신이 가능하며 HEX / ASCII 모니터가 가능하다.
<14> 도움말 기능
기능에 대해 도움이 필요하면 F1 키를 사용하여 도움말 요청이 가능하다.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
62
4. AVR Studio 사용 방법
AVR Studio 특징
AVR Studio는 Atmel사에서 무료로 다운 받아 사용할 수 있는 개발 환경으로 시뮬레이션과
다양한 에뮬레이터를 지원하는데 여기서는 JTAG-ICE와 연결 사용을 중심으로 살펴 본다.
특징: - Asm/C 소스 레벨 디버깅 가능.(Asm/C 절환 사용 가능)
- Single Step, Break Point 동작 사용 가능.
- 프로그램, 데이터, I/O 영역 데이터 관찰 및 변경 가능.
- 각종 레지스터 모니터 및 변경 가능.
- 각종 변수 값 모니터 및 변경 가능.
- 저가격 : 20만원 대.
- 시뮬레이터로 사용 가능.
RealSYS(리얼시스)에서 구입 가능: Tel: 031-420-4326, www.realsys.co.kr
<1> 실행 방법
AVR Stdio을 사용하기 전에 CodevisionAVR을 이용하여 C 소스 파일을 Compile 하여
.COFF 와 .OBJ를 생성하도록 한다.
COFF 인 경우 디버깅시 C 소스 레벨로 디버깅 하며 , OBJ 인 경우 ASM 레벨로 디버깅
할 때 필요하다.
AVR Studio 아이콘을 직접 실행하거나 CodeVisionAVR의 Tools=>Debugger를 실행한다.
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
63
<2> 실행 화면
<3> 실행 화면
> C소스/어셈 코드 절환 표시 가능
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
64
> CPU 레지스터 값 표시
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
65
> 메모리 내용 덤프
> 각종 변수 값 관찰 가능
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
66
> 각종 CPU 자원 관찰 가능
> 기타 편리한 개발 환경 제공
제2부. CodeVisionAVR C 컴파일러 RealSYS 제1장. CodeVisionAVR 설치 및 사용 방법
www.realsys.co.kr
67
AVR Studio 시뮬레이터 사용 방법
ICE200 등과 같은 에뮬레이터가 접속되지 않은 상태에서 AVR Studio를 실행하면, 시뮬레
이터 환경으로 동작한다.
프로그램 하단에 Simulator이라 표시가 되는데, 에뮬레이터가 접속한 상태와 동일한 방법으
로 사용한다.