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