avr lecture1

28
임베디드 임베디드 마이크로프로세서 마이크로프로세서 프로그래밍 프로그래밍 실전 실전 제작 제작 : : 강의 강의 : :

Upload: -

Post on 12-Jun-2015

685 views

Category:

Documents


5 download

TRANSCRIPT

임베디드임베디드 마이크로프로세서마이크로프로세서프로그래밍프로그래밍 실전실전

제작제작 : : 네네 로로 테테 크크

강의강의 : : 김김 종종 형형

--22--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

AVR AVR 개요개요 및및 개발개발 환경환경 구축구축

1. AVR 개요 및 특징2. AVR 개발 환경 구축

--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 구동, 배터리관리, 조명제어, 모터제어등과같은특수응용분야의모델이점차로강화되는추세임.

--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가지 패밀리

--55--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

1-3 AVR의 종류

① tinyAVRtinyAVR ATtinyXXATtinyXX ( 1 ( 1 -- 4kB )4kB )▶ 대량으로생산되는간단한응용분야에사용(가격이낮고기능이나성능도낮음).

▶ 핀수가 8핀에서 28핀정도이며외형이작음.

▶ 내부 발진기를 내장하는 모델도 있음.

② classicAVRclassicAVR AT90XXXX ( 1 AT90XXXX ( 1 -- 8kB )8kB )▶ 비교적 큰 512바이트 이하 정도의 EEPROM과 SRAM을 내장.

▶ 핀 수가 20핀에서 40핀 정도.

▶ 특징이나 장점이 뚜렷하지 않아 시장에서 대부분의 모델 단종됨.

③ megaAVRmegaAVR ATmegaXXXATmegaXXX ( 8 ( 8 -- 256kB )256kB )▶ 가장 규모가 크고 높은 응용 분야에서 사용(가격이 높고 기능이나 성능도 높음).

▶ 핀 수가 28핀에서 100핀 정도.

▶ 최근 출시되는 모델들은 20MHz 클럭에서 20MIPS의 명령 처리속도를 가짐.

▶ 플래시 메모리의 용량에 따라 모델이 ATmega8, 16, 32, 64, 128, 256 등으로 정착됨.

--66--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

AVR PRODUCT ROADMAP

DEVICE COMPLEXITY

FLA

SH D

ENSI

TY megaAVR FAMILY

8KB TO 256KB

classicAVR FAMILY

1KB TO 8KB

tinyAVR FAMILY

1KB TO 4KB

--77--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

2-1 AVR의 개발 과정

☞ AVR 마이컴으로 개발하는 데 필요한 S/W와 H/W의 툴의 개발 환경 구축.

시스템 사양 설정

하드웨어 설계

프로그램 소스 작성

오브젝트, 헥사 파일 생성

시뮬레이션, 에뮬레이션

디바이스에 직접 프로그래밍

실장 테스트

개발 완료

마이컴 사용 결정

시스템 사양에 맞는 부품 선정 및 회로 설계

에디터 사용

어셈블러, C 컴파일러 이용

시뮬레이션, 에뮬레이션 이용하여 디버깅

프로그래머를 이용하여 헥사 파일 라이팅

타겟보드 이용하여 테스트

개발 완료

마이컴개발과정

--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

--99--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

--1010--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

2-2 AVR의 개발 환경 구축

② Assembler & CompilerAssembler & Compiler▶ AVR STUDIO, IAR Assembler 등

--1111--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

2-2 AVR의 개발 환경 구축

② Assembler & CompilerAssembler & Compiler▶ AVR-GCC의 기반의 AVR-EDIT(국내), WINAVR(외국) 등의 무료 컴파일러

--1212--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

2-2 AVR의 개발 환경 구축

② Assembler & CompilerAssembler & Compiler▶ IAR, CodevisionAVR, Imagecraft(ICC) 등의 상용컴파일러

--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 외

--1414--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

This is ISP Flash and EEPROM

Your device sits in the application. It is clocked fromthe application clock, and VCC can be as low as 2.7V.

Now, with four logical signals + Ground, you canREPROGRAM THE FLASH AND THE EEPROM

6-wireserial programminginterface

GND65/RESET

MOSI43SCK

VCC21MISO

--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

--1616--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

ATMEGA128 ATMEGA128 구조와구조와 기능기능

1. 내부 구조2. 코어3. 외부 구조 및 기능4. 특징5. 메모리구조6. 퓨즈비트7. 클럭

--1717--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

3-1 ATMEGA128의 내부 구조

--1818--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

3-2 ATMEGA128의 코어

--1919--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

3-3 ATMEGA128의 외부 구조 및 기능

--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 클럭)

--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)

--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을 사용한 방법, 병렬 프로그래밍 방법.

--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

--2424--20062006--0303--2727

Embedded AVR ProgrammingEmbedded AVR Programming

3-6 ATMEGA128의 퓨즈 비트

☞ MCU의 기본적인 시스템 설정용으로 사용되며 모두 3바이트로 구성

⊙ Extended Fuse Byte

⊙ Fuse High Byte ⊙ Fuse Low Byte

--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클럭 소스

--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

--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

--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 ResetJTAG 시스템에서 리셋 레지스터에 논리값 1을 저장시키고 이에 관련된 하드웨어가 동작함으로써 MCU가 리셋