임베디드마이크로프로세서 프로그래밍실전 제작 : 네로테크 강의 : 김종형
AVR 개요및개발환경구축 1. AVR 개요및특징 2. AVR 개발환경구축 -2-
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 구동, 배터리관리, 조명제어, 모터제어등과같은특수응용분야의모델이점차로강화되는추세임. -3-
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 가지패밀리 -4-
1-3 AVR 의종류 1 tinyavr ATtinyXX ( 1-4kB ) 대량으로생산되는간단한응용분야에사용 ( 가격이낮고기능이나성능도낮음 ). 핀수가8핀에서 28핀정도이며외형이작음. 내부발진기를내장하는모델도있음. 2 classicavr AT90XXXX ( 1-8kB ) 비교적큰 512바이트이하정도의 EEPROM과 SRAM을내장. 핀수가 20핀에서 40핀정도. 특징이나장점이뚜렷하지않아시장에서대부분의모델단종됨. 3 megaavr ATmegaXXX ( 8-256kB ) 가장규모가크고높은응용분야에서사용 ( 가격이높고기능이나성능도높음 ). 핀수가 28핀에서 100핀정도. 최근출시되는모델들은 20MHz 클럭에서 20MIPS의명령처리속도를가짐. 플래시메모리의용량에따라모델이 ATmega8, 16, 32, 64, 128, 256 등으로정착됨. -5-
AVR PRODUCT ROADMAP FLASH DENSITY classicavr FAMILY 1KB TO 8KB megaavr FAMILY 8KB TO 256KB tinyavr FAMILY 1KB TO 4KB DEVICE COMPLEXITY -6-
2-1 AVR 의개발과정 AVR 마이컴으로개발하는데필요한 S/W 와 H/W 의툴의개발환경구축. 시스템사양설정 마이컴사용결정 하드웨어설계 시스템사양에맞는부품선정및회로설계 프로그램소스작성 에디터사용 오브젝트, 헥사파일생성 어셈블러, C 컴파일러이용 시뮬레이션, 에뮬레이션 시뮬레이션, 에뮬레이션이용하여디버깅 디바이스에직접프로그래밍 프로그래머를이용하여헥사파일라이팅 실장테스트 타겟보드이용하여테스트 개발완료 개발완료 마이컴개발과정 -7-
2-2 AVR 의개발환경구축 1 SDK(Starterup Development Kit) ATMEL STK500시리즈, Kanda STK200/300. AVRMALL AVR Board. 타사 AVR Development Board. 2 Assembler & Compiler AVR STUDIO, IAR Assembler 등. AVR-GCC의기반의 AVR-EDIT( 국내 ), WINAVR( 외국 ) 등의무료컴파일러. IAR, CodevisionAVR, Imagecraft(ICC) 등의상용컴파일러. BASCOM-AVR, FastAVR의 Basic 컴파일러. 3 Programmer Parallel STK200+/300(Ponyprog2000용으로많이사용 ). Serial STK500/AVRISP(AVR STUDIO), AVRprog, ATJTAGICE 외. USB AVRISP mk2(avr STUDIO), USBISP 외. 4 Emulator & Simulator Emulator ATJTAGICE, ATJTAGICE mkii, ATICE10/200/30/40/50 외. Simulator AVR STUDIO3, AVR STUDIO4, IAR C-SPY Debugger -8-
2-2 AVR 의개발환경구축 1 SDK(Starterup Development Kit) ATMEL STK500 시리즈, Kanda STK200/300 AVRMALL AVR Board -9-
2-2 AVR 의개발환경구축 2 Assembler & Compiler AVR STUDIO, IAR Assembler 등 -10-
2-2 AVR 의개발환경구축 2 Assembler & Compiler AVR-GCC 의기반의 AVR-EDIT( 국내 ), WINAVR( 외국 ) 등의무료컴파일러 -11-
2-2 AVR 의개발환경구축 2 Assembler & Compiler IAR, CodevisionAVR, Imagecraft(ICC) 등의상용컴파일러 -12-
2-2 AVR 의개발환경구축 3 Programmer Parallel STK200+/300(Ponyprog2000 용으로많이사용 ) Serial STK500/AVRISP(AVR STUDIO), AVRprog, ATJTAGICE 외 USB AVRISP mk2(avr STUDIO), USBISP 외 -13-
This is ISP Flash and EEPROM 6-wire serial programming interface MISO 1 2 VCC SCK 3 4 MOSI /RESET 5 6 GND 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 -14-
2-2 AVR 의개발환경구축 4 Emulator & Simulator Emulator ATJTAGICE, ATJTAGICE mkii, ATICE10/200/30/40/50 외 Simulator AVR STUDIO3, AVR STUDIO4, IAR C-SPY Debugger -15-
ATMEGA128 구조와기능 1. 내부구조 2. 코어 3. 외부구조및기능 4. 특징 5. 메모리구조 6. 퓨즈비트 7. 클럭 -16-
3-1 ATMEGA128 의내부구조 -17-
3-2 ATMEGA128 의코어 -18-
3-3 ATMEGA128 의외부구조및기능 -19-
3-4 ATMEGA128 의특징 1 고성능이면서저소비전력형의 8 비트마이컴 RISC 구조로 16MHz 에서 16MIPS 의명령처리속도 133 종의명령세트 ( 대부분 1 클럭사이클에실행 ) 32 개의 8 비트범용레지스터 128KB 의프로그램용사용자플래시메모리 4KB 의데이터저장용 EEPROM 4KB 의 SRAM 64KB 의외부메모리인터페이스 디버그기능을수행하기위하여 JTAG 인터페이스 다양한클럭지원 ( 내부 RC, 외부클럭, 외부 RC 클럭, 외부 OSC 클럭 ) -20-
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) -21-
3-5 ATMEGA128 의메모리구조 1 1 프로그램메모리 (In-System Reprogrammable Flash Program Memory) 내부 128KB의플래시메모리 (64K*16의용량 ). Boot Flash Section과 Application Flash Section. 플래시메모리에프로그램을기입하는방법에는 SPI 방식, JTAG 을사용한방법, 병렬프로그래밍방법. -22-
3-5 ATMEGA128 의메모리구조 2 2 데이터메모리 (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 -23-
3-6 ATMEGA128 의퓨즈비트 MCU 의기본적인시스템설정용으로사용되며모두 3 바이트로구성 Extended Fuse Byte Fuse High Byte Fuse Low Byte -24-
3-7 ATMEGA128 의클럭 1 ATMEGA128 에서사용할수있는클럭소스는모두 5 가지가있는데, CKSEL3~0 로설정 클럭소스 External Crystal/Ceramic Resonator External Low-frequency Crystal External RC Oscillator Calibrated Internal RC Oscillator External Clock CKSEL3~0 1111~1010 1001 1000~0101 0100~0001 0000 1 External Crystal/Ceramic Resonator 외부에크리스탈또는세라믹레조네이터를사용하는경우 XTAL1 입력단자및 XTAL2 출력단자에접속 (1111~1010) **CKOPT 0 이면발진회로의출력전압이커짐, 노이즈가심한환경이나 XTAL2 단자가또다른회로를구동할때 1 이면발진회로의출력전압이작아짐, 소비전력이감소 **SUT1~0 : 기동시간 (Start-Up Time) 을설정 -25-
3-7 ATMEGA128 의클럭 2 2 External Low-frequency Crystal (1001) 외부에 32.768kHz 의낮은주파수크리스탈을사용하는경우 3 External RC Oscillator(1000~0101) 정밀한타이밍이요구되지않는용도로외부에 RC 소자를접속한발진회로를사용 f = 1/(3RC) 단, C 는 22pF 이상 CKSEL3~0 1000 0111 0110 0101 Frequency Range (MHz) 8.0-12.0 3.0-8.0 0.9-3.0 0.1-0.9-26-
3-7 ATMEGA128 의클럭 3 4 Calibrated Internal RC Oscillator(0100~0001) 공장출하시내부클럭 1MHz 로설정되어있음 CKSEL3~0 0100 0011 0010 0001 Frequency Range (MHz) 8.0 4.0 2.0 1.0 ** OSCCAL 레지스터를사용하여클럭주파수를정확하게조정함 5 External Clock(0000) 외부다른보드 (8051 보드,PIC 보드 ) 등의클럭을가져와 XTAL1 단자에연결단, 이때는두보드간 GND 단자는연결하며 XTAL2 는사용하지않음 -27-
3-8 ATMEGA128 의시스템리셋 ATMEGA128 의리셋소스는 5 가지가있음 1 Power-on Reset 전원전압 VCC 가 Power-on Reset Threshold(V POT ) 이하일때 MCU 가리셋 2 External Reset /RESET 핀에지정된최소폭 (1.5 us) 이상의 L 레벨펄스가입력되어 MCU 가리셋 3 Watchdog Reset 워치독타이머에서지정된주기이상이경과되어워치독기능이동작함으로써 MCU 가리셋 4 Brown-out Reset 전원전압 VCC 가지정된시간 (2 us) 이상동안 Brown-out Reset Threshold(V BOT ) 이하로떨어져 Brown-out Detector 가동작함으로써 MCU 가리셋 5JTAG AVR Reset JTAG 시스템에서리셋레지스터에논리값 1 을저장시키고이에관련된하드웨어가동작함으로써 MCU 가리셋 -28-