02 ATmega AVR ATmega128 AVR 코어

Slides:



Advertisements
Similar presentations
Progress Report YoonMo Yeon
Advertisements

컴퓨터와 인터넷.
마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1
                                  9장 컴퓨터 기반 데이터 수집의 기초.
AVR_M4_232 User Guide
자바실험실 이동준 우리 곁으로 다가온 사물 컴퓨팅 자바실험실 이동준.
ATmega128의 A/D 컨버터 제어 Robotics_LAB 발표자 : 유 홍 선.
AVR - Chapter 11 황 지 연.
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
UNIT 15 Timer & Watch Dog 로봇 SW 교육원 조용수.
ATmega128 CH 1 Atmega 128 Board CodeVision.
임베디드 시스템.
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
AT MEGA 128 기초와 응용 I 기본적인 구조.
독립형 모션제어기 사양 - Catalog (optional) XMC-PO04-MOD
07. 디바이스 드라이버의 초기화와 종료 김진홍
제10강 중앙처리장치 1.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
“DC POWER SUPPLY의 소개”.
DK-128 ADC 실습 아이티즌 기술연구소
부트로더와 Self Programming
WinCE Device Driver 실습 #3
LCD 모듈의 특징 LCD 컨트롤러 내장으로 모든 디스플레이 기능을 명령어로 제어 8비트 혹은 4비트로 인터페이스
ATmega128의 구조 및 TOOL의 이해 Robotics_LAB 발표자 : 유 홍 선.
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
4. LAN의 배선체계 (3장. LAN: Local Area Network)
PSW : PROGRAM STATUS WORD
마이크로컨트롤러, 마이크로컨트롤러 보드 마이크로컨트롤러 보드 = 마이크로컨트롤러 +  마이크로컨트롤러 마이크로컨트롤러 보드.
ATmega128 FND 실습 휴먼네트웍스 기술연구소
ATmega128 기초와 응용 A/D 변환기.
DK-128 개발환경 설정 아이티즌 기술연구소 김태성 연구원
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
Microprocessor I/O Port & CLCD Noh Jin-Seok.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
플랫폼의 개념 클럭, 버스, 대역폭의 의미 64비트 PC
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
제품명 제품설명 제품규격 CPU: STM32F103VCT6-LQFP 100 Pin 256KB FLASH 48KB RAM
DK-128 FND 실습 아이티즌 기술연구소
오브젝트 순서회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
논리회로 설계 및 실험 5주차.
6 레지스터와 카운터.
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
6. 레지스터와 카운터.
제4강 처리장치 1.
13장 CTC and DMA Slide 1 (of 10).
ARM Development Suite v1.2
UNIT 25 SPI 로봇 SW 교육원 조용수.
ATmega128의 특징 아이티즌 기술연구소
AVR - Chapter 3 황 지 연.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
DK-128 개발환경 설정 아이티즌 기술연구소 김태성 연구원
DK-128 개발환경 설정 아이티즌 기술연구소
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
Ⅰ 전자기초 Ⅱ 디지털 논리회로 Ⅲ C언어 기초 Ⅳ AVR 마이크로 컨트롤러 Ⅴ 마이크로 컨트롤러 개발환경
UNIT 25 SPI 로봇 SW 교육원 조용수.
논리회로 설계 및 실험 4주차.
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
발표자 : 이지연 Programming Systems Lab.
AdcRead API 함수 분석 마이크로프로세서.
IO-Link 통신 기술 소개 산업 Ethernet 필드버스 게이트웨이 접속 IO-Link 마스터 IO-Link 통신
제품명 제품설명 제품규격 CPU: STM32F103VCT6-LQFP 100 Pin 256KB FLASH 48KB RAM
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
Presentation transcript:

02 ATmega128 2.1 2.2 2.3 2.4 2.5 2.6 AVR ATmega128 AVR 코어 지능형 모바일 로봇 1. 마이크로컨트롤러 1. 마이크로컨트롤러.wmv 2.1 AVR 2. 마이크로러컨트롤러 목차 화면 (Part 2 : 지능형 모바일 로봇 임베디드 프로세서) 2.2 ATmega128 2.3 AVR 코어 2.4 ATmega128 메모리 2.5 ATmega128 외부 메모리 인터페이스 2.6 ATmega128 기타 1장의 마이크로컨트롤러에 대해 설명하겠습니다. 1장의 구성은 1.1의 컴퓨터 시스템, 1.2의 마이크로프로세서의 종류, 1.3의 CISC대 RISC, 1.4의 메모리, 1.5의 기타로 구성되어 있습니다. 1장은 ATmega128을 배우기 전에 마이크로컨트롤러란 무엇인가, 마이크로프로세서 등에 관해 알아보고 기타 디지털 기초 지식에 대해 설명하도록 하겠습니다.

02 ATmega128 ATmega128 Atmel社에서 개발 출시하는 AVR 시리즈 중 하나인 8비트 마이크로컨트롤러 2장의 학습 내용 AVR 소개 ATmega128의 내부 구조

2.1 AVR AVR Atmel社에서 개발한 8비트 RISC 마이크로컨트롤러 지능형 모바일 로봇 1. 마이크로컨트롤러 1. 마이크로컨트롤러.wmv AVR Atmel社에서 개발한 8비트 RISC 마이크로컨트롤러 “Advanced Virtual Risc” 또는 “Alf-egil bogen & Vegard wollan’s advanced Risc” 의 약자 하버드 구조를 채택한 RISC 기반 설계로 고속의 명령어 처리 가능 플래쉬 메모리를 내장하여 ISP(In-System Programmi ng) 기능 지원 2. 마이크로러컨트롤러 본문 화면 (Part 2 : 지능형 모바일 로봇 임베디드 프로세서) ATmega128은 마이크로컨트롤러(Microcontroller) 칩입니다. 마이크로컨트롤러는기계나 장치를 제어하기 위해 사용하는 프로그래밍이 가능한 칩입니다. 마이크로컨트롤러가 어떠한 것인가를 다루기 위해 먼저 컴퓨터(Computer)에 대해 생각해보도록 하겠습니다. 일반적으로 컴퓨터란 PC, 노트북 등이 떠오르지만 어원으로 보면 “계산하는 장치”를 의미하는 것으로서 전자계산기, PMP, 네비게이션, 휴대폰 등 산술연산과 프로그래밍이 가능한 장치는 모두 컴퓨터에 해당됩니다.

2.1 AVR (1) AVR 패밀리 초창기에는 3개의 계열(tiny, classic, mega)계열으로 분류되었으나, classic 계열은 사장되었음 최신 AVR 패밀리는 www.atmel.com 참조 tiny 계열 “Atiny”로 시작되며, 초창기 4비트로 시작하였으나, 현재는 8비트로도 출시되며, 작은 핀과 최소의 기능 등으로 가격이 쌈. 대량으로 생산되는 간단한 응용분야에 적합 mega 계열 “ATmega”로 시작되며, 8비트 범용 마이크로컨트롤러 기능과 성능이 우수하여 활용도가 높음 아두이노 MCU로도 사용됨 xMEGA 계열 “ATxmega”로 시작되며, mega 계열의 기능을 더욱 업그레이드한 계열 32비트 AVR UC3 ARM 코어와 경쟁하기 위해 개발한 32비트 계열

2.1 AVR 기타 계열 CAN, USB, ZigBee, 배터리 관리용, 자동차용 등 기타 기능을 지원하는 AVR 계열들이 있음. (2) ISP ISP(In-System Programming)는 AVR 칩을 PCB 보드에 실장한 후 전원, 클럭 등의 최소한의 소자만으로 AVR 칩에 프로그래밍이 가능하도록 지원하는 기능 현재 많은 마이크로컨트롤러 칩에 지원하는 보편화된 기능

2.2 ATmega128 (1) ATmega128의 특징 및 내장기능 고 성능의 저 전력 8비트 마이크로컨트롤러 지능형 모바일 로봇 1. 마이크로컨트롤러 1. 마이크로컨트롤러.wmv (1) ATmega128의 특징 및 내장기능 고 성능의 저 전력 8비트 마이크로컨트롤러 진보된 RISC 구조 대부분 단일 클럭 사이클에서 실행되는 133개의 명령어 32개의 8비트 범용 레지스터 16MHz에서 16MIPS(Million Instruction Per Second) 처리 2 사이클에서 실행되는 곱셈기 프로그램 메모리와 데이터 메모리 10,000번까지 재 기입(rewrite)이 가능한 128KB의 ISP 방식의 프로그래머블 플래쉬 메모리 100,000번까지 재 기입이 가능한 4KB의 EEPROM 4KB의 SRAM 부트 코드 영역 소프트웨어 보호용 프로그래밍 락(Lock) 2. 마이크로러컨트롤러 본문 화면 (Part 2 : 지능형 모바일 로봇 임베디드 프로세서) ATmega128은 마이크로컨트롤러(Microcontroller) 칩입니다. 마이크로컨트롤러는기계나 장치를 제어하기 위해 사용하는 프로그래밍이 가능한 칩입니다. 마이크로컨트롤러가 어떠한 것인가를 다루기 위해 먼저 컴퓨터(Computer)에 대해 생각해보도록 하겠습니다. 일반적으로 컴퓨터란 PC, 노트북 등이 떠오르지만 어원으로 보면 “계산하는 장치”를 의미하는 것으로서 전자계산기, PMP, 네비게이션, 휴대폰 등 산술연산과 프로그래밍이 가능한 장치는 모두 컴퓨터에 해당됩니다.

주변 장치 7개의 I/O 포트(8비트 I/O 포트 A, B, C, D, E, F와 5비트 I/O 포트 G) 2.2 ATmega128 주변 장치 7개의 I/O 포트(8비트 I/O 포트 A, B, C, D, E, F와 5비트 I/O 포트 G) 프리스케일러와 출력 비교 모드를 가지는 2개의 8비트 타이머/카운터 프리스케일러, 출력 비교 모드와 입력 캡쳐 모드를 가지는 2개의 16비트 타이머/카운터 외부 오실레이터에 의한 실시간(real-time) 타이머 2개의 8비트 PWM 채널 2~16비트까지 조정 가능한 6개의 PWM 채널 8채녈의 10비트 A/D 컨버터(8개의 단일입력 채널, 7개의 차동입력 채널 및 1x, 10x, 200x의 이득을 가지는 2개의 차동입력 채널) 바이트 지향 TWI 2개의 USART 마스터/슬레이브 SPI 직렬 인터페이스 와치독 타이머 아날로그 비교기

JTAG(IEEE std. 1149.1 호환) 인터페이스 2.2 ATmega128 JTAG(IEEE std. 1149.1 호환) 인터페이스 JTAG 표준에 따른 Boundary-scan 온-칩 디버깅 지원 JTAG 인터페이스를 통해 플래쉬, EEPROM, 퓨즈 와 락 비트 설정 특수 기능 Power-on Reset과 Brown-out 검출기 외부 및 내부 인터럽트 소스 6개의 슬립 모드(Idle, ADC Noise Reduction, Power-save, Power-down, Standby 및 Extended Standby) 소프트웨어로 선택 가능한 클럭 주파수 퓨즈 비트로 ATmega103 호환 모드 선택 I/O 핀과 패키지 53개의 프로그래머블 I/O 포트 핀 64-lead TQFP 패키지 및 64-pad QFN/MLF 동작 전압 및 속도 ATmega128L : 2.7~5.5V, 0~8MHz ATmega128 : 4.5~5.5V, 0~16MHz

2.2 ATmega128 (2) ATmega128의 핀 기능 64개 핀으로 구성 패키지는 TQFP(Thin Quad Flat Package)와 MLF(Micro Lead Frame)

<표 2.1> ATmega128의 포트 핀 Vcc 21, 51 전원 GND 22, 53, 61 접지 PA7~PA0 핀 이름 핀 번호 기능 Vcc 21, 51 전원 GND 22, 53, 61 접지 PA7~PA0 44~51 포트 A PB7~PB0 10~17 포트 B PC7~PC0 35~42 포트 C PD7~PD0 25~32 포트 D PE7~PE0 2~9 포트 E PF7~PF0 54~61 포트 F PG4~PG0 18, 19, 33, 34, 43 포트 G RESET 20 리셋 XTAL1 XTAL2 24 23 오실레이터 입력 오실레이터 출력 AVCC AREF 64 62 A/D 컨버터 전원 A/D 컨버터 기준전압

Address Latch Enable, 포트 A에서 하위 어드레스 버스 가 출력될 때 ALE핀에서 ‘H’가 출력 2.2 ATmega128 핀 이름 핀 번호 기능 PEN 1 Programming Enable ALE 43 Address Latch Enable, 포트 A에서 하위 어드레스 버스 가 출력될 때 ALE핀에서 ‘H’가 출력 WR RD 33 34 Write, 외부 메모리에 데이터를 라이트할 때 ‘L’가 출력 Read, 외부 메모리에서 데이터를 리드할 때 ‘L’가 출력

2.2 ATmega128 (3) ATmega128의 내부 구조

2.3 AVR 코어 명령어 인출(fetch)하여 해독(decode) 구성 요소 프로그램 카운터 명령어 해독기 ALU 지능형 모바일 로봇 1. 마이크로컨트롤러 1. 마이크로컨트롤러.wmv 명령어 인출(fetch)하여 해독(decode) 구성 요소 프로그램 카운터 명령어 해독기 ALU 범용 레지스터 상태 레지스터 스택 포인터 SRAM, EEPROM 인터럽트 처리기 등 2. 마이크로러컨트롤러 본문 화면 (Part 2 : 지능형 모바일 로봇 임베디드 프로세서) ATmega128은 마이크로컨트롤러(Microcontroller) 칩입니다. 마이크로컨트롤러는기계나 장치를 제어하기 위해 사용하는 프로그래밍이 가능한 칩입니다. 마이크로컨트롤러가 어떠한 것인가를 다루기 위해 먼저 컴퓨터(Computer)에 대해 생각해보도록 하겠습니다. 일반적으로 컴퓨터란 PC, 노트북 등이 떠오르지만 어원으로 보면 “계산하는 장치”를 의미하는 것으로서 전자계산기, PMP, 네비게이션, 휴대폰 등 산술연산과 프로그래밍이 가능한 장치는 모두 컴퓨터에 해당됩니다.

(1) ALU(Arithmetic Logic Unit) 2.3 AVR 코어 (1) ALU(Arithmetic Logic Unit) 산술연산, 논리연산, 비트연산을 수행 ALU의 연산은 대부분 1 클럭 사이클에서 수행됨 범용 레지스터 32개의 8비트 범용 레지스터(R0~R31)

16비트 어드레스를 간접 지정하는 어드레스 포인터 2.3 AVR 코어 X, Y, Z 레지스터 데이터 메모리의 어드레스 포인터로 사용 16비트 어드레스를 간접 지정하는 어드레스 포인터 8비트 범용 레지스터 R0~R31 중 R26~R31를 2개씩 취하여 3개의 16비트 레지스터 X, Y, Z 레지스터로 사용

SREG(Status Register) : 상태 레지스터 ALU에서 가장 최근 실행된 산술연산 결과에 대한 상태를 나타냄 2.3 AVR 코어 SREG(Status Register) : 상태 레지스터 ALU에서 가장 최근 실행된 산술연산 결과에 대한 상태를 나타냄 인터럽트를 처리할 때 SREG의 값이 자동으로 저장, 복구되지 않으므로 사용자가 직접 저장 후 복구해야 함 I(Global Interrupt Enable) I=1 → 모든 인터럽트 인에이블 I=0 → 모든 인터럽트 디스에이블 T(Bit Copy Storage) BLD(Bit LoaD)와 BST(Bit STore) 명령으로 이 비트와 특정 레지스터의 한 비트 사이에 비트 복사를 할 수 있음

산술 연산에서 Half Carry/Half Borrow가 발생하면 H=1이 됨 S(Sign Bit) 2.3 AVR 코어 H(Half Carry Flag) 산술 연산에서 Half Carry/Half Borrow가 발생하면 H=1이 됨 S(Sign Bit) SREG의 N과 V의 XOR 결과 V(Two’s Complement Overflow Flag) 2의 보수 연산에서 오버플로우가 발생하면 V=1이 됨 N(Negative Flag) 산술연산이나 논리연산에서 결과값이 음수가 되면 N=1이 됨 Z(Zero Flag) 산술연산이나 논리연산에서 결과값이 0이 되면 Z=1이 됨 C(Carry Flag) 산술연산이나 논리연산에서 자리올림이 발생하면 C=1이 됨

데이터 메모리인 SRAM의 일부를 임시 데이터 저장 영역으로 할당하여 사용하는 메모리 2.3 AVR 코어 스택(Stack) 데이터 메모리인 SRAM의 일부를 임시 데이터 저장 영역으로 할당하여 사용하는 메모리 서브루틴의 호출(Call) 주소나 인터럽트 처리 루틴의 복귀 주소 등을 임시 저장 LIFO(Last-In First-Out) 방식 : 맨 나중에 저장한 데이터를 맨 처음 꺼내게 됨 스택 포인터(Stack Pointer : SP) 스택의 어드레스를 저장하는 레지스터가 스택 포인터(SP) SP는 항상 스택의 상단을 가르킴

RAMPZ(RAM Page Z Select Register) 2.3 AVR 코어 RAMPZ(RAM Page Z Select Register) ATmega128의 프로그램 메모리는 128KB, 어드레스 버스는 16비트 16비트 어드레스 엑세스 메모리는 64KB(≈216 ≈ 65536B) RAMPZ로 128B 프로그램 메모리를 페이지 0과 1로 구분하여 사용 (RAMPZ의 0번 비트로 지정) RAMPZ0=0 : $0000~$7FFF(하위 64KB) 사용, 페이지 0 RAMPZ0=1 : $8000~$FFFF(상위 64KB) 사용, 페이지 1

2.4 ATmega128 메모리 ATmega128은 프로그램 메모리로 플래시 메모리를 사용하고 데이터 메모리로 SRAM, EEPROM 또는 외부 메모리를 사용 (1) 프로그램 메모리 메모리를 가르키는 어드레스 버스는 16비트이므로 65536(≈216)개의 어드레스를 갖고 128KB(=64K×16비트) 메모리 구조를 갖음 SPI 시리얼 통신 방식을 이용한 ISP(In-System Programming) 기능으로 프로그램을 쉽게 플래쉬 메모리에 라이트할 수 있음 플래쉬 메모리는 10,000번까지 라이트 가능 JTAG 인터페이스 또는 병렬 프로그래밍 모드로 플래쉬 메모리에 라이트 가능

프로그램 메모리는 부트 프로그램 섹션(부트 로더 섹션)과 응용 프로그램 섹션으로 나뉨 2.4 ATmega128 메모리 프로그램 메모리는 부트 프로그램 섹션(부트 로더 섹션)과 응용 프로그램 섹션으로 나뉨

데이터 메모리 32개의 레지스터 파일 64개의 I/O 레지스터 160개의 확장 I/O 레지스터 4KB의 내부 SRAM 외부 데이터 메모리 EEPROM 별도의 레지스터로 엑세스

I/O 레지스터 ATmega128의 내장된 I/O 장치를 동작시키기 위해 사용되는 레지스터 주소 레지스터 기능 0x00(0x20) PINF 포트 F 입력 레지스터 0x01(0x21) PINE 포트 E 입력 레지스터 0x02(0x22) DDRE 포트 E 방향 레지스터 0x03(0x23) PORTE 포트 E 출력 레지스터 0x04(0x24) ADCL A/D 변환 결과 하위 레지스터 0x05(0x25) ADCH A/D 변환 결과 상위 레지스터 0x06(0x26) ADCSRA A/D 변환기 제어 및 상태 레지스터 0x07(0x27) ADMUX A/D 변환기 멀티플렉서 레지스터 0x08(0x28) ACSR 아날로그 비교기 제어 및 상태 레지스터 ⋮ 0x3E(0x5E) SPH 상위 스택 포인터 0x3F(0x5F) SREG 상태 레지스터

기존 AVR 모델에서 ATmega128에서 추가된 I/O 장치를 동작시키기 위해 사용되는 레지스터 주소 레지스터 기능 0x60 예약 0x61 DDRF 포트 F 방향 레지스터 0x62 PORTF 포트 F 출력 레지스터 0x63 PING 프트 F 입력 레지스터 0x64 DDRG 포트 G 방향 레지스터 0x65 PORTG 포트 G 출력 레지스터 ⋮ 0x9D UCSR1C USART1 제어 및 상태 레지스터 C 0xFF

4KB의 SRAM의 번지 값는 직접 지정하거나 X, Y, Z 레지스터를 사용하여 간접 지정하여 엑세스 2.4 ATmega128 메모리 SRAM 4KB의 SRAM의 번지 값는 직접 지정하거나 X, Y, Z 레지스터를 사용하여 간접 지정하여 엑세스 내부 SRAM을 엑세스하는데 2 클럭 사이클이 소요됨

ATmega128은 60KB(0x1100~0xFFFF 번지) 영역을 외부 데이터 메모리로 사용 외부 데이터 메모리로 SRAM이나 I/O 장치로 사용할 수 있음 EEPROM 100,000번까지 라이트할 수 있는 4KB의 EEPROM 내장 다른 메모리와 별개로 0x0000~0x0FFF 번지로 할당되어 있음 별도의 레지스터로 엑세스

2.5 ATmega128의 외부 메모리 인터페이스 ATmega128은 60KB(0x1100 ~0xFFFF)영역을 외부 SRAM이나 I/O 장치로 사용

0~3개의 웨이트 사이클(wait cycle)을 설정 빠른 인터페이스 소자는 0 웨이트 사이클로 설정 2.5 ATmega128의 외부 메모리 인터페이스 0~3개의 웨이트 사이클(wait cycle)을 설정 빠른 인터페이스 소자는 0 웨이트 사이클로 설정 느린 소자들은 적절한 웨이트 사이클을 부여 2개의 섹터(Lower sector, Upper sector)로 분할 각각에 대해 서로 다른 웨이트 사이클을 설정 16비트 어드레스의 상위 어드레스 8비트 중 필요한 비트 개수만큼만 어드레스로 설정 데이터 버스로 사용되는 포트 핀에서 전류 소비를 줄일 수 있는 버스 키퍼(Bus-keeper) 기능을 설정

ATmega128의 외부 메모리, 외부 I/O 인터페이스 외부 인터페이스 방법 AD0~AD7, A8~A15, ALE, RD , WR 을 사용하여 외부 메모리 또는 외부 I/O와 연결 AD0~AD7은 하위 어드레스 버스와 데이터 버스가 겸용으로 사용되는 핀이기 때문에 74x573과 같은 래치 IC를 사용하여 어드레스와 데이터를 분리시킴

외부 인터페이스에 사용되는 ATmega128의 핀 <표 2.4> 외부 인터페이스에 사용되는 신호 (핀) 신호 용도 AD0~AD7 하위 어드레스 버스와 데이터 버스 A8~A15 상위 어드레스 버스 ALE AD7~AD0가 하위 어드레스 버스로 사용될 때 ALE=’H’ 출력 RD 외부 메모리나 I/O에서 리드할 때 RD 핀에서 ‘L’ 출력 WR 외부 메모리나 I/O에서 라이트할 때 WR 핀에서 ‘L’ 출력

2.5 ATmega128의 외부 메모리 인터페이스 AVR의 AD0~AD7이 어드레스 버스일 때 ALE=’H’가 출력되어 G=’H’가 입력되고 AD0~AD7이 래치 IC의 출력 Q를 통해 SRAM의 어드레스 신호인 A[7:0](A0~A7)에 연결됨 AVR의 AD0~AD7이 데이스 버스일 때 ALE=’L’이 출력되어 G=’L’가 입력 되어 AD0~AD7이 래치 IC를 통과하지 못하고 SRAM의 데이터 핀인 D[7:0](D0~D7)에 연결됨

MCUCR(MCU Control Register) 외부 메모리 인터페이스 신호 액티브로 설정 2.5 ATmega128의 외부 메모리 인터페이스 MCUCR(MCU Control Register) 외부 메모리 인터페이스 신호 액티브로 설정 외부 메모리 영역의 웨이트 사이클 개수 설정 SRE(External SRAM/XMEM Enable) SRE=1 → A8~A15, AD0~AD7, ALE, RD , WR 외부 메모리 인터페이스 신호로 동작 SRE=0 → A8~A15, AD0~AD7, ALE, RD , WR I/O 포트로 동작 SRW10(External SRAM/XMEM Wait-state Select) XMCRA 레지스터의 SRW11 비트와 함께 외부 메모리의 웨이트 사이클 개수 설정

XMCRA(External Memory Control Register A) 외부 메모리 영역을 2개의 섹터로 분할 2.5 ATmega128의 외부 메모리 인터페이스 XMCRA(External Memory Control Register A) 외부 메모리 영역을 2개의 섹터로 분할 외부 메모리 영역의 웨이트 사이클 개수 설정 SRL2, SRL1, SRL0 (Wait-state Sector Limit) 외부 메모리 영역을 2개의 섹터로 분할하는 선택 비트들 2개의 분할 영역에 각각 다른 웨이트 사이클 개수를 지정함 SRW01, SRW00, SRW11 (Wait-state Select) MCUCR 레지스터의 SRW10과 함께 외부 메모리 영역의 분할된 섹터에 웨이트 개수를 설정하는 비트들 SRW01, SRW00은 Lower 섹터의 웨이트 개수 설정 비트 SRW11, SRW10은 Upper 섹터의 웨이트 개수 설정 비트

<표 2.6> 외부 메모리 섹터 영역 분할 2.5 ATmega128의 외부 메모리 인터페이스 <표 2.6> 외부 메모리 섹터 영역 분할 SRL2 SRL1 SRL0 섹터 영역 Lower sector = 없음, Upper sector = 0x1100~0xFFFF 1 Lower sector = 0x1100~0x1FFF, Upper sector = 0x2000~0xFFFF Lower sector = 0x1100~0x3FFF, Upper sector = 0x4000~0xFFFF Lower sector = 0x1100~0x5FFF, Upper sector = 0x6000~0xFFFF Lower sector = 0x1100~0x7FFF, Upper sector = 0x8000~0xFFFF Lower sector = 0x1100~0x9FFF, Upper sector = 0xA000~0xFFFF Lower sector = 0x1100~0xBFFF, Upper sector = 0xC000~0xFFFF Lower sector = 0x1100~0xDFFF, Upper sector = 0xE000~0xFFFF <표 2.7> 웨이트 사이클 개수 설정 : n=0(Lower sector), 1(Upper sector) SRWn1 SRWn0 웨이트 사이클 개수 1 리드/라이트 타이밍에서 1개 웨이트 리드/라이트 타이밍에서 2개 웨이트 리드/라이트 타이밍에서 2개 웨이트와 다음 어드레스 출력 전 1개 웨이트

XMCRB(External Memory Control Register B) 2.5 ATmega128의 외부 메모리 인터페이스 XMCRB(External Memory Control Register B) AD0~AD7의 버스 키퍼(bus keeper) 설정 외부 메모리에 사용할 어드레스 비트 설정 XMBK(eXternal Memory Bus-keeper Enable) 외부 메모리 버스 버스-키퍼 인에이블 비트 XMBK=1 → AD0~AD7에 마지막 출력 값이 계속 유지됨 XMM2, XMM1, XMM0(eXternal Memory high Mask) 외부 메모리의 상위 어드레스 A8~A15 중 사용할 어드레스 비트를 선택하는 비트들 A8~A15 중 어드레스로 선택하지 않는 비트는 I/O 포트로 사용

8(A8~A15) 없음 1 7(A8~A14) PC7 6(A8~A13) PC6~PC7 5(A8~A12) PC5~PC7 2.5 ATmega128의 외부 메모리 인터페이스 <표 2.8> 외부 메모리 인터페이스에서 사용하는 어드레스 비트 선택 XMM2 XMM1 XMM0 어드레스 비트 개수 (어드레스 핀 번호) I/O 포트로 사용되는 핀 8(A8~A15) 없음 1 7(A8~A14) PC7 6(A8~A13) PC6~PC7 5(A8~A12) PC5~PC7 4(A8~A11) PC4~PC7 3(A8~A10) PC3~PC7 2(A8~A9) PC2~PC7 0(없음) PC0~PC7

MCUCR과 XMCRA 레지스터로 1~3개의 웨이트 사이클 추가 2.5 ATmega128의 외부 메모리 인터페이스 외부 데이터 메모리 엑세스 타이밍 기본 외부 엑세스 3 클럭 사이클(T2~T4)에서 수행 MCUCR과 XMCRA 레지스터로 1~3개의 웨이트 사이클 추가

1개 웨이트가 주어진 외부 엑세스 2개 웨이트가 주어진 외부 엑세스 3개 웨이트가 주어진 외부 엑세스 2.5 ATmega128의 외부 메모리 인터페이스 1개 웨이트가 주어진 외부 엑세스 2개 웨이트가 주어진 외부 엑세스 3개 웨이트가 주어진 외부 엑세스

2.6 ATmega128 기타 (1) 메모리 보호와 시스템 설정 ATmega128의 기타 메모리 보호와 시스템 설정 슬립 모드 리셋 워치독 타이머 (1) 메모리 보호와 시스템 설정 ATmega128은 메모리 보호를 위해 1바이트의 메모리 잠금 비트(memory lock bit)와 시스템 설정용인 3바이트의 퓨즈 비트(fuse bit)를 가짐 메모리 보호 프로그램 메모리의 내용을 외부에서 리드하지 못하도록 하는 기능 외부에서 실수로 프로그램이 실행되는 것을 방지하는 기능

메모리 잠금(Lock) 비트 1 바이트로 된 비트들로서 프로그램 메모리 내용을 보호하기 위해 사용 메모리 잠금 비트의 초기값은 1(unprogrammed)로 설정됨 프로그램 메모리에 프로그램을 라이트하면 메모리 잠금 비트는 0(programmed)으로 설정 칩 이레이즈(chip erase) 명령이 수행되면 다시 1(unprogrammed)로 설정됨 <표 2.9> 메모리 잠금(Lock) 비트 비트 비트 이름 기능 기본값 7 - 6 5 BLB12 Boot Lock Bit 1(unprogrammed) 4 BLB11 3 BLB02 2 BLB01 1 LB2 Lock Bit LB1

플래시 메모리와 EEPROM에 대한 잠금 설정 2.6 ATmega128 기타 플래시 메모리와 EEPROM에 대한 잠금 설정 LB 모드는 외부에서 플래시 메모리(부트 로드 섹션과 응용 프로그램 섹션) 또는 EEPROM에 프로그래밍하는 것을 금지하도록 보호하는 모드 <표 2.10> LB 모드 : 플래시 메모리와 EEPROM에 대한 잠금(Lock) 설정 LB 모드 LB2 LB1 기능 1 Lock 설정 없음 2 플래시와 EEPROM을 패래럴 모드 또는 SPI/JTAG 시 리얼 모드로 프로그래밍 금지 퓨즈 비트 프로그래밍 금지 3 플래시와 EEPROM을 패래럴 모드 또는 SPI/JTAG 시 리얼 모드로 프로그래밍 및 Verify 금지

BLBO 모드는 부트 로드 프로그램이 응용 프로그램 섹션을 엑세스하는 것을 금지하도록 보호하는 모드 2.6 ATmega128 기타 BLBO 모드는 부트 로드 프로그램이 응용 프로그램 섹션을 엑세스하는 것을 금지하도록 보호하는 모드 <표 2.11> BLB0 모드 : 응용 프로그램 섹션에 대한 엑세스 보호 설정 BLB0 모드 BLB02 BLB01 기능 1 LPM/ELPM/SPM 명령으로 프로그램 메모리의 응용 프로그램 섹션을 엑세스하는데 제한이 없음 2 SPM 명령으로 프로그램 메모리의 응용 프로그램 섹션 라이트 금지 3 부트로더 섹션에서 LPM/ELPM 명령으로 프로그램 메 모리의 응용 프로그램 섹션 리드 금지 부트로더 섹션에 인터럽트 벡터가 위치한다면 응용 프 로그램 섹션이 실행되는 동안 모든 인터럽트 금지 4

BLB1 모드는 응용 프로그램이 부트 로더 섹션을 엑세스하는 것을 금지하도록 보호하는 모드 2.6 ATmega128 기타 BLB1 모드는 응용 프로그램이 부트 로더 섹션을 엑세스하는 것을 금지하도록 보호하는 모드 <표 2.12> BLB1 모드 : 부트 로더 섹션에 대한 엑세스 보호 설정 BLB1 모드 BLB12 BLB11 기능 1 LPM/ELPM/SPM 명령으로 프로그램 메모리의 부트로 더 섹션을 엑세스하는데 제한이 없음 2 SPM 명령으로 프로그램 메모리의 부트로더 섹션 라이 트 금지 3 응용프로그램 섹션에서 LPM/ELPM 명령으로 프로그 램 메모리의 부트로더 섹션 리드 금지 응용프로그램 섹션에 인터럽트 벡터가 위치한다면 부 트로더 섹션이 실행되는 동안 모든 인터럽트 금지 4

제 1 바이트 – Extended Fuse Byte 제 2 바이트 – Fuse High Byte 2.6 ATmega128 기타 퓨즈 비트 3 바이트로 구성된 시스템 설정 비트 제 1 바이트 – Extended Fuse Byte 제 2 바이트 – Fuse High Byte 제 3 바이트 – Fuse Low Byte 프로그램 하면 0(programmed)으로 설정 프로그램 하지 않으면 1(unprogrammed)로 설정 퓨즈 비트를 먼저 설정하고 메모리 록 비트는 나중에 설정 Chip erase 명령으로 퓨즈 비트는 바뀌지 않음 메모리 록 비트 중 LB1으로 퓨즈 비트를 잠금(lock) 시킬 수 있음

제 1 바이트 : Extended Fuse Byte 2.6 ATmega128 기타 제 1 바이트 : Extended Fuse Byte <표 2.13> Extended Fuse Byte의 비트 비트 비트 이름 기능 기본값 7 - 6 5 4 3 2 1 M103C ATmega103 호환 모드 동작 0(programmed) WDTON Watchdog 타이머 동작 허용 1(unprogrammed)

제 2 바이트 : Fuse High Byte <표 2.14> Fuse High Byte의 비트 2.6 ATmega128 기타 제 2 바이트 : Fuse High Byte <표 2.14> Fuse High Byte의 비트 비트 비트 이름 기능 기본값 7 OCDEN OCD(On-Chip Debug) 사용 가능 1(unprogrammed) 6 JTAGEN JTAG 사용 가능 0(programmed) 5 SPIEN SPI 시리얼 프로그래밍 가능 4 CKOPT 오실레이터 옵션 설정 3 EESAVE Chip erase시 EEROM 삭제하지 않고 보존 2 BOOTSZ1 Boot Size 선택 1 BOOTSZ0 BOOTRST Reset Vector 선택 <표 2.15> Boot Size 설정 BOOTSZ1 BOOTSZ0 Boot Size 응용 프로그램 섹 션 부트 로더 섹션 1 512워드(4페이지) 0x0000~0xFDFF 0xFE00~0xFFFF 1024워드(8페이지) 0x0000~0xFBFF 0xFC00~0xFFFF 2048워드(16페이지 ) 0x0000~0xF7FF 0xF800~0xFFFF 4096워드(32페이지 ) 0x0000~0xEFFF 0xF000~0xFFFF

제 3 바이트 : Fuse Low Byte <표 2.16> Fuse Low Byte의 비트 비트 비트 이름 기능 2.6 ATmega128 기타 제 3 바이트 : Fuse Low Byte <표 2.16> Fuse Low Byte의 비트 비트 비트 이름 기능 기본값 7 BODLEVEL BOD 트리거 레벨 선택 1(unprogrammed) 6 BODEN BOD 인에이블 5 SUT1 start-up 시간 선택 4 SUT0 0(programmed) 3 CKSEL3 클럭 소스 선택 0(programmed)) 2 CKSEL2 1 CKSEL1 CKSEL0

Atmel社의 마이크로컨트롤러는 모델명을 나타내는 3 바이트 코드를 0x0000~0x0002의 영역에 내장하고 있음 2.6 ATmega128 기타 Signature 바이트 Atmel社의 마이크로컨트롤러는 모델명을 나타내는 3 바이트 코드를 0x0000~0x0002의 영역에 내장하고 있음 <표 2.17> Signature 바이트 주소 저장된 값의 의미 ATmega128 0x0000 제조사 0x1E (Atmel社) 0x0001 내장 플래쉬 메모리 용량 0x97(128KB) 0x0002 마이크로컨트롤러 모델 0x02

(2) 시스템 클럭 5개의 내부 클럭 사용하지 않는 내부 분배 클럭을 차단함으로써 소비 전력을 감소시킬 수 있음 2.6 ATmega128 기타 (2) 시스템 클럭 5개의 내부 클럭 사용하지 않는 내부 분배 클럭을 차단함으로써 소비 전력을 감소시킬 수 있음 6가지의 클럭 발생 방법 클럭 소스는 5개

AVR 코어 동작(범용 레지스터, 상태 레지스터, 데이터 메모리, 스택 포인터 등)에 사용되는 클럭 2.6 ATmega128 기타 내부 클럭 CPU Clock : clkCPU AVR 코어 동작(범용 레지스터, 상태 레지스터, 데이터 메모리, 스택 포인터 등)에 사용되는 클럭 I/O Clock : clkI/O 입/출력 동작(타이머/카운터, SPI, USART 등)에 사용되는 클럭 Flash Clock : clkFLASH 플래시 메모리 인터페이스에 사용되는 클럭 clkCPU와 동시에 사용됨 비동기 타이머 Clock : clkASY 비동기 타이머/카운터에 사용되는 클럭 ADC Clock : clkADC ADC 모듈에서 사용되는 클럭

클럭 소스 <표 2.18> 클럭 소스 선택 클럭 주파수 CKSEL3~0 외부 크리스탈/리조네이터 오실레이터 2.6 ATmega128 기타 클럭 소스 <표 2.18> 클럭 소스 선택 클럭 주파수 CKSEL3~0 외부 크리스탈/리조네이터 오실레이터 1111 ~ 1010 외부 저주파 크리스탈 오실레이터 1001 외부 RC 오실레이터 8.0 ~ 12.0MHz 3.0 ~ 8.0 MHz 0.9 ~ 3.0 MHz 0.1 ~ 0.9 MHz 1000 0111 0110 0101 내부 RC 오실레이터 8.0 MHz 4.0 MHz 2.0 MHz 1.0 MHz 0100 0011 0010 0001 외부 클럭 0000

외부에 크리스탈이나 리조네이터(resonator)를 ATmega128에 XTAL1과 XTAL2에 연결 외부 크리스탈/리조네이터 오실레이터 CKSEL3~0=1111~1010로 설정 외부에 크리스탈이나 리조네이터(resonator)를 ATmega128에 XTAL1과 XTAL2에 연결 가장 일반적인 클럭 발생 방법

CKOPT=1 → 발진 회로의 출력 전압이 커져서 노이즈가 심한 환경이나 XTAL2로 다른 회로를 구동시킬 때 적합 2.6 ATmega128 기타 동작 모드 CKOPT=1 → 발진 회로의 출력 전압이 커져서 노이즈가 심한 환경이나 XTAL2로 다른 회로를 구동시킬 때 적합 CKOPT=0 → 발진 회로의 출력 전압이 작아져서 발진 주파수가 제한되지만 소비 전력이 감소 <표 2.19> 외부 크리스탈 오실레이터 사용 시 동작 모드 CKOPT CKSEL3~1 주파수 범위(MHz) C1과 C2(pF) 1 101 0.4 ~ 0.9 세라믹 리조네이터만 사용하는 모 드 110 0.9 ~ 3.0 12 ~ 22pF 111 3.0 ~ 8.0 101,110,111 1.0 ~ 16.0

CPU가 파워-다운 모드에서 복귀하는데 걸리는 시간 2.6 ATmega128 기타 start-up(기동) 시간 CKSEL0, SUT1~0로 선택 CPU가 파워-다운 모드에서 복귀하는데 걸리는 시간 정지 되었던 클럭이 CPU 명령을 실행하기 시작하는 직전까지 걸리는 지연 시간 <표 2.20> 외부 크리스탈 오실레이터 사용 시 start-up 시간 CKSEL0 SUT1~0 start-up 시간 리셋에서 추가 지연시간 사용분야 00 258 클럭 4.1 ms 세라믹 리조네이터 01 65.0 ms 10 1024 클럭 - 11 1 16384 클럭 크리스탈

외부에 32.748kHz의 저주파 크리스탈을 ATmega128에 XTAL1과 XTAL2에 연결 외부 저주파 크리스탈 오실레이터 CKSEL3~0=1001로 설정 외부에 32.748kHz의 저주파 크리스탈을 ATmega128에 XTAL1과 XTAL2에 연결 CKOPT=0 → 외부의 C1, C2를 사용하지 않고 내부의 캐패시터 36pF 사용 <표 2.21> 외부 저주파 크리스탈 오실레이터 사용 시 start-up SUT1~0 start-up 시간 리셋에서 추가 지연시간 사용분야 00 1024 클럭 4.1 ms Fast rising Power or BOD 01 65.0 ms Slowly rising Power 10 32,768 클럭 Stable frequency at start-up 11 -

정밀한 클럭 소스가 필요하지 않는 경우 외부에 RC 소자를 이용한 발진 회로 사용 f=1/(3RC), C>=22pF 2.6 ATmega128 기타 외부 RC 오실레이터 CKSEL3~0 = 1000~0101로 설정 정밀한 클럭 소스가 필요하지 않는 경우 외부에 RC 소자를 이용한 발진 회로 사용 f=1/(3RC), C>=22pF CKOPT=0 → 외부의 C를 사용하지 않고 내부의 36pF 사용

Fast rising power or BOD 2.6 ATmega128 기타 start-up 시간 선택 : SUT1~0으로 선택 <표 2.22> 외부 RC 오실레이터 사용 시 start-up 시간 SUT1~0 start-up 시간 리셋에서 추가 지연시간 사용분야 00 18 클럭 - BOD 01 4.1 ms Fast rising power 10 65.0 ms Slowly rising power 11 6 클럭 Fast rising power or BOD

CKOPT=0으로 하고 XTAL1, XTAL2에 연결하지 않음 2.6 ATmega128 기타 내부 RC 오실레이터 CKSEL3~0 = 0100~0001로 설정 CKOPT=0으로 하고 XTAL1, XTAL2에 연결하지 않음 <표 2.23> 내부 RC 오실레이터 사용 시 start-up 시간 SUT1~0 start-up 시간 리셋에서 추가 지연시간 사용분야 00 6 클럭 - BOD 01 4.1 ms Fast rising power 10 65.0 ms Slowly rising power 11

내부 RC 오실레이터에 의한 클럭은 부정확하므로 OSCCAL(Oscilla tor Calibration) 레지스터로 조정 2.6 ATmega128 기타 내부 RC 오실레이터에 의한 클럭은 부정확하므로 OSCCAL(Oscilla tor Calibration) 레지스터로 조정 <표 2.24> 내부 RC 오실레이터 사용 시 주파수 조정 범위 OSCCAL 최저 주파수 (공칭 주파수에 대한 %값) 0x00 50 100 0x7F 75 150 0xFF 200

외부에서 인가는 구형파 클럭을 사용할 경우 XTAL1에만 연결 클럭 주파수의 갑작스러운 변동이 없도록 주의해야함 2.6 ATmega128 기타 외부 클럭 CKSEL3~0 = 0000 으로 설정 외부에서 인가는 구형파 클럭을 사용할 경우 XTAL1에만 연결 클럭 주파수의 갑작스러운 변동이 없도록 주의해야함 CKOPT=0 XTAL1과 GND 사이에 내부의 36pF가 연결됨

start-up 시간 선택 : SUT1~0으로 선택 2.6 ATmega128 기타 start-up 시간 선택 : SUT1~0으로 선택 <표 2.25> 외부 클럭 사용 시 start-up 시간 SUT1~0 start-up 시간 리셋에서 추가 지연시간 사용분야 00 6 클럭 - BOD 01 4.1 ms Fast rising power 10 65.0 ms Slowly rising power 11

(3) 슬립 모드 AVR내에서 사용하지 않는 모듈에 전류를 차단하여 소비 전력을 줄이는 동작 2.6 ATmega128 기타 (3) 슬립 모드 AVR내에서 사용하지 않는 모듈에 전류를 차단하여 소비 전력을 줄이는 동작 ATmega128은 5가지 슬립 모드를 지원 <표 2.27> ATmega128의 슬립 모드별 동작 클럭, 슬립 모드 해제 소스 슬립 모드 동작되는 클럭 오실레이터 슬립 모드가 해제되는 인터럽트 소스 clkCPU clkFLASH clkIO clkADC clkASY 메인클럭 타이머 INT0~7 TWI 타이머0 EEROM SPM/ ADC I/O 기타 Idle  ADC Noise Reduction Power-down Power-save Standby Extended

MCUCR(MCU Control Register) 슬립 모드 설정과 슬립 모드로 진입을 지정 2.6 ATmega128 기타 MCUCR(MCU Control Register) 슬립 모드 설정과 슬립 모드로 진입을 지정 SE(Sleep Enable) SE=1 → 슬립 모드로 진입 SM2, SM1, SM0(Sleep Mode Select) 슬립 모드를 선택하는 비트 <표 2.26> MCUCR 레지스터에서 슬립 모드 설정 SM2 SM1 SM0 슬립 모드 Idle 1 ADC Noise Reduction Power-down Power-save - Standby Extended Standby

clkCPU, clkFLASH는 정지되고 다른 클럭은 동작 ADC noise reduction 모드 2.6 ATmega128 기타 Idle 모드 MCU는 정지되고 SPI, USART, 아날로그 비교기, ADC, TWI, 타이머/카운터, 인터럽트, 워치독 타이머, 인터럽트 등이 동작 clkCPU, clkFLASH는 정지되고 다른 클럭은 동작 ADC noise reduction 모드 MCU는 정지되고 A/D 컨버터, 외부 인터럽트, TWI, 타이머/카운터0, 워치독 타이머 등은 동작 clkIO, clkCPU, clkFLASH는 정지되고 다른 클럭은 동작 Power-down 모드 Power-down 모드에서는 외부 오실레이터는 정지하고 외부 인터럽트, TWI, 워치독 타이머 등은 동작 Power-save 모드 ASSR 레지스터의 AS0=1로 설정하여 타이머/카운터0이 TOSC1과 TOSC2 핀으로 입력되는 클럭에 의해 비동기 동작할 때 이 모드를 사용 이 모드에서 clkASY는 동작하고 나머지 클럭은 정지 Standby 모드 이 모드는 외부 크리스탈/리조네이트를 사용하는 경우만 사용

(4) 리셋 MCU의 모든 I/O 레지스터를 초기화하고 리셋 벡터로부터 프로그램이 시작하게 됨 2.6 ATmega128 기타 (4) 리셋 MCU의 모든 I/O 레지스터를 초기화하고 리셋 벡터로부터 프로그램이 시작하게 됨 MCU가 리셋된 후 해제되면 일정한 시간 지연이 이루어진 후에 시스템이 재 시작됨 Vcc의 일정한 레벨로 도달하는 시간을 확보하기 위해 워치독 타이머에 의해 시간 지연이 발생 시스템 클럭의 안정된 발진을 위한 시간 지연이 필요함 시간 지연은 퓨즈 비트의 SUT1~0, CKSEL0에 의해 설정 됨 ATmega128의 리셋은 5 종류가 있음 파워-온 리셋 → Vcc가 VPOT 이하일 때 MCU 리셋 외부 리셋 → RESET 핀에 최소한 1.5㎲ 이상의 Low 레벨 펄스가 입력되면 MCU 리셋 워치독 리셋 → 워치독 타이머에서 지정된 주기 이상에서 MCU 리셋 Brown-out 리셋 → Vcc가 VBOT 이하로 떨어져 2㎲이상 지속될 때 MCU 리셋 JTAG AVR 리셋 → JTAG 시스템에서 리셋 레지스터에 1을 저장시키고 관련 하드웨어가 동작되어 MCU 리셋

2.6 ATmega128 기타 리셋 로직

<표 2.28> 리셋 관련 전기적 심볼 특성 2.6 ATmega128 기타 <표 2.28> 리셋 관련 전기적 심볼 특성 심볼 파라미터 조건 최소 대표 최대 단위 VPOT Power-on Reset Threshold Voltage(rising) Voltage(falling) 1.4 1.3 2.3 V VRST RESET Pin Threshold Voltage 0.2 Vcc 0.8 Vcc tRST Minimum Pulse Width on RESET Pin 1.5 μs VBOT Brown-Out Reset Threshold Voltage BODLEVEL=1 BODLEVEL=0 2.4 3.7 2.6 4.0 2.9 4.5 tBOD Minimum Low Voltage Period for BOD 2 VHYST Brown-out Detector Hysteresis 100 mV

반대로 Vcc < VPOT 일 때는 시간 지연 없이 리셋 됨 2.6 ATmega128 기타 파워-온 리셋(POR) Vcc <= VPOT 일 때 발생하는 리셋으로 MCU의 Vcc가 VPOT이상이 된 후에도 일정 시간(tTOUT) 동안 리셋이 유지됨 반대로 Vcc < VPOT 일 때는 시간 지연 없이 리셋 됨

RESET 핀에 Low 신호(≤VRST)가 일정 시간(1.5㎲) 이상 인가될 때 발생 2.6 ATmega128 기타 외부 리셋 RESET 핀에 Low 신호(≤VRST)가 일정 시간(1.5㎲) 이상 인가될 때 발생 리셋 신호가 VRST 이상으로 될 때 tTOUT 동안 리셋이 유지됨

워치독 타임 아웃이 발생하면 1 클럭 사이클의 리셋 펄스가 발생되어 MCU 리셋 2.6 ATmega128 기타 워치독 리셋 워치독 타임 아웃이 발생하면 1 클럭 사이클의 리셋 펄스가 발생되어 MCU 리셋 리셋 펄스의 발생이 끝나더라도 tTOUT 동안 리셋이 유지됨

JTAG 시스템이 연결되어 리셋 레지스터에 1을 라이트하고 관련 하드웨어를 동작시킬 때 발생 2.6 ATmega128 기타 Brown-out 리셋 MCU 내부의 저전압 검출(Brown-Out Detection : BOD) 회로에서 Vcc <= VBOT인 상태가 2㎲ 이상일 때 발생하는 리셋 JTAG AVR 리셋 JTAG 시스템이 연결되어 리셋 레지스터에 1을 라이트하고 관련 하드웨어를 동작시킬 때 발생

MCUCSR(MCU Control and Status Register) MCU 리셋의 원인을 기록하는 레지스터 2.6 ATmega128 기타 MCUCSR(MCU Control and Status Register) MCU 리셋의 원인을 기록하는 레지스터 각각의 리셋이 발생하면 해당 비트가 1로 됨 파워-온 리셋이 발생하면 PORF=1이 되고 나머지 비트들은 클리어 JTRF(JTag Reset Flag) : JTAG 리셋이 발생하면 1이 됨 WDRF(WatchDog Reset Flag) : 워치독 리셋이 발생하면 1이 됨 BORF(Brown-Out Reset Flag) : Brown-out 리셋이 발생하면 1이 됨 EXTRF(EXTernal Reset Flag) : 외부 리셋이 발생하면 1이 됨 PORF(Power-On Reset Flag) : 파워-온 리셋이 발생하면 1이 됨

(5) 워치독 타이머 MCU가 무한 루프에 빠지거나 비정상적인 동작을 할 경우, 시스템을 리셋시켜 정상 동작을 되돌리는 기능 2.6 ATmega128 기타 (5) 워치독 타이머 MCU가 무한 루프에 빠지거나 비정상적인 동작을 할 경우, 시스템을 리셋시켜 정상 동작을 되돌리는 기능 MCU가 무한 루프에 빠지거나 비정상적인 동작을 하는지 감시하는 타이머 내장된 1MHz 클럭 사용하며, 8가지 클럭으로 분주 WDR(워치독 리셋) 명령이나 MCU 리셋에 의해 리셋 워치독 타이머 오버플로우가 발생하면 ATmega128을 리셋시킴

WDTCR(Watchdog Timer Control Register) 워치독 타이머 제어 레지스터 2.6 ATmega128 기타 WDTCR(Watchdog Timer Control Register) 워치독 타이머 제어 레지스터 WDCE(Watchdog Change Enable) WDCE=1이면 워치독 타이머를 클리어시키거나 프리스케일러를 변경 가능 WDCE가 1이 되면 4 사이클 후에 자동으로 0으로 클리어 안전 레벨 1과 2에서 WDCE=1일 때 프리스케일러를 변경 가능 WDE(Watchdog Enable) WDE=1이면 워치독 타이머가 허용 WDCE=1 일때만 WDE는 클리어시킬 수 있음

WDP2~WDP0(Watchdog Timer Prescaler) 워치독 타이머의 프리스케일러 설정 2.6 ATmega128 기타 WDP2~WDP0(Watchdog Timer Prescaler) 워치독 타이머의 프리스케일러 설정

워치독 타이머 동작을 해제하기 전에 WDE=1이더라도 반드시 다시 1로 설정해야 함 2.6 ATmega128 기타``` 워치독 타이머 해제 WDCE와 WDE 비트를 동시에 1로 셋 시킴 워치독 타이머 동작을 해제하기 전에 WDE=1이더라도 반드시 다시 1로 설정해야 함 4 사이클이내에 WDE를 0으로 클리어 시킴 안전 레벨 시스템이 정상 동작하고 있는 동안 워치독 타이머가 해제되거나 프리스케일러 값이 변경되어 워치독 타이머의 타임 아웃 간격이 바뀌는 것을 방지하기 위해 3가지 안전 레벨 선택

안전 레벨 0 안전 레벨 0은 ATmega103과 호환 모드로서 초기 상태는 워치독 타이머가 해제되어 있음 WDE=1로 하면 워치독 타이머가 허용됨 프리스케일러를 변경하여 타임 아웃 주기를 변경하는데는 아무런 제한이 없으나, 워치독 타이머를 해제하려면 앞의 ①, ②를 따라야 함 안전 레벨 1 안전 레벨 1의 초기 상태는 워치독 타이머가 해제되어 있음 WDE=1로 하여 워치독 타이머를 허용할 수 있음 타임 아웃 주기를 변경하거나 워치독 타이머를 해제하려면 앞의 ①, ②를 따라야 함 안전 레벨 2 안전 레벨 2는 초기에 워치독 타이머가 허용되고 워치독 타이머를 해제할 수 없음 타임 아웃 주기를 변경하려면 앞의 ①, ②를 따르고, WDP2~WDP0로 원하는 타임 아웃 주기를 설정해야 함