2주차 ATmega128의내부구조및퓨즈비트설정 Next-Generation Networks Lab.
4. ATmega128의클럭시스템과배분 시스템클럭 마이크로컨트롤러동작의기준이되는클럭의주파수 AVR은시스템클럭을내부모듈별로독립적으로배분하여제어 슬립 (Sleep) 모드를활용하여내부모듈별로클럭차단이가능하여전력소모관리 퓨즈비트를통해다양한클럭소스선택가능 클럭배분 ( 표 2-13) 번호클럭설명 1 clk ASY 비동기타이머 / 카운터 (Asynchronous Timer/Counter) 2 clk I/O 범용 I/O 모듈 (General I/O Modules) 3 clk ADC 아날로그 - 디지털변환기 (ADC) 4 clk CPU CPU 핵심모듈 (CPU Core), SRAM 5 clk FLASH 메모리 (Flash and EEPROM) 35
ATmega128의블럭도 입출력장치 메모리 주변장치 36
그림 2-19 AVR 의시스템클럭과배분블럭도 시스템클럭배분 시스템클럭 시스템클럭 Source 37
Clock Source의종류 ( 표2-14, 표2-15) Clock Source 는 Fuse bit 에서 CKSEL[3:0] 의설정에의해선택 번호 Clock Source CKSEL[3..0] 1 외부 크리스털혹은세라믹레조네이터 (External Crystal/Ceramic Resonator) 1111 ~ 1010 2 외부저주파크리스털 (External Low-frequency Crystal) 1001 3 외부 RC 오실레이터 (External RC Oscillator) 1000 ~ 0101 4 내부 RC 오실레이터 (Calibrated Internal RC Oscillator) 0100 ~ 0001 5 외부클럭 (External Clock) 0000 Default Clock Source CKSEL[3:0]=[0001], SUT[1:0]=[10] 으로설정 내부 RC 오실레이터가 1MHz로동작 38
39
1 External Crystal or Ceramic Resonator ( 그림 2-20, 20, 표2-16) 40
표2-17 41
2 Low-frequency Crystal Oscillator ( 그림 2-21) 21) 3 External RC Oscillator ( 그림 2-22) 22) 32.768kHz 42
4 내부 RC 오실레이터 (Calibrated Internal RC Oscillator) Fuse 비트에서 CKOPT 는반드시 1 로설정 XTAL1 과 XTAL2 핀에는아무것도연결하지않음 표 2-21 표 2-22 43
5 External Oscillator ( 그림 2-24) 24) 6 타이머 / 카운터오실레이터 TOSC1 과 TOSC2 핀에 32.768kHz 의크리스털을직접연결 외부에커패시터는연결하지않음 44
5. 전원관리및슬립모드 슬립모드 (Sleep modes) AVR 내의모듈중사용하지모듈의전원공급을차단함으로써전력을절감 6 가지의다양한슬립모드를지원함으로써원하는모듈만전원을공급 / 차단 MCUCR 레지스터설정후 SLEEP 명령어실행 단, 마이크로컨트롤러가슬립상태라하더라도인터럽트가발생하면깨어남 표 2-24 표 2-26 번호슬립모드 SM 비트 1 아이들모드 (Idle Mode) 000 2 ADC 노이즈감소모드 (ADC Noise Reduction Mode) 001 3 파워-다운모드 (Power-down Mode) 010 4 파워세이브모드 (Power-save Mode) 011 5 스탠바이모드 (Standby Mode) 110 6 확장스탠바이모드 (Extended Standby Mode) 111 45
MCUCR (MCU Control Register) 그림 2-25 비트이름기능 표 2-25 7 SRE 6 SRW10 외부메모리사용관련설정 5 SE Sleep Enable 4 SM1 Sleep Mode Select 1 3 SM0 Sleep Mode Select 0 2 SM2 Sleep Mode Select 2 1 IVSEL 0 IVCE 인터럽트벡터설정관련 46
표2-27 27 슬립모드에서활성화클럭영역과 Wake-up source 47
6. 시스템제어및리셋 리셋? 모든레지스터가기본값으로초기화되고, 프로그램은리셋벡터부터다시시작 리셋소스 ( 표 2-28) 28) 번호클럭설명 1 2 3 4 파워온리셋 (Power-on Reset) 외부리셋 (External Reset) 전원전압 V CC 가일정전압 V POT 이하로떨어지면리셋 /RESET 핀에 LOW 입력이일정전압 V RST 이하로 1.5usec 이상유지되면리셋 브라운아웃검출리셋 BOD 검출전압이일정전압 V BOT 이하로 (Brown-out Detection) 2.0usec 이상떨어지면리셋 와치독리셋 (Watchdog Reset) Watchdog 타임아웃이발생하면리셋 48
그림2-26 26 리셋블록다이어그램 49
POR (Power-On Reset) 그림 2-23 POR (1) 그림 2-27 POR (2) 50
그림 2-28 EXT Fuse 비트에서 BODLEVEL 과 BODEN 비트설정 그림 2-2929 BOD 51
그림 2-30 WDT MCUCSR (MCU Control and Status Register) 리셋 source 를표시 그림 2-31 52
7. 와치독타이머 와치독 (Watchdog) 이란? 집지키는강아지, 경비견 이라는뜻으로안정성을향상시키는기술 외부클럭과별도로내부의독립적인 1MHz 클럭을사용 그림 2-32 53
WDTCR (Watchdog Timer Control Register) 그림 2-33 WDP2 표 2-29 와치독타이머의분주비설정 번호 WDP2 WDP1 WDP0 와치독분주비타임아웃 (VCC=3.0) 타임아웃 (VCC=5.0) 1 0 0 0 16,384 (16K) 17.1 ms 16.3 ms 2 0 0 1 32,768 (32K) 34.33 ms 32.5 ms 3 0 1 0 655,36 (64K) 68.5 ms 65 ms 4 0 1 1 131,072 (128K) 0.14 ms 0.13 sec 5 1 0 0 262,144 (256K) 0.27 ms 0.26 sec 6 1 0 1 524,288 (512K) 0.55 ms 0.52 sec 7 1 1 0 1,048,576 (1,024K) 1.1 sec 1.0 sec 8 1 1 1 2,097,152 (2,048K) 2.2 sec 2.1 sec 54
8. 메모리락비트와퓨즈비트 1바이트의메모리락비트와 3바이트의퓨즈비트로구성 메모리락비트 (Memory Lock Bit) 메모리의내용을보호 퓨즈비트 (Fuse Bit) 디바이스의기능및상태를설정 메모리락비트는 Chip Erase 명령에의해서초기값인 1 로설정가능 퓨즈비트는 Chip Erase 명령에의해서영향을받지않음 메모리락비트를프로그램하기전에퓨즈비트를먼저프로그램할것 메모리락비트의 LB1 이프로그램 (0) 되면퓨즈비트는락 (lock) 됨 해당비트의내용을반드시숙지하고설정할것!! 잘모르고아무렇게세팅할경우 AVR이오동작할우려가있음 특히크리스털관련설정에주의할것 55
표2-32 메모리락비트 (Memory Lock Bit) 비트이름모드및기능 기본설정 설정의미 5 4 BLB12 BLB11 Boot Lock Bit 12 BLB1 모드 Bootloader section에서 Boot Lock Bit 11 SPM 과 LPM 의제약여부를설정 1 1 3 BLB02 Boot Lock Bit 02 BLB0 모드 1 Application i section 에서 2 BLB01 Boot Lock Bit 01 SPM과 LPM의제약여부를설정 1 1 LB2 Lock Bit 2 LB 모드 1 Flash와 EEPROM의프로그 0 LB1 Lock Bit 1 래밍가능여부를설정 1 쓰기금지없음 쓰기금지없음 쓰기금지없음 0xFF 56
퓨즈비트 확장퓨즈바이트 퓨즈상위바이트 퓨즈하위바이트 표 2-34 확장퓨즈바이트 (Extended Fuse Byte) 비트이름기능기본설정수정설정 1 M103C ATmega103 compatible mode 0 1 0 WDTON Watchdog Timer Active 1 1 0 Programmed Checked Enabled 설정 0xFF 1 UnProgrammed Unchecked Disabled 해제 57
표 2-35 퓨즈비트상위바이트 (Fuse High Byte) 비트 이름 기능 기본설정 수정설정 7 OCDEN OCD Enable 1 1 6 JTAGEN JTAG Enable 0 1 5 SPIEN SPI Enable for Downloading 0 0 4 CKOPT Clock Options (Full swing) 1 1 3 EESAVE EEPROM Save @ Chip Erase 1 1 2 BOOTSZ1 Select Boot Size (11:512, 10:1 0 0 1 BOOTSZ0 024, 01:2048, 00:4096) 0 0 0 BOOTRST Select Boot Reset Vector 1 1 0x?? 58
표 2-36 퓨즈비트하위바이트 (Fuse Low Byte) 비트이름기능기본설정수정설정 7 BODLEVEL BOD Trigger Level Select 1 1 6 BODEN BOD Enable 1 1 5 SUT1 Select SUT(Start-up Time) 1 1 4 SUT0 ( Default SUT 64ms ) 0 0 3 CKSEL3 Select Clock Source 0 0 ( 표 2-37 참고 ) 2 CKSEL2 0 0 1 CKSEL1 Default Clock Source 0 0 내부 RC 오실레이터 1MHz 0 CKSEL0 1 1 0x?? 59
표 2-37 클럭비트설정 CKSEL3..0 종류클럭소스주파수 (MHz) CKSEL3..0 1 External Crystal/Ceramic Resonator 1111 ~ 1010 2 External Low-Frequency Crystal 1001 8.0 ~ 12.0 1000 3 External RC Oscillator 3.0 ~ 8.0 0111 0.9 ~ 3.0 0110 0.1 ~ 0.9 0101 8.0 0100 4 Calibrated Internal RC Oscillator 4.0 0011 2.0 0010 1.0 0001 5 Et External lclock 0000 60
표 2-38 제품표시바이트 (Signature Bytes) 0x00 번지 0x01 번지 0x02 번지모델 0x1E (Atmel 제품을의미 ) 0x01 ATmega103 0x97 (128KB Flash 모델을의미 ) 0x02 0x03 ATmega128 ATmega1280 0x04 ATmega1281 0x01-0x96 0x02 ATmega64 (64KB Flash 모델을의미 ) 0x03 ATmega640 0x95 0x01 (32KB Flash 모델을의미 ) 0x02 0x01 ATmega161 0x94 (16KB Flash 모델을의미 ) 61 0x02 0x03 0x04 0x05 ATmega163 ATmega16 ATmega162 ATmega169
ISP 방식의프로그래머를지원하는소프트웨어 소프트웨어제조회사교재지원되는부품 Atmel Studio 6.2 (Atmel Studio 4.18) ToastProgUSB (ToastProg2005) Atmel 그림 2-36 Seniorcom 그림 2-35 Atmel 사의 AVR 계열 Atmel 사의 8051 계열 Atmel 사의 AVR 계열 Atmel 사의 8051 계열 Atmel 사의 AVR 계열 PonyProg2000 Freeware 그림 2-34 Atmel 사의 8051 계열 PIC, EEPROM 등 62
Atmel Studio 의 Lock & Fuse bits 설정 ( 그림 2-36) 0xFF 0xD9 0xE1 Default 상태 내부 RC 오실레이터 1MHz Start-up time: 64ms 63
ToastprogUSB의 Lock & Fuse bits 설정 ( 그림 2-35) 0xFF 0xFF 0xD9 0xE1 Default 상태 내부 RC 오실레이터 1MHz Start-up time: 64ms 64