Dr. Kim ATmega8 Training Kit (SAT8-10) 이란? 현제 Atmega8 마이크로컨트롤러는산업현장에서 MP3 플레이어, DMB 수신기, 로봇등첨단제품에매우많이사용되고있으며, 각종기사시험의실기시험이나졸업작품등에서매우중요한위치를차지하고있다. 하지만학습용키트나모듈등이너무비싸서개인적으로구입하여사용하기가매우힘들었다. 그래서 Dr. Kim Training Kit 는고가의키트부터중가키트, 저가의키트 & 응용모듈, CPU 모듈, 응용로봇제품다양하게개발하여관심및수준에따라서선택적으로공부할수있도록하였으며, 본키트는(SAT8-100) ATmega8 마이크로컨트롤러를학습하는키트중저가의키트로개인및학교, 회사까지사용하기에무리가없는제품이다. Dr. Kim ATmega8 Training Kit (SAT8-100) 은 USB 포트를통하여전원을인가받기때문에다른 전원을연결할필요가없어편리성을제공한다. 4개의 LED와 4개의 Switch로마이크로컨트롤러를배 우기 위한 가장 기본적인 I/O Port의 input, output 을 학습 할 수 있으며, 디스플레이 부로는 7Segment 를학습하고, 사운드부로는 Buzzer을학습하여 ATmega8의기초적인내용부터응용까지 마스터할수있다. 1
Block Diagram 2
Training Kit 부분별설명 1 USB Power 커넥터 2 Power 커넥터 (DC 5V) 3 ISP 커넥터 4 I/O Port 테스트 LED (4 EA) 5 I/O Port 테스트스위치 (4 EA) 6 7Segment 7 Buzzer 8 AD Converter 가변저항 9 전원 LED 10 리셋스위치 3
AVR 이란? AVR은 Atmel 사가개발한 RISC 마이크로컨트롤러들을말하는것으로서기능에따라서크게 ATtiny family, AT90S family, ATmega family 로분류된다. 이들 AVR 마이크로컨트롤러계열은같은구조의 CPU 를사용하고있어서기본구조및명령어가동일하며사용법또한매우유사하다. 단지 CPU의속 도나내부메모리의크기, 여러가지특수기능등의내장여부에따라분류된다. 여기에서는이들 AVR 마이크로컨트롤러중에서단일칩을사용하는 ATmega8 마이크로컨트롤러를중심으로설명한 다. ATmega8은 ATMEL사가개발한 8비트마이크로컨트롤러로서 RISC(Reduced Instruction Set Computer) 구조를가지며대부분의명령어를 Single cycle 에서수행하고, I/O구조는외부에추가되는소자를최소화할수있도록설계된 AVR 마이크로컨트롤러계열칩이다. 칩내부에는발진회로, 타이머, UART (Universal Asynchronous Receiver and Transmitter) 와 SPI(Serial Peripherial Interface) 및풀업저항과 PWM(Pulse Width Modulation), ADC(Analog to Digital Converter), Analog 비교기, Watch-dog 타이머가내장되어있다. ATmega8은프로그램영역과데이터영역의 Address bus 및 Data bus가분리된 Harvard Architecture 구조를채택하고있다. 그래서프로그램영역에있는명령어는파이프라인을통하여실행되는구조를가지고있어서하나의명령어가수행되는동안다음실행될명령어가미리읽혀실행대기상태로있게된다. 따라서순차적인명령처리보다빠르게명령어가처리된다. ATmega8의명령어는 C 언어와어셈블러에최적화되도록설계되어있으며, 특히 ATmega8은칩의개발단계에서부터 C 언어를사용한개발에적합하도록기획/ 설계/ 제작하여기타마이크로컨트롤러에비하여C 언어에최적화된마이크로컨트롤러라할수있다. ATmega8은내부에 ISP(In-System Programmable) Flash 메모리와 EEPROM 및 SRAM을가지고있어서편리한개발환경을제공한다. 그래서실행할코드와동작중필요한데이터를저장할 SRAM 및 EEPROM을칩안에내장하고있어서시스템을구성할때 Flash 메모리나 SRAM, EEPROM 등을추가하지않아도되므로다른마이크로컨트롤러에비하여경제적이고회로를간단하게설계할수있다. 4
AVR 마이크로컨트롤러의종류 AVR에속하는마이크로컨트롤러계열은거의같은구조의 CPU를사용하고있으므로기본구조가동일하고기본명령어또한같지만, 메모리의크기라든가특수기능의내장여부에따라 ATtiny family, AT90S family, ATmega family 로분류된다. 1. ATiny family ATiny family는모든모델명이 ATiny로시작하는 4 비트범용마이크로컨트롤러이다. 내부에 1KB에서 2KB 정도의플래시메모리를가지고있으며, 간단한응용분야에사용하는것을목표로개발되어기능이나성능이비교적낮지만가격이저렴한장점을가지고있다. 여기에해당되는모델들은 8핀에서28 핀정도의작은외형으로대부분외부시스템버스가없고, 외부클럭입력단자가없는대신시스템클럭을발생하는전체발진회로를내장하는경우가대부분이다. 2. AT90S family ATtiny와 ATmega의중간정도사양을가진 8비트마이크로컨트롤러로서모든모델명이 AT90S로시작한다. 내부에 1KB에서 8KB 정도의플래시메모리를가지고있으며, 512Byte 이하의 EEPROM과 SRAM 을내장하고있다. 여기에해당되는모델들은 20핀에서 40 핀정도이며, ATtiny와 ATmega의패밀리에비하여뚜렷한특징이나장점이없어서시장에서사장되는추세이다. 3. ATmega family ATmega 계열은그야말로메가급 8 비트범용마이크로컨트롤러이며, 모든모델명이 ATmega로시작한다. 내부에 8KB에서 256KB 정도의플래시메모리를가지고있으며, 가장규모가크고성능이높은응용분야에사용하는것을목표로개발되어가격이높지만마이크로컨트롤러에필요한거의모든특수기능을내장하고있다. 여기에해당되는마이크로컨트롤들은 28핀에서 100 핀정도이고, 16MHz에서 평균적으로 16MIPS 의명령처리속도를갖는다. 5
ATmega8의특징 ATmega8은 Atmel사가개발한저전력 8비트 CMOS 마이크로컨트롤러로서유사 RISC 아키텍처 (RISC like Architecture) 구조로되어있어서, 대부분 1 Machine cycle에서수행되는명령어를가지고있으며, 공급되는클럭 1MHz당 1MIPS (Million Instruction per Second) 의처리능력을가지고있다. 그러나처리속도에비하여최적화된전력소모구조를가지고있어서다른마이크로컨트롤러에비하여상대적으로적은소모전력으로보다향상된처리를가능하게한다. ATmega8은다음과같은특징을가진다. 향상된 RISC 구조 - 130 개의강력한명령어 : 대부분 1 사이클에동작하는명령어 -32개의 8-bit 범용레지스터및주변장치제어레지스터 - 완전정적인동작지원 - 16MHz의공급클럭에서최대16MIPS의성능 -2사이클에동작하는하드웨어곱셈기내장 비휘발성프로그램메모리와데이터메모리 - 8K Bytes의In-System Programmable Flash 메모리 프로그램의실행코드저장영역 최소 10,000 번이상의쓰기/ 삭제수명보장 - 512 Bytes의 EEPROM 비휘발성데이터저장영역 최소 100,000 번이상의쓰기/ 삭제수명보장 -1KBytes의내부SRAM - 소프트웨어보안성을위한프로그램잠금기능 - ISP(In-System Programming) 를위한 SPI 인터페이스제공 ATmega8에내장된주변장치 - 분주기와비교기모드가분리된 2개의 8-bit 타이머/ 카운터 ( 비교기 1 개) - 분주기와비교기모드및캡쳐모드가분리된한개의 16-bit 타이머/ 카운터 - 발진회로와분리된실시간계수기(Real Time Counter) -3개의 8-bitPWM채널 -10-bitADC(AnalogtoDigitalConverter) TQFP, QFN/MLF 패키지 : 8 채널 PDIP 패키지 : 6 채널 -Byte정렬된 Two-wire직렬인터페이스 - 한개의프로그램가능한USART(Universal Synchronous/Asynchronous Receiver and Transmitter) - Master/Slave SPI 시리얼인터페이스 - 내장된발진회로와프로그램가능한 Watch-doc 타이머 - 내장된 Analog 비교기 6
특별한마이크로컨트롤러기능 - Power-On Reset 기능과프로그램가능한 Brown-out - 조율된내부RC 발진회로 - 외부및내부인터럽트소스 -5가지의슬립모드 - 소프트웨어로선택가능한클럭주파수 -전체적인 pull-up 해제기능 검출기능 인터럽트 - 외부및내부인터럽트 -19개의인터럽트소스 - 단순화한인터럽트벡터및우선순위 Sleep 모드 - idle, ADC 잡음제어, 전력절약, power-down, 대기등의 5개의 sleep 모드 I/O와 Package -23 개의프로그램가능한입/ 출력선 - 23핀의 PDIP, 32핀의 TQFP 또는 32개의 Pad를갖는 QFN/MLF 패키지 동작전압 - ATmega8L은 2.7V~5.5V의공급전원에서동작가능 - ATmega8은 4.5V~5.5V의공급전원에서동작가능 전력소비 - 정상동작 : 3.6mA - idle 모드 : 1.0mA - power down 모드 : 0.5uA 동작속도 -ATmega8L은 0~8MHz의공급클럭에서동작가능 - ATmega8은 0~16MHz의공급클럭에서동작가능 7
핀이름핀번호역할 VCC 7 공급전압 GND 8,22 접지 AVCC 20 ACD 및 Port C에대한공급전압 AREF 21 ADC 참조전압 /RESET 1 리셋 ATmega8 Port 의기능(PDIP 패키지) XTAL1/TOSC1 9 반전발진증폭기및내부클록회로입력 XTAL2/TOSC2 10 반전발진증폭기로부터의출력 포트 B(PB7~PB0) XTAL1,2/TOSC1,2 포트 C(PC5~PC0) PC6/RESET 포트 D(PD7~PD0) 9,10, 14~19 1, 23~28 2~6, 11~13 내부풀업저항이있는 8비트양방향성 I/O 포트, 별도의기능을가짐 내부풀업저항이있는 7비트양방향성 I/O 포트, ADC에 대한아날로그입력 내부풀업저항이있는 8비트양방향성 I/O 포트, 별도의 기능을가짐 8
실험. LED Port B(3~0) 에연결되어있는 4개의 LED 를하나씩점등한다. 9
* 프로그램설명 ATmega8 마이크로컨트롤러를사용하기위해선 Port 의입력과출력을결정한뒤사용하여야한다. Port B의하위 4비트에연결되어있는 LED 를켜기위해서아래와같이출력으로설정한다. DDRB = 0x0F; 출력을하기위해선, PORTB = 원하는값, 입력을받기위해선, 변수 = PINB 라고설정한다. delay() 함수는일정한시간을지연하는함수로실제지연되는시간을계산하기위해선 xxx.lst 파일을보면서계산을하면된다. led의초기값을왼쪽으로 1 비트자리이동하면아래와같다. ( 0 일때 LED 가켜진다) Carry <- 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0bit 0 <- 1 1 1 1 1 1 0 0 이값을 0xf1과 OR을하게되면다음과같이되어 PB0에연결된 LED가켜진다음 PB1에연결된 LED 가켜지게된다. Carry <- 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0bit 0 <- 1 1 1 1 1 1 0 1 사용하지않지만출력을내보내는 PORTB의상의 4 비트는항상 1 로마스크시켜야한다. 10
AvrEdit 다운로드 http://www.avrfreaks.net에선 AvrEdit, AVR GCC, WinAVR등 AVR에관련된소프트웨어를다운을받을수있으며, http://www.terabank.co.kr에선 AvrEdit3.5, 3.6의영문판과한글판을다운로드받을수있다. 다음화면은 http://www.avrfreaks.net 의메인화면이다. 메뉴에서 TOOLS" 를선택한다. 11
다음화면에서와같이 Find Tool 박스에 avr-gcc" 를쓴다음에 Find 박스를선택한다. 다음화면은 avr-gcc 컴파일러및 AvrEdit 등이링크되어있는화면이다. 화면에서와같이 AvrEdit 를선택한다. 12
다음화면에서와같이 AvrEdit3.5English.zip" 을선택한다. 다음화면과같이 Download 를선택하면, AvrEdit 를다운로드받을수있다. 13
다음화면은 http://www.terabank.co.kr의메인화면으로한글버전의 AvrEdit를다운받을수있는곳이다. 메뉴에서 다운로드 를선택한다. 다음화면처럼 AvrEdit3.6 - 한글버전 을선택하면 AvrEdit3.6 를다운로드받을수있다. 14
download... 를선택하여 AvrEdit 를다운로드받는다. AvrEdit 설정 다운로드받은 AvrEdit3.6Korean.zip를적당한곳에압축을풀고 DISK1 폴더안에들어있는 SETUP.EXE를실행하면 AvrEdit 가설치된다. 설치가다되면 AvrEdit 를실행시킨다. 제공된CD안의 source 폴더를PC에카피한후LED.c 파일을오픈한다. 15
설정 ->> 환경설정클릭 다음화면과같이 MCU 종류를 atmega128", Hex format 종류를 ihex 로설정한다. 16
컴파일러 ->> 자동생성 makefile" 과 HEX 파일만들기 를체크한다. 환경설정이끝난후컴파일을하고(F9) LED.hex 파일이만들어졌는지를확인한다. 17
Avr ISP Programmer 다운로드 AVR용 ISP Write 프로그램은 PonyProg2000을사용하며이프로그램은아래와같은방법으로다운로드받을수있다. 다음화면은 http://www.lancos.com 의메인화면이다. PonyProg 를선택한다. 위의화면에서 PonyProg 을클릭하면아래와같은화면이나타나며이페이지를아래로스크롤하고 Download PonyProg for Win 에서스크롤을멈추고선택한다. 18
PonyProg2000 페이지가나타난다. 아래로스크롤을한다. 19
다음화면처럼표시한부분을선택하여 PonyProg2000을다운로드받는다 Avr ISP Programmer 설정 다운로드받은 ponyprogv205a.zip를적당한곳에압축을풀고 setup.exe를실행하면 PonyProg2000 이설치된다. 설치가다되면 PonyProg2000 를실행시킨다. MCU 종류를 AVR micro, 프로세서종류를 ATmega8 로지정한다. 20
Setup 메뉴의 interface Setup 항목선택 화면과같이지정을하고 Probe" 를눌렀을때 [Test Ok] 라는다이얼로그박스를확인한다. 테스트가실패할경우 Adaptor 및 Parallel Cable의연결상태를확인하고 ISP, USB 선택 Switch가 ISP 쪽으로선택되어있는지를다시한번확인한다. *Bus Timing 설정하기 "Setup" "Calibration 을선택 Yes 선택후 Calibration OK" 라는다이얼로그박스를확인하다. 21
* 클록설정하기 Command" "Security and Configuration" 선택한다. 화면과같이 CKOPT" 만을체크한상태에서"Write" 를누른다. 22
* Training Kit 프로그램하기 메뉴의 Command" "Program Options.." 를선택한다. 화면과같이체크한후 OK" 버튼을누른다. File Open [LED.hex] 을하면프로그램코드가화면에표시되고, Command" "Program" 을선택하다. 디바이스가정상적으로삭제되고프로그램이기록된후검증까지이상없이완료되면 Program successful" 이라는다이얼로그박스가나타난다. 23
AVR Studio 다운로드 atmel사에서무료로제공하는 IDE 소프트웨어인 AVR Studio V4.12를사용하는방법에대해설명한 다. 다음화면은 Atmel 홈페이지의 메인화면이다.(http://www.atmel.com/) "PRODUCTS" 를선택한 다. Microcontrollers and DSP -> AVR 8-Bit RISC 를선택한다. 24
Tools & Software 를선택한다. AVR Studio 4 를선택한다. 화면처럼 AVR Studio4 V4.12의아이콘을누르면 astudio4b460.exe를다운로드받을수있는박스 가생성되며, 원하는곳에다운받은후 AVR Studio4 V4.12 를설치한다. 25
AVR Studio 설정 설치가끝난후 AVR Studio 4 를실행하면다음과같은화면이나타난다. NEW Project" 다이얼로그박스를누른후새로운프로젝트를만든다. 26
다음화면처럼 "Atmel AVR Assembler" 를선택하고, Project name 를정하고, 저장할디랙토리를설정한후 Next 를눌러다음단계로넘어간다. AVR Simulator 와 ATmeg8를선택후 Finish 누르면모든선택사항이완료된다. 27
Project -> Assembler Options 를선택한다. 다음화면처럼체크박스를체크한후 OK 를누른다. 28
제공된어셈블러소스를복사한후메뉴바의 Build -> Build 선택하면어셈블동작을수행한다. 29