AVR ATmega128 소개 AVR ATmega128 학습목표 ü 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ü 에서메모리공간, I/O 공간의프로그램과데이터를처리하기위한특수레지스터, 범용레지스터의역할을이해할수있다. ü ATmega128 내부에포함된명령어인출과실행절차를알아보고, 명령어유형을통해동작을이해할수있다. ü ATmega128 이장치를쉽게제어할수있도록하기위해내장한메모리와주변장치의특징을개략적으로이해할수있다. 2/38 1
목차 1. AVR 개요 2. ATmega128 특징 3. 4. ATmega128 명령어실행 5. 6. ISP(In System Programming) 3/38 1. AVR 개요 o AVR 패밀리 4/38 2
AVR 개요 o 8 비트 megaavr 패밀리소자 ( 요약 ) o 8 비트 tinyavr 패밀리소자 ( 요약 ) 5/38 ATmega128 특징 o 진보된 RISC 구조 Ø 133 개의강력한명령어, 1 클록사이클에실행 Ø 32 개의범용레지스터와주변장치제어레지스터 Ø 16[MHz] 에서 16[MIPS] 까지성능이나올수있음 Ø 2 클록사이클이소요되는곱셈기를칩에내장 o 비휘발성프로그램과데이터메모리 Ø 128[Kbyte] 의 ISP(In System Programming) 로재프로그램가능한플래시메모리내장 : 10,000 회읽기 / 쓰기가능 Ø 4[Kbyte] EEPROM : 100,000 회읽기 / 쓰기가능 Ø 4[Kbyte] SRAM 내장 Ø 64[Kbyte] 까지외부에추가하여사용할수있는메모리공간 Ø SPI 인터페이스를이용한 ISP(In System Programming) 6/38 3
ATmega128 특징 o 주변장치 Ø 2 개의 8 비트타이머 / 카운터 : 별도의프리스케일러와비교모드동작 Ø 2 개의 16 비트타이머 / 카운터 : 별도의프리스케일러, 비교모드, 캡처모드동작 Ø 실시간타이머카운터 Ø 6 개의 PWM 채널 Ø 출력비교모듈레이터 Ø 아날로그비교기 Ø 10 비트 A/D 변환기 Ø TWI(Two-wire Serial Interface) 직렬인터페이스 Ø 2 개의 USART Ø SPI 직렬인터페이스 Ø 와치독타이머 7/38 o 메모리 플래시프로그램메모리 데이터메모리 (SRAM) EEPROM o 프로그램카운터 (PC) o 명령어레지스터 (IR) o 명령어디코더 o 범용레지스터 o 기타주변장치 [ ATmega128 의내부구조 ] 8/38 4
Ø 플래시프로그램메모리 프로그램저장 비휘발성 (Non-volatile) 메모리 전원이없어도, 저장된데이터는변경되지않음 64[Kword](128[Kbyte]) 크기, 10,000회쓰고읽기 다운로더장치로다운로드 부트프로그램부 : 부팅에필요한기본정보 응용프로그램부 : 워드단위 (16 비트크기 ) 의명령어로구성된프로그램 Ø 프로그램카운터 (PC) 플래시프로그램메모리공간을가리킴 명령어를차례로인출하면서응용프로그램실행 [ 플래시프로그램메모리맵 ] 9/38 Ø 명령어레지스터 (IR) 프로그램카운터가지칭한곳에서명령어레지스터로명령어인출 명령어에는명령코드, 오퍼랜드, 연산결과저장위치필드를가짐 Ø 명령어디코더 명령어레지스터의명령코드를디코딩하여제어신호생성 ALU 는명령코드에해당되는연산동작을수행하게함 제어신호는연산대상이되는오퍼랜드가 ALU 에전달되게함 제어신호는연산결과를저장할수있게함 Ø 스택포인터 스택은임시데이터, 로컬변수, 호출된함수의복귀주소등을저장 스택포인터 (Stack Pointer) 는스택의 TOP 을저장하는특수레지스터 스택에데이터가저장되면, 스택공간은커짐» 스택포인터의주소는높은값에서낮은값으로감소» PUSH 명령어 : 데이터가스택에저장. 이때스택포인터는 1 씩감소» POP 명령어 : 데이터를스택의 TOP 에서꺼냄. 이때스택포인터는 1 씩증가 10/38 5
Ø 범용레지스터 데이터레지스터» 레지스터 R0~R25» 데이터를저장하는레지스터» 메모리주소 0x00~0x19 에해당 주소레지스터» 레지스터 R26~R31» 레지스터간접주소방식을위한레지스터» 메모리주소 0x1A~0x1F 에해당 [ 범용레지스터파일 ] 11/38 데이터레지스터사용사례» 변수 x 를데이터레지스터 r24 로활용한사례 12/38 6
주소레지스터 X, Y, Z» 데이터메모리에대한주소를가짐» 두개의레지스터를묶어, 주소레지스터 X, Y, Z 는 16 비트레지스터 주소레지스터 Z 활용사례 메모리 0x100 위치에데이터 0xAB 를저장동작» Z- 레지스터에메모리주소 0x100 을넣음 (r31ß0x01, r30ß 0x00)» r24 에 0xAB 를넣음» st Z+, r24 동작으로메모리주소 Z 위치에 r24 값을기록, 동작후 Z 값은 1 증가 13/38 Ø 데이터메모리 (SRAM) 변수는프로그램이수행되면서변경될수있음 변수는데이터메모리 (SRAM) 에저장 모드 일반모드 : ATmega103 과호환되지않는모드» 내부 SRAM 을 4,096[byte] 사용가능» I/O 명령어로 64 개 I/O 레지스터접근» 확장된 160 개의 I/O 레지스터를갖고 ld, store 명령으로접근 ATmega103 과호환모드 : 초기에많이사용» 내부 SRAM 을 4,000[byte] 만사용가능 [ ATmega128 데이터메모리 (SRAM) 구성 ] 14/38 7
Ø I/O 공간 in, out 의 I/O 명령어가가리키는주소는 I/O 공간 ld, st 명령어가사용하는주소는데이터메모리공간 64 개 I/O 레지스터» in, out 명령으로참조할때는 I/O 공간 : 0x00 0x3F» ld, st 명령으로참조할때는데이터메모리공간 : 0x20~0x5F 확장된 I/O 공간은 in, out 명령이아닌 ld, st 명령으로만참조 Ø EEPROM(Electrically Erasable and Programmable ROM) 4Kbyte의 EEPROM을내장 비휘발성메모리로서, 전원이공급되지않아도데이터는계속값을유지 플래시프로그램메모리는프로그램이다운로드되는비휘발성메모리 EEPROM은프로그램이수행되는동안에데이터를기록하여활용» 데이터기록을위해 SRAM 보다더많은클록이필요 15/38 Ø 상태레지스터 (SREG, Status Register) 가장최근에실행된산술연산의결과정보를저장 이결과에따라다음에실행되는프로그램의흐름을제어명령어에영향 인터럽트가발생했을때» 상태레지스터를하드웨어가자동으로저장, 복귀되지않음» 소프트웨어적으로저장, 복귀동작을수행해야함 16/38 8
17/38 4. ATmega128 명령어실행 o 명령어인출 Ø 프로그램카운터 (PC) 가가리키는명령어가명령어레지스터 (IR) 로인출 Ø 프로그램카운터의값은명령어레지스터크기만큼증가 o 명령어실행 ❶ 명령어분석 ❷ ALU에오퍼랜드인가 ❸ ALU 연산실행및결과기록 18/38 9
ATmega128 명령어실행 명령어인출과실행 한클록에수행되는명령어실행동작 19/38 ATmega128 명령어실행 o 명령어유형 Ø 산술연산및논리연산명령어 통상명령어들은 1 클록소요결과를저장하기위해한개의 8비트레지스터가사용 ADIW 명령어경우는 2 클록소요 2개의레지스터 (16비트워드단위 ) 에결과를기록해야함 [ 산술및논리연산명령어와동작 ] 20/38 10
ATmega128 명령어실행 Ø 데이터이동명령어 레지스터와레지스터 : 보통 1 클록소요 레지스터에즉시값 : 보통 1 크록소요 레지스터와메모리 : 보통 2 클록소요 레지스터와 I/O 공간 : 보통 1 클록소요 21/38 ATmega128 명령어실행 Ø 프로그램흐름제어명령어 분기되지않을경우프로그램흐름» PC 가가리키는플래시프로그램메모리에서명령어인출» PC 는 1 씩하드웨어적으로증가하면서연속적으로명령어를수행 분기되는명령» 분기명령으로 PC 에서가리키는주소를변경» 연속적인명령어의수행흐름을제어 22/38 11
ATmega128 명령어실행 분기명령어길이» 변위주소방식 : 1 워드» 즉시어드레싱모드 : 2 ( 명령어길이 + 즉시주소길이 ) [ 프로그램흐름제어명령어와동작 ] 23/38 ATmega128 명령어실행 o 서브루틴호출과복귀 Ø RCALL, CALL 명령어에의한서브루틴호출동작 PC, 명령어레지스터 (IR), 스택 (STACK), 스택포인터 (SP) 와연계된동작 서브루틴이호출되기전에되돌아올명령어주소를스택에저장 PC의값은서브루틴의시작주소 k로바뀜 Ø RET 또는 IRET 명령어에의한서브루틴에서복귀동작 스택에저장한주소로 PC 를복귀 서브루틴호출이후의명령어실행 24/38 12
ATmega128 명령어실행 CALL 명령어실행과정 25/38 ATmega128 명령어실행 RET 명령어실행과정 26/38 13
5. o 메모리 Ø 플래시프로그램메모리 비휘발성메모리이기때문에전원이없어도데이터를계속유지 128[Kbyte] 크기의플래시프로그램메모리가내장 쓰기, 지우기를반복할수있기때문에프로그램을직접변경하면서 ISP(In System Programming) 방법으로개발 Ø 데이터메모리 (SRAM) 프로그램에서선언한변수와스택을위해읽고, 쓰기를빠르게수행할수있는주메모리 휘발성메모리이므로, 전원이없으면데이터소멸 SRAM 4[Kbyte] 를내장 27/38 Ø EEPROM 프로그램실행중생성된데이터를전원없이도유지시키기위해서 EEPROM 사용, 4[Kbyte] 의 EEPROM 기록할때 SRAM, 플래시프로그램메모리보다시간이오래걸림 Ø 외부메모리 내장된 4[Kbyte] SRAM 이부족할경우, 외부메모리를추가로장착할수있음 ATmega103 비호환모드일때는주소 0x1100 부터사용가능 o 양방향 I/O 포트 Ø 디지털전압레벨과논리값의대응 최대 53 개의 I/O 핀을사용하여마이크로컨트롤러외부의디지털전압레벨과내부의논리값을대응» 핀의신호방향을출력으로설정하고,» PORTx(x 는 A~G) 레지스터에 0 또는 1 에해당하는논리값을기록하면,» 핀 Pxn(x 는 A~G, n 은 0~7) 은디지털전압레벨로변환되어신호출력 28/38 14
Ø 직접구동, 간접구동 간단한스위칭소자를구동할수있는전류로공급또는흡수할수있음 단독으로구동하기어려운장치는스위칭소자를추가하여구동할수있음 [ I/O 핀을이용한직접구동과간접구동 ] 29/38 o 타이머 / 카운터 Ø 8 비트타이머 / 카운터 타이머 / 카운터 0 과타이머 / 카운터 2 자동카운팅동작» TCNTn 레지스터는카운터에인가되는매클록마다 1 씩증가» 4 가지파형발생모드 - 정상모드 - CTC 모드 - 고속 PWM 모드 - 위상정정 PWM 모드 30/38 15
비교일치출력동작» TCNTn 레지스터와 OCRn(n 은 0 또는 2) 레지스터값을비교» 일치되면 OCn(n 은 0 또는 2) 출력핀의펄스값을바꿀수있음» 모터, 조명등다양한기기에공급되는전력을조절제어할수있음 [ 8 비트 TCNTn, OCRn 비교와 OCn 펄스발생 ] 31/38 Ø 16 비트타이머 / 카운터 타이머 / 카운터 1, 타이머 / 카운터 3 8 비트타이머 / 카운터와유사하지만, 다양한펄스를생성 각타이머 / 카운터에 A, B, C 세개의출력비교 OCRnx(n 은 1 또는 3, x 는 A~C) 레지스터 TCNTn(n 은 1 또는 3) 카운터와 16 비트비교에의해조절되는듀티비출력펄스를 OCnx(n 은 1 또는 3, x 는 A~C) 핀에만들수있음 주파형발생모드 - 정상모드 - CTC 모드 - 고속 PWM 모드 - 위상정정 PWM 모드 - 위상및주파수정정 PWM 모드 32/38 16
TCNTn 과 OCRnx 을비교하여 OCnx 핀으로출력하는펄스발생사례 [16 비트 TCNTn, OCRnx 비교와 OCnx 펄스발생 ] 33/38 o 직렬통신장치 Ø USART 범용동기 / 비동기수신및송신기 송수신을동시에진행할수있는양방향통신 프레임을수신할때는반드시시작비트 (Start bit) 부터시작 특정레지스터로통신속도를바꿀수있음 프레임비트수를 5, 6, 7, 8, 9 중하나로정할수있음 ( 보통 8비트사용 ) 프레임과프레임사이의전송이중지된정지비트는 1 또는 2 패리티검사, 데이터오버런 (Data OverRun) 검사, 프레임에러검사 2개의독립된 USART 장치 송신완료, 수신완료, 송신데이터비어있음인터럽트 34/38 17
Ø SPI 통신 직렬주변장치인터페이스 (SPI, Serial Peripheral Interface) 동기식데이터전송방식 마스터와슬레이브를정하여통신 MOSI, MISO, SCK, /SS 신호사용 마스터주관아래양방향통신의전이중 (Full Duplex) 통신 8비트시프트레지스터를이용하여 LSB를먼저, MSB를나중에전송 35/38 Ø TWI 시리얼통신 마스터와슬레이브로단 2 가닥선만을이용하여데이터를전송» 클록에해당되는 SCL(Serial CLock)» 신호와데이터가이동하는 SDA(Serial DAta) 장치사이에연결되는선이간단 최대 128 개장치사이에데이터전송 TWI 통신에사용되는장치는고유의주소를가짐 최대 400[KHz] 의속도로데이터를전송 Ø 1990년에 IEEE Std. 1149.1로표준화된 Boundary-Scan 규격 PCB 또는 PCB 내의 IC 내부를테스트 IC 내부를관찰하거나디버깅할때도광범위하게사용 4개신호사용 : TDI, TDO, TCK, TMS 36/38 18
Ø JTAG 인터페이스로디버깅수행가능 프로그램카운터, 스택포인터, 상태레지스터등특수레지스터 범용레지스터 내부주변장치레지스터정보 SRAM 데이터 EEPROM과플래시프로그램메모리데이터 37/38 6. ISP(In System Programming) o EPROM Ø 예전개발자들은주로자외선으로데이터를소거할때사용 Ø 자외선으로데이터소거 Ø 많은시행착오 o ISP [EPROM ] Ø 마이크로컨트롤러를장착한 PCB에직접장착하여시스템을개발 Ø 프로그램개발과하드웨어디버깅과정을한꺼번에처리 Ø 내장된플래시메모리에실행코드를직접다운로드 개발에서생산까지소요되는시간을단축 38/38 19