ATmega128 의구조 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring) Prof. Jae Young Choi
2.1 ATmega AVR 개요 AVR 개요 ATMEL 사에서제작한 RISC 구조의저전력 CMOS 8 비트마이크로컨트롤러 1997 년에처음개발, Alf-Egil Bogen 과 Vegard Wollan 의진보된 RISC 기술을기반으로설계되어 AVR 이라명명함. 대부분의명령은단일클럭으로실행하여동작속도를혁신적으로개선한마이크로컨트롤러로서저전력임베디드시스템에적합함. AVR RISC 구조는 CISC 에비해 10 배이상의빠른속도로프로그램이실행될수있는편리한코드체계를갖고있음. ATMEL 의플래시메모리기술을접목하여 ISP 방식을최초적용함. ATtiny 및 Atmega 계열의 2 가지기본모델외에 LCD 구동, 네트워크, 자동차용, 모터제어용의특수응용분야로적용이확대되고있음. 2
2.1 ATmega AVR 개요 AVR 의특징 (1) 연산과데이터저장을한번에할수있는하버드구조로되어있어동시에프로그램메모리와데이터메모리를동시에액세스할수있음. 대부분의명령은단일클럭으로실행하여동작속도를혁신적으로개선한제어기임. 임베디드환경에적합한저전력소모를갖음. 명령어는 16 비트버스폭의하드웨어로처리되지만, 데이터는 8 비트길이기반으로처리되는특이한 8 비트마이크로컨트롤러임. 내부에는 32 개의범용작업레지스터를가지며모든레지스터는산술 - 논리연산장치 (ALU) 와직접적으로연결되는구조를가지고있기때문에한클럭사이클내에단일명령사이에두개의독립된레지스터를한꺼번에처리할수있음. AVR RISC 구조는 CISC 마이크로컨트롤러보다 10 배이상의빠른속도로실행이이루어지는보다편리한코드체계를가지는마이크로컨트롤러임. C- 언어로제어하기에적합한주소지정모드 (addressing mode) 를제공하여높은코드집적도를가지고있음. 3
2.1 ATmega AVR 개요 AVR 의특징 (2) 단일칩에자체프로그램이가능한 1KB~256KB 까지의플래시메모리를가지고있음. 프로그램은직렬프로그래밍인터페이스방식의 ISP 기능을이용하여 1,000 번까지재프로그램이가능함. 모델에따라 64Byte 에서 4KB 까지의 EEPROM 을내장하고있어데이터백업이가능함. 100,000 정도반복사용가능모델에따라데이터메모리로서 32Byte 에서 8KB 까지의비교적큰 SRAM 을내장하고있음. 이상의 3 가지메모리를내장하고있어효율성이극대화되어있는마이크로컨트롤러로각광을받음. ISP(In-System Programming) 이라는기법을통해롬라이터와같은별도의장비없이도 PC 에서프로그램을작성하여곧바로 AVR 내부의플래시메모리로프로그램코드를저장할수있음. 1.8 5.5V 의동작이가능하며, 특히저전력소모에적합한다양한동작모드를제공함. 4
2.1 ATmega AVR 개요 AVR 의내장된주요특징 (1) 다기능, 양방향의일반목적의 I/O 포트를가지고있음. 이는구조변경이가능하고, 내부에는풀업저항이내장되어있음. 다양한기능의내부오실레이터가내장되어있음. 재프로그램이가능한플래시메모리가 256K 바이트까지내장, 이메모리는 ISP, JTAG 또는 or 고전압방법을이용하여시스템내에서프로그램이가능함. 대부분의소자에서 JTAG 또는 debugwire 를통해칩내에서직접적인디버깅이가능함. 8- 비트와 16- 비트의타이머가내장되어있으며, 이를이용하여 PWM 츨력기능으로활용할수있음. 아날로그비교기가내장됨. 16 개까지의채널입력을갖는 10- 비트의 A/D 변환기가내장됨. 5
2.1 ATmega AVR 개요 AVR 의내장된주요특징 (2) 다양한직렬인터페이스기능을내장함. I²C 호환성을갖는 TWI 기능, RS-232, RS-485 등의지원을위한 UART/USART SPI(Serial Peripheral Interface) 버스 2 선또는 3 선식의동기데이터전송을위한 USI(Universal Serial Interface) 저전압검출 (Brown-out Detection) 기능을제공함. Watchdog Timer (WDT) 를내장하고있음. 전원절약을위한여러가지의슬립모드를제공함. 조명및모터제어를위한전용의제어기 CAN 컨트롤러 /USB 컨트롤러 / 이더넷컨트롤러의지원 LCD 컨트롤러의지원 6
2.1 ATmega AVR 개요 AVR Microcontroller 의종류 AVR 계열소자의종류주요기능 Tiny Mega Application Specific ATtiny11/12L/13/15L ATtiny24/25/261 ATtiny44/45 ATtiny84/85 ATmega8/48/88L ATmega8515/8535 ATmega16/162/164/168 ATmega32/324/325/3250L ATmega64/640/644/6450 ATmega128/1280/1281 ATmega2560/2561 ATtiny25/45 AT90PWM1/2 Atmega406 AT90CAN128P/329P AT90USB1286/647 ATmega64RZAPV/RZAV ATmega3290P/329P 1 8K 바이트의프로그램메모리 8 20 핀패키지 주변소자의기능이제한적으로내장됨 4 256K 바이트의프로그램메모리 28 100 핀패키지 확장명령어세트를가지고있음 ( 곱셈과확장메모리를다루기위한명령어내장 ) 주변소자의기능이확장됨. Automotive Lighting Smart Battery CAN USB Z-Link LCD 7
2.1 ATmega AVR 개요 AVR Microcontroller 의종류 Tiny 계열 가격이낮고소형시스템에적합한소자 장난감, 게임용장치, 배터리충전기등간단히조립될수있는센서응용회로에적용되는모델 대량으로생산되는간단한응용분야에사용 핀수는 8 핀에서 28 핀정도로서기능이나성능이낮음 1K 2KB 의플래시메모리 Mega 계열 프로그램크기가대형이고입출력의수가많은시스템에적합한소자로무선전화기및프린터용제어기, FAX 및 CD-ROM 제어기에응용될수있는모델 규모가크고성능이높은응용분야에활용 가격이고가이고기능이나성능도높다. 8K 256K 바이트의플래시메모리특수용도의 AVR 응용분야에따라자동차용, 통신용, LCD 제어용등다양한응용에적합하도록최적화하여출시 8
2.2 ATmega128 의기본구조와기능 ATmega128 의주요특징 마이크로컨트롤러의속도 16MHz 의클럭을사용할때, 16MIPS 의연산속도를갖는다. 내장메모리 128K 바이트의 ISP 방식프로그램용플래시메모리 4K 바이트의 EEPROM 4K 바이트의데이터저장용 SRAM 부가 I/O 장치 독립적인프리스케일러와비교모드를갖는 2 개의 8 비트타이머 / 카운터 독립적인프리스케일러, 비교모드와캡쳐모드를갖는 2 개의확장 16 비트타이머 / 카운터 독립적인오실레이터를갖고있는실시간카운터 6 개의 PWM 채널 8 채널 10 비트 ADC 2 개의프로그램가능한직렬 USARTs 9
2.2 ATmega128 의기본구조와기능 ATmega128 의주요특징 (2) 마스터 / 슬레이브모드를갖는 SPI 직렬인터페이스 내장된오실레이터로구현된프로그램가능한워치독타이머 아날로그비교기내장 53 개의프로그램가능한입출력 I/O 기타 전원투입리셋과프로그램가능한저전압검출 (BOD : Brown-out Detection) 기능 조정가능한 RC 오실레이터의내장 리셋벡터와 8 개의외부인터럽트소스, 26 개의내부인터럽트소스 슬립모드로서 6 개의전원절약모드를가지고있음 ( 아이들, ADC 노이즈감쇄기, 전원절감, 전원차단, 대기, 확장대기 ) 내장메모리의프로그래밍과온칩디버깅이가능한 JTAG(IEEE std. 1149.1) 인터페이스제공 64 핀의 TQFP(Thin Quad Flat Package) 또는 MLP(Micro Lead Frame) 패키지로구성되어있음 ATmega128 는 2.7V~5.5V 의전원전압에서동작하며, 시스템클럭의입력범위는 0~16MHz 임. (ATmega128L : 2.7V ~ 5.5V, 0~8MHz) 10
2.2 ATmega128 의기본구조와기능 ATmega128 의외부구조 11
2.2 ATmega128 의기본구조와기능 ATmega128 의핀의기능 (1) 포트 A(PA7 PA0) 외부데이터메모리와데이터전송시하위주소와데이터버스로사용 8 비트의양방향 I/O 포트로사용가능 외부에메모리를인터페이스하지않을때에는내부풀업저항 (20 kω 50 kω ) 을갖음. 포트 B(PB7~PB0) 포트는중복된기능을가지고있는포트 ( 표 2.6 참조 ) 내부적으로풀업저항 (20 kω 50 kω ) 8 비트의양방향 I/O 포트로사용가능 포트 C(PC7~PC0) 외부데이터메모리와데이터전송시상위주소와데이터버스로사용 8 비트의양방향 I/O 포트로사용가능 외부에메모리를인터페이스하지않을때에는내부풀업저항 (20 kω 50 kω ) 을갖음 12
2.2 ATmega128 의기본구조와기능 ATmega128 의핀의기능 (2) 포트 D(PD7 PD0) 포트는중복된기능을가지고있는포트 ( 표2.8참조 ) 내부적으로풀업저항 (20kΩ 50kΩ) 8비트의양방향 I/O 포트로사용가능 포트 E(PE7~PE0) 포트는중복된기능을가지고있는포트 ( 표2.9참조 ) 내부적으로풀업저항 (20kΩ 50kΩ) 8비트의양방향 I/O 포트로사용가능 포트 F(PF7 PF0) 포트는중복된기능을가지고있는포트 ( 표2. 참조 ) 내부적으로풀업저항 (20kΩ 50kΩ) A/D 컨버터의입력포트로사용 8비트의양방향 I/O 포트로사용가능 13
2.2 ATmega128 의기본구조와기능 ATmega128 의핀의기능 (3) 포트 G(PG4~PG0) 포트는중복된기능을가지고있는포트 ( 표2. 참조 ) 내부적으로풀업저항 (20kΩ 50kΩ) 5비트의양방향 I/O 포트로사용가능 RESET : 마스터리셋입력 ( 액티브 LOW 신호 ) AVCC : A/D 컨버터및포트 F의전원 AREF : A/D 컨버터의기준전압 PEN : SPI를활성화시키는프로그래밍인에이블핀 XTAL1, XTAL2 VCC, GND 14
2.2 ATmega128 의기본구조와기능 ATmega128 의내부구조 15
2.3 ATmega AVR CPU 코어 AVR CPU 코어의구조도 16
2.3 ATmega AVR CPU 코어 플래시프로그램메모리 프로그램메모리는 8 비트로구성 기본적으로한개의번지가 16 비트단위로구성되어 16 비트마이크로프로세서인것처럼동작 모든 AVR 의명령어는 16 비트또는 32 비트길이로구성 플래시로되어있는내부프로그램메모리는부트프로그램섹션 (boot program section) 과응용프로그램섹션 (application program section) 의두가지영역 내부프로그램메모리는특정의메모리잠금비트 (memory lock bit) 를사용하여쓰기와쓰기 / 읽기의금지를할수있음. 17
2.3 ATmega AVR CPU 코어 산술 - 논리연산장치 (ALU) AVR 의 ALU 는 32 개의일반목적의동작레지스터 (general purpose working register) 와직접적으로연계되어동작 ALU 는레지스터간또는레지스터와상수간의산술또는논리연산을단일클럭사이클에수행 연산된결과에대한 ALU 의상태를상태레지스터로갱신 AVR 에서는강력한하드웨어곱셈기를가지고있어서부호있는정수 / 부호없는정수의곱셈연산과소수점형식의곱셈연산을빠르게수행 18
2.3 ATmega AVR CPU 코어 상태레지스터 (1) 가장최근에실행된산술연산의명령어처리결과에대한상태를나타내주는레지스터 조건부처리명령에의해프로그램의흐름을변경하는데사용될수있음 상태레지스터는인터럽트를처리하는과정에서자동으로저장되거나복구되지않으므로, 반드시소프트웨어에서이러한동작을처리하여주어야함. 19
2.3 ATmega AVR CPU 코어 상태레지스터 (2) 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
2.3 ATmega AVR CPU 코어 범용레지스터파일 AVR 의고성능 RISC 명령을수행하는데최적화되어있는레지스터 1 바이트크기로 32 개의범용레지스터로구성 연산의대상이누산기가아닌이들 32 개의범용레지스터들을사용하여연산을할수있어서연산의속도가빠름 레지스터간의연산은보통 1 사이클명령으로이루어짐 21
2.3 ATmega AVR CPU 코어 스택포인터 스택 : 마이크로컨트롤러응용에서서브루틴이나인터럽트발생시에복귀되는주소를임시로기억하기위해서사용되거나일반프로그램에서지역변수또는임시데이터를저장하는용도로사용되는 LIFO(Last In First Out) 구조의메모리스택포인터 (stack pointer) : 항상데이터의상단 (top of stack) 을가리키는 16 비트레지스터로서 SP 라고표시되는데, 이는데이터저장이가능한스택의번지를의미스택의동작 : 푸싱, 팝핑동작스택은 SRAM 영역내에존재, SP 레지스터의초기값은적어도 0x60 번지이상의값으로설정 22
2.3 ATmega AVR CPU 코어 RAM Page 162 는없고 128 데이터시트에만있어요. 혹시몰라서첨부해놓았습니다. 23
2.3 ATmega AVR CPU 코어 명령어의실행 (1) AVR 은하바드구조와고속 - 액세스레지스터파일의구조를이용한파이프라이닝기법을사용하고명령을평균적으로 1 클럭에 1 개씩처리하는구조임 24
2.3 ATmega AVR CPU 코어 명령어의실행 (2) 단일클럭사이클동안에두개의레지스터에서데이터를인출해오고, 이에대한산술연산을실행함 그결과를목적레지스터에서다시저장하는모든과정을단일명령어사이클에서수행이가능함. 25
2.3 ATmega AVR CPU 코어 리셋및인터럽트의처리 리셋을포함하여여러종류의인터럽트소스를포함하고있으며, 이에해당하는리셋및인터럽트벡터를가지고있음. 인터럽트들은여러가지의인터럽트마스크레지스터를통하여각각개별적으로인터럽트의허용여부를설정할수있으며, 상태레지스터 (SREG) 의전체인터럽트허가비트 I 를이용하여전체적인허용여부를설정할수있음. 인터럽트동작의유형 인터럽트가발생하면관련플래그레지스터의해당플래그를비트를 1 로세트하도록트리거시키는경우 인터럽트가요청되더라도이를기억해둘인터럽트플래그를가지고있지않으며인터럽트발생조건이만족되어있는경우에만인터럽트를트리거하는경우인터럽트의종류에상관없이인터럽트의응답시간은 4 개의클럭사이클내에이루어짐. 4 개의클럭사이클동안에현재수행중인프로그램의프로그램카운터 (Program Counter, PC) 로저장되고, 인터럽트벡터의주소가프로그램카운터에적재되어실제인터럽트처리프로그램이실행될수있도록준비함. 26
2.4 ATmega128 의메모리 프로그램메모리 내부에 128KB 의플래시메모리 ATmega128 는 8 비트마이크로컨트롤러이지만, 프로그램메모리는 16 비트구조로되어있음. 64K 16 비트의용량을가짐. 모든명령은 16 바이트또는 32 비트구조로각명령은프로그램메모리에서 1~2 개의번지를차지함. 프로그램메모리는부트프로그램영역과응용프로그램영역으로구성됨. SPI 통신방식을이용한 ISP 기능을가지고있어서사용자가작성한프로그램을쉽게쓰기가가능함. JTAG 에뮬레이터, 병렬프로그래밍을이용한프로그램쓰기도가능 27
2.4 ATmega128 의메모리 데이터메모리 쓰기 / 읽기가가능한메모리 최대 64K(0x0000-0xFFFF) 바이트의용량 (a) 일반모드 (b) 호환모드 28
2.4 ATmega128 의메모리 레지스터파일 0x0000-0x001F 영역으로실제로이부분은 SRAM 은아니지만메모리의주소영역을사용하고있다. I/O 레지스터 I/O 레지스터는 SRAM 과달리 ATmega128 에내장된 I/O 소자들을직접제어하는데사용 주소 0x0020-0x005F 의영역을사용하는 I/O 레지스터와주소 0x0060-0x00FF 의영역을사용하는확장 I/O 레지스터로구성 내부 SRAM 내부데이터메모리인 SRAM 은 0x0100-0x10FF 영역으로 4K 바이트 내부 SRAM 은프로그램에서각종사용자변수를저장하기위해사용되며, 스택영역으로사용되기도한다. 외부 SRAM 내부 SRAM 의용량이부족할경우, 외부에 0x1100 번지부터 0xFFFF 번지까지약 60K 바이트의 SRAM 을확장할수있다. 29
2.4 ATmega128 의메모리 EEPROM ATmega128 에는 4K 바이트의 EEPROM 메모리를제공 EEPROM 의쓰기 / 읽기는 I/O 레지스터를사용하여주소를지정하는방법으로가능 EEPROM 을액세스하는과정은매우번거로운부분이지만, 제어전용의시스템을구축할경우에유용하게활용됨. EEPROM 의제어 EEAR EECR EEDR 30
2.5 ATmega128 의외부메모리확장 외부확장메모리개요 ATmega128 의외부데이터영역은 0x1100-0xFFFF 번지의약 60K 바이트의영역 외부메모리영역은외부 SRAM 또는플래시메모리와 LCD 표시장치, A/D 및 D/A 변환기와같은외부 I/O 확장에사용외부데이터메모리영역의사용 인터페이스할소자의액세스시간에적합하도록소프트웨어로 0-3 개의웨이트사이클을설정할수있음. 외부데이터메모리영역을 2 개의섹터로분할할수있고, 이들각각에대해독립적으로웨이트사이클을설정할수있음. 16 비트의주소의상위바이트에있는 8 비트중에서필요한개수만을주소버스로사용할수있음. 데이터버스의신호들이동작할때전류소비량이감소되도록버스키퍼기능을설정하여사용할수있음. 31
2.5 ATmega162 의외부메모리확장 외부메모리인터페이스 AD7 AD0 : 다중화된데이터버스와하위 8 비트주소버스선 A15 A8 : 상위 8 비트주소버스선 ( 사용되는비트의수는조정이가능함 ) ALE : 다중화된데이터버스와주소버스를분리하기위한제어신호 RD : 외부데이터메모리읽기스트로브신호 WR : 외부데이터메모리읽기스트로브신호 32
2.5 ATmega128 의외부메모리확장 외부메모리인터페이스를위한레지스터의설정 MCU 제어레지스터 : MCUCR MCU의전체적인시스템기능을설정하는레지스터 외부데이터메모리영역과관련되는비트는 SRE, SRW10 비트이다 SRE (External SRAM /XMEM Enable) 비트 외부데이터메모리영역의액세스를가능하기위해사용 1 로세트되어있으면부데이터메모리영역의액세스를위한신호가외부로출력되고, 0 으로설정되면, 이신호들은기본기능인병렬 I/O 포트로동작 SRW10 (Wait State Select) 비트 외부데이터메모리영역을액세스할때부여하는웨이트사이클의수를지정하는데사용 33
2.5 ATmega128 의외부메모리확장 외부메모리제어레지스터 : XMCRA 메모리영역을분할하거나웨이트사이클을설정하는데사용하는레지스터 RL0 SRL2 비트와 SRW00, SRW01, SRW10 등의 6 비트는메모리확장에사용 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) 외부데이터메모리의하위섹터에해당하는영역의웨이트사이클을설정 34
2.5 ATmega128 의외부메모리확장 외부메모리제어레지스터 : XMCRB 버스키퍼기능을설정 외부데이터메모리어드레스의상위바이트중에서어디까지어드레스기능으로사용할것인지설정 XMBK(ExternMemory Bus-keeper Enable) 비트 1 로설정함으로써 AD7 AD0 신호선은버스키퍼기능이허가 버스키퍼기능이설정되면외부데이터메모리의 AD7 AD0 버스의신호가 3- 스테이트로되어야하는동안에이를이전의출력값을유지하도록하여전력소모를줄이는데기여함 XMM2~0(External Memory High Mask) 비트 포트 C 와기능을겸하고있는주소버스의상위바이트가어느부분까지주소버스신호로사용될지를설정하는기능 35
2.5 ATmega128 의외부메모리확장 내부풀업저항과버스키퍼 PA 포트내부에는풀업저항이내장되어있어해당포트에 1 을쓰면동작할가능성이있으므로, 슬립모드에서전력소모를줄이기위해서는이모드로들어가기전에해당포트에 0 을출력하여풀업저항이동작하지않도록해야함. 외부메모리인터페이스경우 XMCRB 레지스터의 XMBK 비트의제어를통해버스키퍼기능을가능 / 불가능여부를결정. XMBK=1 이면, 버스키퍼의기능이설정 ( 전력소비감소 ). 36
2.5 ATmega128 의외부메모리확장 외부메모리의활용및주소지정방법 2 개의섹터로구분가능한최대 60KByte 의외부메모리 각섹터에는각각독립적으로웨이트사이클을설정가능. 속도가비교적빠른 SRAM 의경우 : 웨이트를부가하지않고제어가능. 상대적으로동작속도가느린 I/O 소자의경우 적절한웨이트사이클을부여하여제어의유연성 을확보하기위함. 외부메모리를 SRL2 SRL0 비트를사용하여개의섹터로구분 하위섹터는 SRW01 SRW00 비트를사용하여사이클부여. 상위섹터는 SRW11 SRW10 비트를사용하여사이클부여. 37
2.5 ATmega128 의외부메모리확장 32KB 의외부메모리를갖는메모리맵 38
2.6 ATmega128 의기타하드웨어 Bootloader AVR 의플래시메모리내에는부트로더 (boot loader) 프로그램을내장하고있다. 부트로더의역할 : MCU 자체에서사용자응용프로그램을다운로드또는업로드하는기능과 AVR 의동작에필요한기본적인메보리보호기능과시스템설정기능을수행함. 기타하드웨어의종류 메모리보호와시스템설정. 시스템클럭시스템리셋전원관리및슬립모드워치독타이머 39
2.6 ATmega128 의기타하드웨어 메모리보호와시스템설정 메모리잠금비트퓨즈비트제품표시비트클럭소스내부 RC 오실레이터외부수정오실레이터기타클럭소스시스템클럭프리스케일러레지스터 40
2.6 ATmega128 의기타하드웨어 메모리잠금비트 메모리의보호기능을설정하는데사용 1 바이트중에 6 개의비트만사용 LB 모드 : PC 등을이용하여외부에서부트로더섹션과응용프로그램섹션등의플래시메모리와 EEPROM 에프로그래밍하는것을금지하도록설정하는보호모드 BLB0 와 BLB1 모드 : 각각플래시메모리내의부트로더프로그램과응용프로그램이실행되면서각자자기섹션이아닌다른섹션을액세스할때설정하는보호모드 비트이름비트기능기본값 7 1(unprogrammed) 6 1(unprogrammed) BLB12 5 Boot Lock Bit 1(unprogrammed) BLB11 4 Boot Lock Bit 1(unprogrammed) BLB02 3 Boot Lock Bit 1(unprogrammed) BLB01 2 Boot Lock Bit 1(unprogrammed) LB2 1 Lock Bit 1(unprogrammed) LB1 0 Lock Bit 1(unprogrammed) 41
2.6 ATmega128 의기타하드웨어 LB 모드 PC 등의외부프로그램에서플래시메모리를액세스할경우에제공되는보호기능 (LB2 와 LB1 비트에의해설정 ) 메모리잠금비트 LB 모드 LB2 LB1 보호기능 1 1 1 메모리잠금기능이없음 ( 기본설정 ) 2 1 0 3 0 0 플래시나 EEPROM 을병렬모드나 SPI/JTAG 직렬모드로프로그래밍하는것을금지시킴. 퓨즈비트또한프로그래밍이금지됨. 플래시나 EEPROM 을병렬모드나 SPI/JTAG 직렬모드로프로그래밍하거나검증 (verify) 하는것을모두금지함. 퓨즈비트또한프로그래밍이금지됨. 주의 : 잠금비트를프로그래밍하기전에퓨즈비트를프로그래밍한다. 42
2.6 ATmega 128 의기타하드웨어 BLB0 모드 부트로더프로그램이응용프로그램섹션을액세스하는것을보호하는기능 BLB02 와 BLB01 비트에의해설정 메모리잠금비트 BLB0 모드 BLB02 BLB01 1 1 1 보호기능 SPM 또는 LPM 명령을사용하여응용섹션을액세스하는데아무런제한이없음. 2 1 0 SPM 명령으로응용프로그램섹션에쓰기가금지됨. 3 0 0 4 0 1 SPM 명령으로응용프로그램섹션에쓰기가금지됨. 부트로더섹션에서실행되는 LPM 명령으로응용프로그램섹션의읽기가금지됨. 만약, 부트로더섹션에인터럽트벡터가위치한다면응용프로그램섹션이실행되는동안에모든인터럽트가금지됨. 부트로더섹션에서실행되는 LPM 명령으로응용프로그램섹션의읽기가금지됨. 만약, 부트로더섹션에인터럽트벡터가위치한다면응용프로그램섹션이실행되는동안에모든인터럽트가금지됨. 43
2.6 ATmega 128 의기타하드웨어 BLB1 모드 응용프로그램이부트로더섹션을액세스하는것을보호하는기능 BLB02 와 BLB01 비트에의해설정 메모리잠금비트 BLB1 모드 BLB12 BLB11 1 1 1 보호기능 SPM 또는 LPM 명령을사용하여부트로더섹션을액세스하는데아무런제한이없음. 2 1 0 SPM 명령으로부트로더섹션에쓰기가금지됨. 3 0 0 4 0 1 SPM 명령으로응용프로그램섹션에쓰기가금지됨. 응용프로그램섹션에서실행되는 LPM 명령으로부트로더섹션의읽기가금지됨. 만약, 응용프로그램섹션에인터럽트벡터가위치한다면부트로더섹션이실행되는동안에모든인터럽트가금지됨. 응용프로그램섹션에서실행되는 LPM 명령으로부트로더섹션의읽기가금지됨. 만약, 응용프로그램섹션에인터럽트벡터가위치한다면부트로더섹션이실행되는동안에모든인터럽트가금지됨. 44
2.6 ATmega128 의기타하드웨어 퓨즈비트 AVR 의기본적인시스템설정용으로사용 (3 바이트로구성 ) 확장퓨즈바이트 퓨즈상위바이트 퓨즈하위바이트 AVR 칩쓰기도구프로그램의칩삭제기능을수행하더라도퓨즈비트는영향을받지않음. 메모리잠금비트의 LB1 을사용하여퓨즈비트를변경할수없도록보호기능으로설정가능. 퓨즈비트를먼저설정하고메모리잠금비트는나중에설정하여야함. 45
2.6 ATmega128 의기타하드웨어 제 1 바이트 : 확장퓨즈바이트 ATmega128 의동작모드와 BOD 기능을설정하는데사용 비트이름 비트 기능 기본값 - 7-1(unprogrammed) - 6-1(unprogrammed) - 5-1(unprogrammed) - 4-1(unprogrammed) - 3-1(unprogrammed) - 2-1(unprogrammed) M103C 1 ATmega103호환모드동작 0(unprogrammed) WDTON 0 Watchdog Timer 동작허용 1(unprogrammed) 46
2.6 ATmega128 의기타하드웨어 제 2 바이트 : 퓨즈상위바이트 비트이름비트기능기본값 OCDEN 7 OCD 기능선택 1(unprogrammed, OCD disabled) JTAGEN 6 JTAG 기능선택 0(programmed, JTAG enabled) SPIEN 5 CKOPT EESAVE 3 BOOTSZ1 2 BOOTSZ0 1 SPI를통한직렬프로그래밍 0(programmed, SPI Prog. enabled) 기능선택 4 오실레이터옵션 ( 시스템클록참조 ) 1(unprogrammed) 칩삭제시에 EEPRPOM의내용을보존부트섹션크기선택 ( 표 2.21 참조 ) 부트섹션크기선택 ( 표 2.21 참조 ) 1(unprogrammed, EEPROM not preserved) 0(programmed) 0(programmed) BOOTRST 0 리셋벡터선택 1(unprogrammed) 47
2.6 ATmega128 의기타하드웨어 제 3 바이트 : 퓨즈하위바이트 비트이름비트기능기본값 BODLEVEL 7 BOD(Brown Out Detector) 트리거레벨을선택 1(programmed ) BODEN 6 BOD 기능사용허용 1(unprogrammed) SUT1 5 기동시간설정 1(unprogrammed) SUT0 4 기동시간설정 0(programmed ) CKSEL3 3 클럭소스설정 0(programmed ) CKSEL2 2 클럭소스설정 0(programmed ) CKSEL1 1 클럭소스설정 0(unprogrammed) CKSEL0 0 클럭소스설정 1(programmed ) 48
2.6 ATmega128 의기타하드웨어 제품표시바이트 ATmel 사에서출시되는모든마이크로컨트롤러에는소자의종류에따라 3 바이트의인식코드를내장하고있음. 0x00 번지 0x01 번지 0x02 번지 AVR 모델 0x98 (256KB 플래시 ) 0x97 (128KB 플래시 ) 0x96 (64KB 플래시 ) 0x01 0x02 0x01 0x02 0x03 0x02 0x08 ATmega2560 ATmega2561 ATmega103 ATmega128 ATmega1280 ATmega64 ATmega640 0x1E (Atmel 사의제품 ) 0x94 (16KB 플래시 ) 0x01 0x02 0x03 0x04 ATmega161 ATmega163 ATmega16 ATmega162 0x05 ATmega169 0x93 (8KB 플래시 ) 0x06 0x08 ATmega8515 ATmega8535 0x91 (2KB 플래시 ) 0x07 0x0A ATtiny28 ATtiny2813 49
2.6 ATmega128 의기타하드웨어 시스템클럭 CPU 클럭 AVR 코어에서사용하는클럭소스 일반목적레지스터파일 (General Purpose Register File), 상태레지스터와스택등을구동하는역할을함. CPU 클럭을멈추면 AVR 코어의일반동작및연산등을멈춤. I/O 클럭 타이머 / 카운터, SPI 와 USART 등의대부분의 I/O 모듈에서사용하는클럭소스 외부인터럽트는비동기논리에의해검출되므로 I/O 클럭이정지되어있는경우에도인터럽트를검출하여슬립모드에서벗어나도록하는기능으로사용될수있음. 플래시클럭 플래시메모리인터페이스동작에사용되며, 일반적으로플래시클럭은 CPU 클럭과동시에 ON/OFF 제어됨. 비동기타이머클럭 외부의 32 khz수정발진자에의해서비동기타이머 / 카운터가동작하도록공급됨. 이는마이크로컨트롤러가슬립모드에있을경우에도실시간으로타이머 / 카운터기능을동작시키기위함. 50
2.6 ATmega128 의기타하드웨어 클럭소스의선택 비트설정용 3 번째바이트인퓨즈하위바이트에있는 CKSEL3~0 비트에의해선택 클럭소스 CKSEL3~0 외부수정오실레이터 / 세라믹공짂기 1111 ~ 1010 외부저주파수정오실레이터 1001 외부 RC 오실레이터 1000 ~ 0101 Calibrated 내부 RC 오실레이터 0100 ~ 0001 외부클럭 0000 51
2.6 ATmega128 의기타하드웨어 내부 RC 오실레이터 1.0, 2.0, 4.0, 8.0MHz 의지정된클록중의하노로고정되어있어서 CKSEL3~0 비트를사용하여선택 ( 디폴트 = CKSEL3~0 비트가 0001 로설정, 1MHz ±3% 주파수로동작 ) 반드시 CKOPT = 1 로설정되어야하며 XTAL1, XTAL2 단자에는아무것도연결하지않아야함. 내부 RC 오실레이터에의해발생되는클록주파수는비교적부정확하므로이를 OSCCAL 레지스터를사용하여조정함. 오실레이터조정레지스터 (OSCCAL) 의비트구성 52
2.6 ATmega128 의기타하드웨어 CPU 기동시간 정확한주파수를위해클럭소스의선택과함께고려해야함 초기설정값은최대의지연시간을갖도록 SUT="10" 으로설정되어있음. RC 내부오실레이터가사용되는경우의 SUT 퓨즈비트에따라서결정됨. 내부 RC 오실레이터를사용할때의기동시간 SUT1~0 젂원차단및젂원젃감으로부터의기동시간 리셋의경우추가지연시간 사용이권장되는분야 00 6CK - BOD 허가 01 6CK 4.1ms 고속으로투입되는젂원 10 6CK 65ms 저속으로투입되는젂원 11 사용하지않음 53
2.6 ATmega128 의기타하드웨어 내부 RC 오실레이터의기능설정 클럭소스설정퓨즈비트의설정 내부 RC 오실레이터의주파수를미세조정을하여야한다면, OSCCAL 레지스터의값을변경함. OSCCAL 값 출력주파수에대한 % 값에서최저주파수 출력주파수에대한 % 값에서최고주파수 0x00 50% 100% 0x3F 75% 150% 0x7F 100% 200% 54
2.6 ATmega128 의기타하드웨어 외부수정오실레이터 오실레이터는 4 개의모드로동작 각각의모드는특정주파수에대해최적화됨. 세라믹공진기는일반적으로주파수가낮고주파수안정도가낮은응용분야에서사용 실제응용에서는일반적으로수정발진기를사용함. 수정발진기를사용할경우동작모드 CKOPT CKSEL3~0 주파수범위 (MHz) 수정발짂기를사용할경우의권장 C1 과 C2 의값 1 101 0.4 ~ 0.9 세라믹공짂기에서만사용하는모드 1 110 0.9 ~ 3.0 12 ~ 22pF 1 111 3.0 ~ 8.0 12 ~ 22pF 0 111 8.0 이상 12 ~ 22pF 55
2.6 ATmega128 의기타하드웨어 수정발진기동작모드에따른기동시간 CKSEL0 SUT1-0 기동시간 리셋의경우추가지연시간 0 00 258 CK 4.1 ms 0 01 258 CK 65 ms 0 10 1K CK - 0 11 1K CK 4.1 ms 1 00 1K CK 65 ms 1 01 16K CK - 1 10 16K CK 4.1 ms 1 11 16K CK 65 ms 사용이권장되는분야 세라믹공짂기고속으로투입되는젂원 세라믹공짂기저속으로투입되는젂원 세라믹공짂기 BOD 허가 세라믹공짂기고속으로투입되는젂원 세라믹공짂기저속으로투입되는젂원 수정발짂기 BOD 허가 수정발짂기고속으로투입되는젂원 수정발짂기저속으로투입되는젂원 56
2.6 ATmega128 의기타하드웨어 크리스탈분주제어레지스터 (XDIV) XDIV 를사용하여소스클록을 2~129 로나누어 CPU 와주변장치에공급할수있으며소비전력을절감하는데도유용함. 비트 7 의 XDIVEN(XTAL Divide Enable) 은소스클로그이분주를허용. 비트 6~0 의 XDIV6~XDIV0(XTAL Divide Select Bits) 은분주비를설정하는데사용됨. XDIV6~XDIV0 설정값을 d 라고하면공급되는클록주파수는다음과같이결정됨. 57
2.6 ATmega128 의기타하드웨어 시스템리셋 전원투입리셋 (Power-On Reset) 외부리셋 (External Reset) 워치독리셋 (Watchdog Reset) 저전압리셋 (Brown-out Reset) JTAG AVR 리셋 58
2.6 ATmega128 의기타하드웨어 리셋동작및전기적특성 전원투입리셋 : Vcc > 전원투입리셋의임계값 (V POT ) 이면, MCU 는리셋. 외부리셋 : RESET 핀이최소펄스폭 (1.5 μs ) 이상의 Low 레벨이지속되면 MCU 는리셋. 워치독리셋 : 워치독타이머에지정된주기이상이경과한경우 MCU 는리셋. 저전압 (Brown-out) 리셋 : Vcc < 저전압리셋임계전압 (V BOT ) 으면 MCU 는리셋. JTAG AVR 리셋 : JTAG 시스템에서리셋레지스터에 1 을저장시관련하드웨어가동작 -> MCU 가리셋. 59
2.6 ATmega128 의기타하드웨어 MCU 제어및상태레지스터 (MCUCSR) 리셋의원인에대한정보를플래그로저장하는레지스터 Bit 4 (JTRF) : JTAG 리셋플래그 - 전원투입리셋이나 1을기록할때리셋. Bit 3 (WDRF) : 워치독리셋플래그 - 워치독리셋이발생할경우, 전원투입리셋이나 1을기록할때리셋. Bit 2 (BORF) : 저전압리셋플래그 - 저전압리셋이발생할경우, 전원투입리셋이나 1을기록할때리셋. Bit 1 (EXTRF) : 외부리셋플래그 - 외부리셋이발생할경우, 전원투입리셋이나 1을기록할때리셋. Bit 0 (PORF) : 전원투입리셋플래그 - 전원투입리셋이발생할경우, 플래그에 1을기록할때리셋. 60
2.6 ATmega128 의기타하드웨어 전원투입리셋 ATmega162 로공급되는동작전원이전압레벨 (V POT ) 이하로내려갈때내부검출회로에의해서발생됨. MCU 에전원이투입될때 MCU 가자동으로리셋됨. RESET 단자가 V CC 에연결된경우의리셋동작 RESET 단자가외부리셋회로에연결된경우의리셋동작 61
2.6 ATmega128 의기타하드웨어 외부리셋 MCU 의외부에서 RESET 단자에 LOW 레벨의신호가입력되면동작함. RESET 단자가외부리셋신호 ( 펄스 ) 에연결된경우의리셋동작 62
2.6 ATmega128 의기타하드웨어 저전압검출 (Brown-out detection) 리셋 ATmega128 에는 V CC 레벨을감시하는저전압검출 (BrownoutDectection : BOD) 회로가내장. V BOT 이하의레벨로지정된최소시간 (2us) 이상동안지속되면 발생하는리셋 검출전압레벨은퓨즈비트 BODLEVEL 비트에따라 2.6V 또는 4.0V 로지정됨. BOD 기능은퓨즈비트의 BODEN 비트로동작을설정, 금지함 63
2.6 ATmega128 의기타하드웨어 BOD 회로 -> 저전압레벨검출값보다낮게지속될경우리셋동작수행 저전압레벨검출값보다낮게지속될경우리셋동작수행 BOD 회로는어느정도의히스테리시스폭을갖도록설계됨. -> V CC 의전압레벨을검출하는과정에서전압스파이크에의한오동작을줄이기위해 전압이감소 : V BOT- = V BOT- + V HYST- /2 이하로될때리셋 전압이증가 :V BOT+ = V BOT+ + V HYST+ /2 이상으로될때리셋이해제 BOD 리셋이해제되면지연카운터가동작하기시작 -> 타임아웃 -> 프로그램이처음부터다시시작. 기호파라메타 Min Typ Max 단위 V HYST BOD 히스테리시스 50 mv t BOD 저젂압검출리셋의최소펄스폭 2 μs 저전압검출히스테리시스의특성 저전압검출리셋의동작 64
2.6 ATmega128 의기타하드웨어 워치독리셋 워치독타임아웃이발생하면, 자체적으로 1 클럭사이클의짧은 WDT 타임아웃펄스를발생시켜리셋신호가발생하고, 시간지연카운터에의한일정시간이자연된후에리셋신호가종료됨. 위치독리셋의동작 65
2.6 ATmega128 의기타하드웨어 전원관리및슬립모드 슬립모드마이크로컨트롤러의내부에사용하지않는내장모듈의동작을정지시켜소비전력을절감하기위해사용되는동작모드 휴면 (idle) ADC 노이즈감쇄기 (ADC Noise Reduction) 전원차단 (Power-down) 전원절감 (Power-save) 대기 (Standby) 확장대기 (Extended standby) 슬립모드를사용하기위해서는 MCUCR 레지스터의 SE 비트가 1 로설정되고, SLEEP 명령이수행되어야함. 슬립모드의설정은 MCUCR 레지스터의 SM2~0 비트의설정에따라결정 66
2.6 ATmega128 의기타하드웨어 전원관리및슬립모드 슬립모드 : 사용하지않는내장모듈의동작을정지시켜소비전력을절감하기위해사용되는동작모드로 6 가지의슬립모드지원. ATmega128 에내장되어있는슬립모드 휴면 (idle) ADC 노이즈감쇄기 (ADC Noise Reduction) 전원차단 (Power-down) 전원절감 (Power-save) 대기 (Standby) 확장대기 (Extended standby) 슬립모드를사용 : MCUCR 레지스터의 SE = 1. 5 가지의슬립모드의결정. MCUCR 레지스터의 SM2~0 비트 67
2.6 ATmega128 의기타하드웨어 MCUCR 의 Bit 5 (SE) : 슬립허가비트 슬립명령실행될때, 슬립모드로들어가기위해 1 로설정해야함. 슬립모드로부터해제되면 0 으로클리어. MCUCR 의 Bit 2 (SM2), Bit 4(SM1),Bit 3(SM0) 에의해슬립모드선택 슬립모드의선택 SM2 SM1 SM0 슬립모드 0 0 0 휴면 0 0 1 ADC 노이즈감쇄기 0 1 0 젂원차단 0 1 1 젂원젃감 1 0 0 사용하지않음 (reserved) 1 0 1 사용하지않음 (reserved) 1 1 0 대기 (1) 1 1 1 확장대기 (1) 1) 대기모드와확장대기모드의경우에는외부수정발진기또는공진기를사용할때가능함 68
2.6 ATmega128 의기타하드웨어 슬립모드의동작요약 동작되는클럭오실레이터슬립모드로부터의해제방법 슬립모드 clkcpu clkflash clki/o clkadc clkasy 메인클럭 SPM/ 타이머0 INT7~0 TWI 타이머0 EEPROM 클록 Ready ADC 기타 I/O 휴면 x x x x x (2) x x x x x x ADC노이즈감쇄기 x x x x x (3) x x x x 젂원차단 x (3) x 젂원젃감 x (2) x (2) x (3) x x (2) 대기 (1) x x (3) x 확장대기 (1) x (2) x x (2) x (3) x x (2) 주 : 1. 외부수정발짂기또는공짂기가클럭소스로선택된경우 2. ASSR 레지스터의 AS0 비트가 1 로설정된경우 3. INT7~4 는레벨트리거모드일경우에만유ㅛ 69
2.6 ATmega128 의기타하드웨어 휴면모드 SM2-SM0 = 000, SLEEP 명령수행 휴면슬립모드로동작. 기본적으로 clk CPU 와 clk FLASH 은정지되고, 나머지모든클럭 (SPI, USART, 아날로그비교기, ADC, TWI, 타이머 / 카운터, 워치독, 외부인터럽트 ) 들은정상적으로동작외부인터럽트나타이머오버플로우, USART 송신완료인터럽트등에의해해제 ADC 노이즈감쇄기 SM2-SM0 = 001, 기본적으로 clk CPU 와 clk FLASH, clk I/O 은정지되고, 나머지모든클럭 (ADC, TWI, 타이머 / 카운터 0, 워치독, 외부인터럽트 ) 들은정상적으로동작 ADC 가인에이블되어있다면이모드로들어갈때변환이자동으로시작 전원차단모드 SM2-SM0 = 010, SLEEP 명령수행 전원차단모드로동작. 모든클럭을정지 동기식모듈은동작정지, 비동기식모듈만동작. 외부인터럽트와워치독은계속해서동작외부리셋, 워치독리셋, 저전압검출리셋, 외부인터럽트 INT2-INT0와핀변경인터럽트에의해서해제 70
2.6 ATmega128 의기타하드웨어 전원절감모드 SM2-SM0 비트 = 011, SLEEP 명령수행 전원차단 (Power-save) 모드로동작 clk ASY 클럭을제외한모든클럭을정지시키고 MCU 가비동기모듈에의해동작할경우에사용타이머 / 카운터 2 의클럭은 TOSC1 단자로입력되는외부오실레이터에비동기적으로동작 대기모드 SM2-SM0 비트 = 110, 외부수정발진기또는세라믹공진기가선택, SLEEP 명령수행 대기 (Standby) 모드로동작오실레이터가동작하고있으므로슬립모드에서깨어날때, 오실레이터의안정화시간이필요없기때문에 MCU 는 6 클럭사이클내에해제 확장대기모드 SM2-SM0 = 111, 외부수정발진기또는세라믹공진기가선택, SLEEP 명령 확장대기 (Extended standby) 모드. 오실레이터가동작하고있으므로슬립모드에서깨어날때, 오실레이터의안정화시간이필요없기때문에 MCU 는 6 클럭사이클내에해제 71
2.6 ATmega128 의기타하드웨어 최소의전력소모를위한고려 슬립모드사용시최소한의디바이스만동작하도록설정해야함. 다음아래의기능중사용하지않는것은모두배제시키는것이바람직하다. 아날로그비교기 저전압검출 내부전압기준 워치독타이머 포트핀 JTAG 인터페이스및내장디버그시스템 72
2.6 ATmega128 의기타하드웨어 워치독타이머 MCU R E S E T 오버플로우 워치독타이머 RESET 타이머클럭 주기적 MCU 를사용하는시스템이어떠한원인에의해무한루프에빠지거나비정상적인동작을하면자동으로시스템을리셋시켜다시정상적인 MCU 동작이이루어지도록하는기능 리셋이가능한타이머로구성 타이머의출력은오버플로우로서정해진시간이초과할경우에발생 워치독타이머가정상적으로동작할경우에는정해진시간 ( 시스템의오류라고생각되는시간의 2-3 배정도의시간으로설정함 ) 을주기로워치독타이머는계속초기화 정해진시간을초과할경우에오버플로우가발생하여 MCU 를리셋 73
2.6 ATmega128 의기타하드웨어 워치독타이머의구성 칩에내장된오실레이터로부터만들어진 1 MHz의클럭을사용 사용자가분주하여 8 가지클럭주기로변경할수있도록구성 워치독타이머는워치독리셋명령인 WDR 명령을실행하거나 MCU 리셋이발생하는경우에리셋. 워치독타이머에서오버플로우발생 -> 1 클럭주기의내부리셋신호발생 MCU 리셋. 74
2.6 ATmega128 의기타하드웨어 WDTCR -> 워치독타이머제어레지스터 (Watchdog Timer Control Register) Bit 4 (WDCE) : 워치독변경허가비트 (Watchdog Change Enable) WDCE = 1 : 워치독타이머의프리스케일러의값을변경하거나워치독기능을사용하지않도록설정한다는의미. WDE 비트가 1 로되어있을때만이비트는 1 로설정가능. WDCE 비트가 1 로설정되어있다가 4 사이클이지나면자동으로하드웨어에의해 WDCE 는 0 으로됨. Bit 3 (WDE) : 워치독허가비트 (Watchdog Enable) 워치독기능의사용여부를결정. WDE 비트가 1 이면워치독타이머가동작, WDE 비트가 0 이면워치독타이머는동작않음. WDCE 비트가 1 로설정이되어야만 WDE 비트를 0 으로변경가능. 75
2.6 ATmega128 의기타하드웨어 Bit 2-0 (WDP2-WDP0) : 워치독타이머프리스케일러비트 (Watchdog Timer Prescaler) 워치독타이머가허가되어있는경우 : 워치독타이머의프리스케일러의값을결정. 비트들의선택에따른워치독타이머의프리스케일러의설정비율과이에대한오버플로우발생시간을정하는비트. 워치독타이머의프리스케일러값에따른오버플로우발생시간 WDP2 WDP1 WDP0 위치독분주비 Vcc = 3V 에서의타임아웃 Vcc = 5V 에서의타임아웃 0 0 0 16K(16.384) 14.8 ms 14.0 ms 0 0 1 32K(32.768) 29.6 ms 28.1 ms 0 1 0 64K(65.536) 59.1 ms 56.2 ms 0 1 1 128K(131.072) 0.12 s 0.11 s 1 0 0 256K(262.144) 0.24 s 0.22 s 1 0 1 512K(524.288) 0.47 s 0.45 s 1 1 0 1,024K(1,0048.576) 0.95 s 0.9 s 1 1 1 2,048K(2,097.152) 1.9 s 1.8 s 76
2.6 ATmega128 의기타하드웨어 워치독타이머해제를위한절차 1 WDCE 와 WDE 비트를동시에 1 로설정한다. 워치독타이머의동작을해제하기전에이비트가 1 로설정되어있더라도반드시 WDE 는다시 1 로설정을하여야한다. 2 4 클럭사이클이내에 WDE 비트를 0 으로설정한다. 확장퓨즈바이트의 M161C 퓨즈비트와퓨즈상위바이트의 WDTON 퓨즈비트의설정에따라 3 가지의안전레벨선택가능 M161C WDTON 안젂레벨 WDT 초기상태 워치독해제방법 타임아웃변경방법 1 1 1 금지지정된처리순서지정된처리순서 1 0 2 허용항상허용지정된처리순서 0 1 0 금지지정된처리순서제한이없음 0 0 2 허용항상허용지정된처리순서 77
2.6 ATmega128 의기타하드웨어 안전레벨의동작 안전레벨 0 안전레벨 1 안전레벨 2 ATmega103 와의호완모드로서, M161C 은 0 으로 WDTON 은 1 로설정을한것이며, 워치독타이머는초기에기본적으로금지 워치독타이머의동작을허용하고, 오버플로우간격을변경하는데아무런제약이없는모드로, 지정된순서를따르지않고단순히 WDTCR 의해당비트를원하는값으로세팅하면된다. M161C 과 WDTON 을모두 1 로설정을한것이며, 워치독타이머는초기에기본적으로금지 워치독타이머의동작을허용하고, 오버플로우간격을변경하는데아무런제약이없는모드로, 앞에서설명한순서를따르지않고단순히 WDE 비트를 1 로설정하면된다. M161C 와는관계없이 WDTON 비트를 0 으로설정한것이며, 워치독타이머는초기에기본적으로금지 워치독타이머의동작을금지시킬수없으며, 오버플로우간격을변경가능하다. 78