Download presentation
Presentation is loading. Please wait.
1
ATmega128 CH 1 Atmega 128 Board CodeVision
2
ATMega 128 Board
14
Features • High-performance, Low-power AVR® 8-bit Microcontroller • Advanced RISC Architecture – 133 Powerful Instructions – Most Single Clock Cycle Execution – 32 x 8 General Purpose Working Registers + Peripheral Control Registers – Fully Static Operation – Up to 16 MIPS Throughput at 16 MHz – On-chip 2-cycle Multiplier • Nonvolatile Program and Data Memories – 128K Bytes of In-System Reprogrammable Flash Endurance: 10,000 Write/Erase Cycles – Optional Boot Code Section with Independent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation – 4K Bytes EEPROM Endurance: 100,000 Write/Erase Cycles – 4K Bytes Internal SRAM – Up to 64K Bytes Optional External Memory Space – Programming Lock for Software Security – SPI Interface for In-System Programming • JTAG (IEEE std Compliant) Interface – Boundary-scan Capabilities According to the JTAG Standard – Extensive On-chip Debug Support – Programming of Flash, EEPROM, Fuses and Lock Bits through the JTAG Interface
15
• Peripheral Features – Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes – Two Expanded 16-bit Timer/Counters with Separate Prescaler, Compare Mode and Capture Mode – Real Time Counter with Separate Oscillator – Two 8-bit PWM Channels – 6 PWM Channels with Programmable Resolution from 2 to 16 Bits – Output Compare Modulator – 8-channel, 10-bit ADC 8 Single-ended Channels 7 Differential Channels 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x – Byte-oriented Two-wire Serial Interface – Dual Programmable Serial USARTs – Master/Slave SPI Serial Interface – Programmable Watchdog Timer with On-chip Oscillator – On-chip Analog Comparator • Special Microcontroller Features – Power-on Reset and Programmable Brown-out Detection – Internal Calibrated RC Oscillator – External and Internal Interrupt Sources – Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby, and Extended Standby – Software Selectable Clock Frequency – ATmega103 Compatibility Mode Selected by a Fuse – Global Pull-up Disable
16
• I/O and Packages – 53 Programmable I/O Lines – 64-lead TQFP and 64-pad MLF • Operating Voltages – V for ATmega128L – V for ATmega128 • Speed Grades – MHz for ATmega128L – MHz for ATmega128
18
AVR CPU Core
19
Status Register Bit 7 (I) : Global Interrupt Enable
Bit 6 (T) : 비트 복사 저장 (Bit Copy Storage) Bit 5 (H) : 보조 캐리 플래그 (Half Carry Flag) Bit 4 (S) : Sign Bit Bit 3 (V) : 2의 보수 오버플로우 비트 (two's complement overflow bit) Bit 2 (N) : Negative Flag Bit 1 (Z) : Zero Flag Bit 0 (C) : Carry Flag
20
General Purpose Register File
AVR의 고성능 RISC 명령을 수행하는데 최적화 되어 있는 레지스터 1 바이트 크기로 32개의 범용 레지스터로 구성 연산의 대상이 누산기가 아닌 이들 32개의 범용 레지스터들을 사용하여 연산을 할 수 있어서 연산의 속도가 빠름 레지스터간의 연산은 보통 1 사이클 명령으로 이루어짐
21
Stack Pointer 스택 : 마이크로컨트롤러 응용에서 서브루틴이나 인터럽트 발생시에 복귀되는 주소를 임시로 기억하기 위해서 사용되거나 일반 프로그램에서 지역 변수 또는 임시 데이터를 저장하는 용도로 사용되는 LIFO(Last In First Out) 구조의 메모리 스택 포인터(stack pointer) : 항상 데이터의 상단(top of stack)을 가리키는 16비트 레지스터로서 SP라고 표시되는데, 이는 데이터 저장이 가능한 스택의 번지를 의미 스택의 동작 : 푸싱, 팝핑 동작 스택은 SRAM 영역내에 존재, SP 레지스터의 초기값은 적어도 0x60 번지 이상의 값으로 설정
22
Instruction Execution Timing
단일 클럭 사이클 동안에 두 개의 레지스터에서 데이터를 인출해 오고, 이에 대한 산술연산을 실행함 그 결과를 목적 레지스터에서 다시 저장하는 모든 과정을 단일 명령어 사이클에서 수행이 가능함.
23
In-System Reprogrammable Flash Program Memory
AVR ATmega128 Memories In-System Reprogrammable Flash Program Memory 내부에 128KB의 플래시 메모리 ATmega128는 8비트 마이크로컨트롤러이지만, 프로그램 메모리는 16비트 구조로 되어 있음. 64K×16 비트의 용량을 가짐. 모든 명령은 16바이트 또는 32비트 구조로 각 명령은 프로그램 메모리에서 1~2개의 번지를 차지함. 프로그램 메모리는 부트 프로그램 영역과 응용 프로그램 영역으로 구성됨. SPI 통신 방식을 이용한 ISP 기능을 가지고 있어서 사용자가 작성한 프로그램을 쉽게 쓰기가 가능함. JTAG 에뮬레이터, 병렬 프로그래밍을 이용한 프로그램 쓰기도 가능
24
SRAM Data Memory 레지스터 파일 0x0000-0x001F I/O 레지스터
I/O 레지스터는 SRAM과 달리 ATmega128에 내장된 I/O 소자들을 직접 제어하는데 사용 주소 0x x005F의 영역을 사용하는 I/O 레지스터와 주소 0x0060-0x00FF의 영역을 사용하는 확장 I/O 레지스터로 구성 내부 SRAM 내부 데이터 메모리인 SRAM은 0x0100-0x10FF 영역으로 4K 바이트 내부 SRAM은 프로그램에서 각종 사용자 변수를 저장하기 위해 사용되며, 스택 영역으로 사용 외부 SRAM 내부 SRAM의 용량이 부족할 경우, 외부에 0x1100 번지부터 0xFFFF번지까지 약 60K 바이트의 SRAM을 쓰기/읽기가 가능한 메모리 최대 64K(0x0000-0xFFFF) 바이트의 용량
26
Address Latch Requirements
28
MCU Control Register – MCUCR
• Bit 7 – SRE: External SRAM/XMEM Enable 외부 데이터 메모리 영역의 액세스를 가능하기 위해 사용 1로 세트되어 있으면 외부 데이터 메모리 영역의 액세스를 위한 신호가 외부로 출력되고, 0으로 설정되면, 이 신호들은 기본 기능인 병렬 I/O 포트로 동작 • Bit 6 – SRW10: Wait-state Select Bit 외부 데이터 메모리 영역을 액세스할 때 웨이트 사이클의 수를 지정 External Memory Control Register A –XMCRA 메모리 영역을 분할하거나 웨이트 사이클을 설정하는데 사용하는 레지스터 RL0∼SRL2 비트와 SRW00, SRW01, SRW10 등의 6 비트는 메모리 확장에 사용
29
SRL2∼SRL0 (Wait State Sector Limit) 비트
메모리를 2개의 섹터로 구분하는 기능을 담당 SRW11와 SRW10 비트 (Wait-state Select Bits for Upper Sector) MCUCR의 SRW10 비트와 XMCUCR의 SRW11 비트를 조합하여 외부 데이터 메모리의 상위 섹터에 해당하는 영역의 웨이트 사이클을 설정 SRW01과 SRW00 비트 (Wait-state Select Bits for Lower Sector) 외부 데이터 메모리의 하위 섹터에 해당하는 영역의 웨이트 사이클을 설정
31
External Memory Control Register B –XMCRB
버스 키퍼 기능을 설정 외부 데이터 메모리 어드레스의 상위 바이트 중에서 어디까지 어드레스 기능으로 사용할 것인지 설정 • Bit 7– XMBK: External Memory Bus-keeper Enable 1로 설정함으로써 AD7∼AD0 신호선은 버스 키퍼 기능이 허가 버스 키퍼 기능이 설정되면 외부 데이터 메모리의 AD7∼AD0 버스의 신호가 3-스테이트로 되어야 하는 동안에 이를 이전의 출력값을 유지하도록 하여 전력 소모를 줄이는데 기여함 . • Bit 2..0 – XMM2, XMM1, XMM0: External Memory High Mask 포트 C와 주소 버스의 상위 바이트가 어느 부분까지 주소 버스 신호로 사용될 지를 설정하는 기능
32
2개의 섹터로 구분 가능한 최대 60KByte의 외부 메모리
각 섹터에는 각각 독립적으로 웨이트 사이클을 설정 가능. 속도가 비교적 빠른 SRAM의 경우 : 웨이트를 부가하지 않고 제어 가능. 상대적으로 동작 속도가 느린 I/O 소자의 경우 적절한 웨이트 사이클을 부여하여 제어의 유연성 을 확보하기 위함. 외부 메모리를 SRL2∼SRL0 비트를 사용하여 개의 섹터로 구분 하위 섹터는 SRW01 ∼ SRW00 비트를 사용하여 사이클 부여. 상위 섹터는 SRW11 ∼ SRW10 비트를 사용하여 사이클 부여. Address Map with 32 KB External Memory
33
메모리 보호와 시스템 설정 메모리 잠금 비트 퓨즈 비트 제품 표시 비트 클럭 소스 내부 RC 오실레이터 외부 수정 오실레이터
기타 클럭 소스 시스템 클럭 프리스케일러 레지스터
34
Program and Data Memory Lock Bits
Memory Programming Program and Data Memory Lock Bits 메모리의 보호 기능을 설정하는데 사용 1 바이트 중에 6개의 비트만 사용 LB 모드 : PC 등을 이용하여 외부에서 부트로더 섹션과 응용 프로그램 섹션 등의 플래시 메모리와 EEPROM에 프로그래밍하는 것을 금지하도록 설정하는 보호모드 BLB0와 BLB1 모드 : 각각 플래시 메모리 내의 부트로더 프로그램과 응용 프로그램이 실행되면서 각자 자기 섹션이 아닌 다른 섹션을 액세스할 때 설정하는 보호모드
35
LB 모드 PC등의 외부 프로그램에서 플래시 메모리를 액세스할 경우에 제공되는 보호 기능(LB2와 LB1 비트에 의해 설정)
메모리 잠금 비트 보호기능 LB 모드 LB2 LB1 1 메모리 잠금 기능이 없음(기본설정) 2 플래시나 EEPROM을 병렬 모드나 SPI/JTAG 직렬 모드로 프로그래밍하는 것을 금지시킴. 퓨즈 비트 또한 프로그래밍이 금지됨. 3 플래시나 EEPROM을 병렬 모드나 SPI/JTAG 직렬 모드로 프로그래밍하거나 검증(verify)하는 것을 모두 금지함. 퓨즈 비트 또한 프로그래밍이 금지됨. 주의 : 잠금 비트를 프로그래밍하기 전에 퓨즈 비트를 프로그래밍한다.
36
BLB0 모드 부트로더 프로그램이 응용 프로그램 섹션을 액세스하는 것을 보호하는 기능 BLB02와 BLB01 비트에 의해 설정
메모리 잠금 비트 보호 기능 BLB0 모드 BLB02 BLB01 1 SPM 또는 LPM 명령을 사용하여 응용섹션을 액세스하는데 아무런 제한이 없음. 2 SPM 명령으로 응용프로그램 섹션에 쓰기가 금지됨. 3 SPM 명령으로 응용 프로그램 섹션에 쓰기가 금지됨. 부트로더 섹션에서 실행되는 LPM 명령으로 응용프로그램 섹션의 읽기가 금지됨. 만약, 부트로더 섹션에 인터럽트 벡터가 위치한다면 응용 프로그램 섹션이 실행되는 동안에 모든 인터럽트가 금지됨. 4
37
퓨즈 비트 제 1 바이트 : 확장 퓨즈 바이트 AVR의 기본적인 시스템 설정용으로 사용(3 바이트로 구성) 확장 퓨즈 바이트
퓨즈 상위 바이트 퓨즈 하위 바이트 AVR 칩 쓰기 도구 프로그램의 칩 삭제 기능을 수행하더라도 퓨즈 비트는 영향을 받지 않음. 메모리 잠금 비트의 LB1을 사용하여 퓨즈 비트를 변경할 수 없도록 보호 기능으로 설정 가능. 퓨즈 비트를 먼저 설정하고 메모리 잠금 비트는 나중에 설정하여야 함. 제 1 바이트 : 확장 퓨즈 바이트 비트 이름 비트 기능 기본 값 - 7 1(unprogrammed) 6 5 4 3 2 M103C 1 ATmega103호환 모드 동작 0(unprogrammed) WDTON Watchdog Timer 동작 허용
38
BOD(Brown Out Detector)
제 2 바이트 : 퓨즈 상위 바이트 비트 이름 비트 기능 기본 값 OCDEN 7 OCD 기능 선택 1(unprogrammed, OCD disabled) JTAGEN 6 JTAG 기능 선택 0(programmed, JTAG enabled) SPIEN 5 SPI를 통한 직렬 프로그래밍 기능 선택 0(programmed, SPI Prog. enabled) CKOPT 4 오실레이터 옵션(시스템 클록 참조) 1(unprogrammed) EESAVE 3 칩 삭제 시에 EEPRPOM의 내용을 보존 1(unprogrammed, EEPROM not preserved) BOOTSZ1 2 부트 섹션 크기 선택 (표 2.21 참조) 0(programmed) BOOTSZ0 1 BOOTRST 리셋 벡터 선택 제 3 바이트 : 퓨즈 하위 바이트 비트 이름 비트 기 능 기본 값 BODLEVEL 7 BOD(Brown Out Detector) 트리거 레벨을 선택 1(programmed ) BODEN 6 BOD 기능 사용 허용 1(unprogrammed) SUT1 5 기동 시간 설정 SUT0 4 0(programmed ) CKSEL3 3 클럭 소스 설정 CKSEL2 2 CKSEL1 1 0(unprogrammed) CKSEL0
39
제품 표시 바이트 ATmel사에서 출시되는 모든 마이크로컨트롤러에는 소자의 종류에 따라 3 바이트의 인식 코드를 내장하고 있음. 0x00 번지 0x01 번지 0x02 번지 AVR 모델 0x1E (Atmel사의 제품) 0x98 (256KB 플래시) 0x01 ATmega2560 0x02 ATmega2561 0x97 (128KB 플래시) ATmega103 ATmega128 0x03 ATmega1280 0x96 (64KB 플래시) ATmega64 0x08 ATmega640 0x94 (16KB 플래시) ATmega161 ATmega163 ATmega16 0x04 ATmega162 0x05 ATmega169 0x93 (8KB 플래시) 0x06 ATmega8515 ATmega8535 0x91 (2KB 플래시) 0x07 ATtiny28 0x0A ATtiny2813
40
시스템 클럭 클럭 소스의 선택 CPU 클럭 AVR 코어에서 사용하는 클럭 소스
일반 목적 레지스터 파일(General Purpose Register File), 상태 레지스터와 스택 등을 구동하는 역할을 함. CPU 클럭을 멈추면 AVR 코어의 일반 동작 및 연산 등을 멈춤. I/O 클럭 타이머/카운터, SPI와 USART 등의 대부분의 I/O 모듈에서 사용하는 클럭 소스 외부 인터럽트는 비동기 논리에 의해 검출되므로 I/O 클럭이 정지되어 있는 경우에도 인터럽트를 검출하여 슬립 모드에서 벗어나도록 하는 기능으로 사용될 수 있음. 플래시 클럭 플래시 메모리 인터페이스 동작에 사용되며, 일반적으로 플래시 클럭은 CPU 클럭과 동시에 ON/OFF 제어됨. 비동기 타이머 클럭 외부의 32㎑ 수정 발진자에 의해서 비동기 타이머/카운터가 동작하도록 공급됨. 이는 마이크로컨트롤러가 슬립모드에 있을 경우에도 실시간으로 타이머/카운터 기능을 동작시키기 위함. 클럭 소스의 선택 클럭 소스 CKSEL3~0 외부 수정 오실레이터/세라믹 공진기 1111 ~ 1010 외부 저주파 수정 오실레이터 1001 외부 RC 오실레이터 1000 ~ 0101 Calibrated 내부 RC 오실레이터 0100 ~ 0001 외부 클럭 0000
41
외부 수정 오실레이터 수정 발진기를 사용할 경우 동작 모드 오실레이터는 4개의 모드로 동작
각각의 모드는 특정 주파수에 대해 최적화됨. 세라믹 공진기는 일반적으로 주파수가 낮고 주파수 안정도가 낮은 응용 분야에서 사용 실제 응용에서는 일반적으로 수정 발진기를 사용함. 수정 발진기를 사용할 경우 동작 모드 CKOPT CKSEL3~0 주파수 범위(MHz) 수정 발진기를 사용할 경우의 권장 C1과 C2의 값 1 101 0.4 ~ 0.9 세라믹 공진기에서만 사용하는 모드 110 0.9 ~ 3.0 12 ~ 22pF 111 3.0 ~ 8.0 8.0 이상
42
수정 발진기 동작 모드에 따른 기동 시간 CKSEL0 SUT1-0 기동 시간 리셋의 경우 추가 지연 시간 사용이 권장되는 분야
리셋의 경우 추가 지연 시간 사용이 권장되는 분야 00 258 CK 4.1㎳ 세라믹 공진기 고속으로 투입되는 전원 01 65㎳ 세라믹 공진기 저속으로 투입되는 전원 10 1K CK - 세라믹 공진기 BOD 허가 11 1 16K CK 수정 발진기 BOD 허가 고속으로 투입되는 전원 저속으로 투입되는 전원
43
CodeVision
44
menu bar Tool bar Edit window Navigate window
45
1. CodeVision Execution (1) CodeVision을 실행한다.
46
(2) File →New (새로운 프로젝트 생성)
1. New project (2) File →New (새로운 프로젝트 생성) (3) Select the Project (4) yes
47
2. Project configuration
(6) Module 생성 및 포트 선택(예: LCD:portB) (7) Module 생성 및 포트 선택(예: LCD:portB) (5) Selected Chip
48
(8) USART0 Module 을 생성하였을 경우
2. Project configuration (8) USART0 Module 을 생성하였을 경우 (9) 송수신 선택 (10) 통신속도 선택 (11) 통신 규약 선택
49
2. Project configuration
(12) Port I/O select
50
3. File generation (13) *.c source file Save
(13) File → Generate Save and Exit (14) *.prj project file Save
51
3. File generation (15) *.cwp file Save
52
4. Source File (16) Source file 자동 생성
53
5. Project Compile (17) Project → Compile 컴파일 한다
(18) 컴파일 결과 오류가 없으면 “Ok”
54
(18) “Make” 결과 오류가 없으면 “Ok”
7. Make File (17) Project → Make 실행파일 생성 (18) “Make” 결과 오류가 없으면 “Ok”
55
8. Navigation (19) Navigation으로 파일 확인
56
PonyProg _Excution (20) PonyProg 를 실행한다.
57
PonyProg _Chip select (21) Chip을 선택한다
58
(21) Device → Chip 선택으로 하여도 된다
PonyProg _Chip select (21) Device → Chip 선택으로 하여도 된다
59
PonyProg _Interface Setup(for PC connection)
(22) Setup → Interface Setup PonyProg _Excution (23) Parallel Port 선택 AvrISP I/O 선택 LPT1 선택 (24) Probe로 Parallel Port Scan (25) Parallel Port 가 정상적으로 연결되어 있으면 “Test Ok”매시지 출력
60
(26) File → Open Device File로 *.Hex file을 읽어들인다
PonyProg _Device File Read(Hexa File read) (26) File → Open Device File로 *.Hex file을 읽어들인다
61
(27) File → Open Device File로 *.Hex file을 읽어들인다
62
(28) Command → Write All로 다운로드 한다.
PonyProg _Device File Write (28) Command → Write All로 다운로드 한다.
63
Configuration of fuse bit
64
Configuration of fuse bit
65
Configuration of fuse bit (기존의 bit)
Similar presentations