3. --33--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
1-1 AVR의 개요
◈ AVR [ Alf(Bogen) Vergard(Wollen) Risc ]이란?
☞ ATMEL사에서 제작된 RISC(Reduced Instruction Set Computer) 구조의 저전력 CMOS 8-Bit 마이크로컨트롤러.
1] 1997년에 처음 발표한 8비트 제어용 마이크로프로세서로서, 이는 Alf-Egil Bogen과 Vegard Wollan의 진보된 RISC 기술을
기반되었다고 하여 첫 글자를 따서 AVR이라고 명명.
2] 대부분의 명령은 단일 클럭으로 실행하여 동작 속도를 혁신적으로 개선한 마이컴으로 임베디드 환경에 적합한 저전력 소모의 칩.
3] AVR RISC 구조는 CISC 마이크로컨트롤러보다 10배 이상의 빠른 속도로 프로그램 실행이 이루어지는 보다 편리한 코드 체계를
가지는 MCU.
4] ATMEL사의 장점인 플래시 메모리 기술과 접목시켜 칩 내에 프로그램 코드용으로 플래시 메모리를 내장하고 여기에 사용자
프로그램을 쉽게 다운로드 할 수 있는 ISP(In-System Programming) 방식을 적용함.
5] 위의 장점 때문에 늦게 출시되었음에도 불구하고 많은 기능과 높은 수행속도 인해 8051이나 PIC을 능가하는 인기를 단시간내에
얻게 되었고 앞으로도 많이 사용될 전망임.
6] AVR 시리즈는 지금도 활발하게 개발 중인 제품이기 때문에 어느 모델이 갑자기 단종되기도 하고 새로 출시되는 모델도 있다.
7] 현재는 ATtiny 및 ATmega 패밀리의 2가지 기본 모델 외 LCD 구동, 배터리관리, 조명제어, 모터제어 등과 같은 특수 응용분야의
모델이 점차로 강화되는 추세임.
4. --44--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 AVR의 특징
⊙ RISC 구조를 가지고 있으며 대부분 단일 사이클 명령을 실행할 수 있음
⊙ 연산과 데이터 저장을 한 번에 할 수 있는 하버드 아키텍처(Harvard Architecture)를 가짐
⊙ 32개의 8비트 범용 레지스터를 가지는 레지스터 중심형 구조이며, 단순한 어드레싱 모드와 간결한 프로그램 코드 사이즈를
가지도록 하는 등 C언어 프로그램에 매우 유리하도록 설계됨
⊙ 반복 프로그램이 가능한 1KB에서 256KB까지의 내부 프로그램 메모리를 가짐. 프로그램은 직렬 프로그래밍 인터페이스 방식
(Serial Programming Interface)의 ISP(In-System Programming) 기능을 이용하여 쉽게 1,000번까지 재 프로그래밍 가능
⊙ 모델에 따라 64Byte에서 4KB까지 EEPROM을 내장하고 있어서 데이터 백업이 가능함. 100,000여 번 정도까지 반복 사용 가능
⊙ 모델에 따라 데이터 메모리로서 32바이트에서 8KB까지 비교적 용량이 큰 SRAM을 내장
⊙ 모델에 따라 병렬 I/O포트, 내장 시스템 클럭 발진기, 8비트 타이머/카운터, 16비트 타이머/카운터, 워치독 타이머, UART 또는
USART, SPI, TWI, I2C, 아날로그 비교기, 10비트 ADC, PWM출력, RTC, Brown Out Detector 등 매우 다양한 I/O 기능
⊙ 외부에 버스를 가지는 모델에서는 이 외부 시스템 버스를 이용하여 데이터 메모리 또는 I/O 디바이스를 확장 가능
⊙ 다양한 인터럽트 소스와 처리 기능
⊙ 여러 가지의 파워절약 모드
⊙ 다양한 응용 분야에 적합한 모델을 선택적으로 사용할 수 있도록 기능 및 성능에 따라 ATtiny, AT90, ATmega 등 3가지 패밀리
5. --55--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 AVR의 종류
① tinyAVRtinyAVR ATtinyXXATtinyXX ( 1( 1 -- 4kB )4kB )
▶ 대량으로 생산되는 간단한 응용분야에 사용(가격이 낮고 기능이나 성능도 낮음).
▶ 핀 수가 8핀에서 28핀 정도이며 외형이 작음.
▶ 내부 발진기를 내장하는 모델도 있음.
② classicAVRclassicAVR AT90XXXX ( 1AT90XXXX ( 1 -- 8kB )8kB )
▶ 비교적 큰 512바이트 이하 정도의 EEPROM과 SRAM을 내장.
▶ 핀 수가 20핀에서 40핀 정도.
▶ 특징이나 장점이 뚜렷하지 않아 시장에서 대부분의 모델 단종됨.
③ megaAVRmegaAVR ATmegaXXXATmegaXXX ( 8( 8 -- 256kB )256kB )
▶ 가장 규모가 크고 높은 응용 분야에서 사용(가격이 높고 기능이나 성능도 높음).
▶ 핀 수가 28핀에서 100핀 정도.
▶ 최근 출시되는 모델들은 20MHz 클럭에서 20MIPS의 명령 처리속도를 가짐.
▶ 플래시 메모리의 용량에 따라 모델이 ATmega8, 16, 32, 64, 128, 256 등으로 정착됨.
7. --77--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
2-1 AVR의 개발 과정
☞ AVR 마이컴으로 개발하는 데 필요한 S/W와 H/W의 툴의 개발 환경 구축.
시스템 사양 설정
하드웨어 설계
프로그램 소스 작성
오브젝트, 헥사 파일 생성
시뮬레이션, 에뮬레이션
디바이스에 직접 프로그래밍
실장 테스트
개발 완료
마이컴 사용 결정
시스템 사양에 맞는 부품 선정 및 회로 설계
에디터 사용
어셈블러, C 컴파일러 이용
시뮬레이션, 에뮬레이션 이용하여 디버깅
프로그래머를 이용하여 헥사 파일 라이팅
타겟보드 이용하여 테스트
개발 완료
마이컴 개발 과정
8. --88--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
2-2 AVR의 개발 환경 구축
① SDK(StarterupSDK(Starterup Development Kit)Development Kit)
▶ ATMEL STK500시리즈, Kanda STK200/300.
▶ AVRMALL AVR Board.
▶ 타사 AVR Development Board.
② Assembler & CompilerAssembler & Compiler
▶ AVR STUDIO, IAR Assembler 등.
▶ AVR-GCC의 기반의 AVR-EDIT(국내), WINAVR(외국) 등의 무료 컴파일러.
▶ IAR, CodevisionAVR, Imagecraft(ICC) 등의 상용컴파일러.
▶ BASCOM-AVR, FastAVR의 Basic 컴파일러.
③ ProgrammerProgrammer
▶ Parallel – STK200+/300(Ponyprog2000용으로 많이 사용).
▶ Serial – STK500/AVRISP(AVR STUDIO), AVRprog, ATJTAGICE 외.
▶ USB – AVRISP mk2(AVR STUDIO), USBISP 외.
④ Emulator & SimulatorEmulator & Simulator
▶ Emulator – ATJTAGICE, ATJTAGICE mkII, ATICE10/200/30/40/50 외.
▶ Simulator – AVR STUDIO3, AVR STUDIO4, IAR C-SPY Debugger
13. --1313--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
2-2 AVR의 개발 환경 구축
③ ProgrammerProgrammer
▶ Parallel – STK200+/300(Ponyprog2000용으로 많이 사용)
▶ Serial – STK500/AVRISP(AVR STUDIO), AVRprog, ATJTAGICE 외
▶ USB – AVRISP mk2(AVR STUDIO), USBISP 외
14. --1414--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
This is ISP Flash and EEPROM
Your device sits in the application. It is clocked from
the application clock, and VCC can be as low as 2.7V.
Now, with four logical signals + Ground, you can
REPROGRAM THE FLASH AND THE EEPROM
6-wire
serial programming
interface
GND65/RESET
MOSI43SCK
VCC21MISO
15. --1515--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
2-2 AVR의 개발 환경 구축
④ Emulator & SimulatorEmulator & Simulator
▶ Emulator – ATJTAGICE, ATJTAGICE mkII, ATICE10/200/30/40/50 외
▶ Simulator – AVR STUDIO3, AVR STUDIO4, IAR C-SPY Debugger
20. --2020--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-4 ATMEGA128의 특징 1
⊙ 고성능이면서 저소비전력형의 8비트 마이컴
⊙ RISC구조로 16MHz에서 16MIPS의 명령처리 속도
⊙ 133종의 명령 세트(대부분 1클럭 사이클에 실행)
⊙ 32개의 8비트 범용 레지스터
⊙ 128KB의 프로그램용 사용자 플래시 메모리
⊙ 4KB의 데이터 저장용 EEPROM
⊙ 4KB의 SRAM
⊙ 64KB의 외부 메모리 인터페이스
⊙ 디버그 기능을 수행하기 위하여 JTAG 인터페이스
⊙ 다양한 클럭 지원(내부RC, 외부 클럭, 외부RC 클럭, 외부 OSC 클럭)
21. --2121--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-4 ATMEGA128의 특징 2
⊙ 총 53개의 I/O포트(PORTA~PORTG)
⊙ 2개의 8비트 타이머/카운터(0,2), 2개의 16비트 타이머/카운터(1,3)
⊙ 2개의 8비트 PWM 출력, 6개의 2~16비트 PWM 출력
⊙ 8채널 10비트 A/D컨버터
⊙ 2개의 전이중 통신이 가능한 USART 직렬통신 포트
⊙ SPI 및 TWI(I2C) 직렬통신 포트
⊙ 아날로크 비교기
⊙ 리셋 벡터와 8개의 외부 인터럽트를 포함하여 총 35개의 인터럽트 벡터
⊙ 슬립 모드로서 6개의 파워 절약 모드
⊙ ATMEGA103 호환 모드
⊙ 64핀 TQFP 또는 64핀 MLF 패키지
⊙ 동작전원 및 시스템 클럭
ATMEGA128L(2.7~5.5V, 0~8MHz)
ATMEGA128(4.5~5.5V, 0~16MHz)
22. --2222--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-5 ATMEGA128의 메모리 구조 1
① 프로그램프로그램 메모리메모리(In(In--System Reprogrammable Flash Program Memory)System Reprogrammable Flash Program Memory)
▶ 내부 128KB의 플래시 메모리(64K*16의 용량).
▶ Boot Flash Section과 Application Flash Section.
▶ 플래시 메모리에 프로그램을 기입하는 방법에는 SPI방식, JTAG을 사용한 방법, 병렬 프로그래밍 방법.
23. --2323--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-5 ATMEGA128의 메모리 구조 2
② 데이터데이터 메모리메모리(Data Memory)(Data Memory)
▶ I/O 레지스터
ATMEGA128에 내장된 각종 I/O 디바이스들을 제어하기 위한 레지스터 (총 64개, 0x0020~0x005F)
▶ 확장 I/O 레지스터
기존의 AVR 도델들에 비하여 ATMEGA128에 새로 추가된 각종
I/O 디바이스들을 제어하기 위한 레지스터
(총 160개, 0x0060~0x00FF)
▶ 내부 SRAM
0x0100~0x10FF번지의 4KB 내부 데이터 메모리
(2클럭 사이클의 엑세스 타임)
▶ 외부 데이터 메모리
0x1100~0xFFFF 번지의 약 60KB의 외부 데이터 메모리
(사용자가 필요에 의하여 사용하거나 I/O확장 영역으로 사용)
▶ 4KB의 비휘발성 데이터 메모리인 EEPROM
25. --2525--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-7 ATMEGA128의 클럭 1
☞ ATMEGA128에서 사용할 수 있는 클럭 소스는 모두 5가지가 있는데, CKSEL3~0로 설정
① External Crystal/Ceramic Resonator
외부에 크리스탈 또는 세라믹 레조네이터를 사용하는 경우 XTAL1 입력단자 및 XTAL2 출력단자에 접속(1111~1010)
**CKOPT – ‘0’이면 발진회로의 출력전압이 커짐, 노이즈가 심한 환경이나 XTAL2단자가 또다른 회로를 구동할 때
‘1’이면 발진회로의 출력전압이 작아짐, 소비전력이 감소
**SUT1~0 : 기동시간(Start-Up Time)을 설정
0000External Clock
0100~0001Calibrated Internal RC Oscillator
1000~0101External RC Oscillator
1001External Low-frequency Crystal
1111~1010External Crystal/Ceramic Resonator
CKSEL3~0클럭 소스
26. --2626--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-7 ATMEGA128의 클럭 2
② External Low-frequency Crystal (1001)
외부에 32.768kHz의 낮은 주파수 크리스탈을 사용하는 경우
③ External RC Oscillator(1000~0101)
정밀한 타이밍이 요구되지 않는 용도로 외부에 RC 소자를 접속한 발진회로를 사용
f = 1/(3RC) 단, C는 22pF 이상
0.1 - 0.90101
0.9 - 3.00110
3.0 - 8.00111
8.0 - 12.01000
Frequency Range (MHz)CKSEL3~0
27. --2727--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-7 ATMEGA128의 클럭 3
④ Calibrated Internal RC Oscillator(0100~0001)
공장 출하시 내부클럭 1MHz로 설정되어 있음
** OSCCAL 레지스터를 사용하여 클럭 주파수를 정확하게 조정함
⑤ External Clock(0000)
외부 다른 보드(8051보드,PIC보드)등의 클럭을 가져와 XTAL1단자에 연결
단, 이때는 두 보드간 GND단자는 연결하며 XTAL2는 사용하지 않음
1.00001
2.00010
4.00011
8.00100
Frequency Range (MHz)CKSEL3~0
28. --2828--20062006--0303--2727
Embedded AVR ProgrammingEmbedded AVR Programming
3-8 ATMEGA128의 시스템 리셋
☞ ATMEGA128의 리셋 소스는 5가지가 있음
① Power-on Reset
전원전압 VCC가 Power-on Reset Threshold(VPOT) 이하일 때 MCU가 리셋
② External Reset
/RESET 핀에 지정된 최소폭(1.5 us) 이상의 L레벨 펄스가 입력되어 MCU가 리셋
③ Watchdog Reset
워치독 타이머에서 지정된 주기 이상이 경과되어 워치독 기능이 동작함으로써 MCU가 리셋
④ Brown-out Reset
전원전압 VCC가 지정된 시간(2 us) 이상동안 Brown-out Reset Threshold(VBOT) 이하로 떨어져
Brown-out Detector가 동작함으로써 MCU가 리셋
⑤ JTAG AVR Reset
JTAG 시스템에서 리셋 레지스터에 논리값 1을 저장시키고 이에 관련된 하드웨어가 동작함으로써 MCU가 리셋