Microsoft PowerPoint - ch01-1 AVR의 특징 및 ATmega128의 내부구조1.pptx

Size: px
Start display at page:

Download "Microsoft PowerPoint - ch01-1 AVR의 특징 및 ATmega128의 내부구조1.pptx"

Transcription

1 핵심포인트를꽉짚어주는 AVR ATmega128 완전정복 제 1 장 AVR ATmega128 개요 [1/4] AVR 의특징및 ATmega128 의내부구조 1

2 CHARTER 01- AVR ATmaga128 개요 CHARTER 01 목차 1.1 AVR 이란? 1.2 AVR 의제품종류 1.3 AVR 의어플리케이션 1.4 ATmega128 의특징 1.5 ATmega128 의핀배열 1.6 ATmega128 의블록도 1.7 ATmega128 의내부구조 1.8 ATmega128 의메모리 1.9 시스템클록과클록옵션 1.10 인터럽트 (Interrupt) 1.11 외부인터럽트 1.12 전원관리와휴면모드 1.13 ATmega128 의타이머 / 카운터 ATmega128 의디지털입출력핀구조 1.15 리셋 (Reset) 1.16 SPI 통신인터페이스 1.17 TWI 통신인터페이스 1.18 USART 통신인터페이스 1.19 EEPROM 데이터메모리 1.20 ATmega128 의아날로그디지털변환 1

3 1.1 AVR 이란? Advanced d Virtual RISC 의약자이며 RISC 구조의마이크로컨트롤러 성능, 저전력 8 비트또는 32 비트마이크로컨트롤러 명령어가간단하고동작속도가빠르다 하바드구조 (Havard Architecture) 에의한 1 클록 1 명령 (Assembly-language) language) 처리 1MHz 의클록주파수에서 1MIPS 의처리속도로동작 다양한명령과쉬운구조를띄고있어마이크로컨트롤러를이해하는데쉽게접근할수있음. 가격이저렴하고응용하기쉬워산업시장에서도많이사용되어짐 32 개의범용레지스터와 RISC 구조의디자인은 C 언어를이용한개발에적합 내부에플래시프로그램메모리와 SRAM 데이터메모리를제공함으로서새로개발되는제품의크기를줄일수 있고, 제품의크기가줄면서원가절감에도도움이됨. ISP(In-System Programming) 다운로드기능지원 JTAG 을이용한디버깅용이 2

4 1.2 AVR의제품종류 Product Family 라는것은이들유닛들의용량이나성능등으로구분되어진다. (1) tinyavr 최대 8KBytes의플래시프로그램메모리와 512Bytes의 SRAM과 EEPROM 데이터메모리를가진범용마이크로컨트롤러계열로서표 1.2.1과같은종류가있다. (2) megaavr 곱셈기가내장된최대 256KBytes 의플래시메모리와 4KBytes 의 EEPROM 메모리 8KBytes 의 SRAM 을가진고성능마이크로컨트롤러계열 (3) xmegaavr 일반 8 비트마이크로컨트롤러에비해증진된성능과새로운주변회로를포함 DMA 와이벤트시스템을내장하여저전력 / 고성능시장에적합한마이크로컨트롤러계열 (4) Automotive AVR 자동차등에서사용하는 CAN 통신회로를내장 자동차에특성화된마이크로컨트롤러계열 3

5 1.3 AVR의어플리케이션 (1) 어플리케이션경향 차량용장치 LCD Driver CAN Networking USB 연결장치 모터제어 광제어 Automotive Lighting 배터리 /ZigBee 원격접속제어 (2) 패키징범위 PDIP : 40, 28, 20, 8 SOIC : 20, 14, 8 TQFP : 100, 64, 44, 32 QFN : 44, 32, 28, 20 BGA : 100 Smart Battery Remote Access Control Motor Control 4

6 1.3 AVR의어플리케이션 (3) AVR(8 비트마이크로컨트롤러 ) 이포함하는제어회로 AVR 은하나의칩안에여러회로가집적된형태이다. Flash (Program) EEPROM (Data) SRAM (Data) DIGITAL I/O USART ADC RTC WDT JTAG SPI TWI 8 Bit Timer 16 Bit Timer PWM 5

7 1.4 ATmega128 의특징 8 비트 AVR 마이크로컨트롤러의 megaavr 패밀리계열중하나의프로세서 64 핀으로구성되었으며, TQFP 형패키지의저전력 8 비트 CMOS 마이크로컨트롤러 ISP 다운로드에서 MOSI, MISO 가아닌 PDI, PDO 를사용한다. 데이터메모리를외부에최대 64kByte 까지확장할수있다. mega103 호환모드를가진다. 2 개의 UART 회로를가진다. RTC 기능을가진다. JTAG 을지원한다. 6

8 1.4 ATmega128 의특징 (1) 향상된 RISC 구조 32개의 8-비트범용레지스터및상태또는제어레지스터 133개의명령어 : 대부분 1사이클에처리되는명령어 16MHz의입력클록에서최대 16MIPS로동작 2사이클내에동작하는곱셈기내장 완전한정적동작지원 (2) 비휘발성프로그램메모리와데이터메모리 128KBytes 의 ISP(In System Programming) 이가능한플래시메모리 프로그램의실행코드저장영역 최소 10,000 번이상의쓰기및삭제보장 소프트웨어보안을위한프로그램메모리잠금기능 ISP(In System Programming) g) 를위한 SPI 인터페이스제공 4KBytes 의내부 SRAM 최대 64KBytes 까지의외부데이터메모리확장가능 4KBytes 의 EEPROM 비휘발성데이터저장영역 최소 100,000 번이상의쓰기및삭제보장 7

9 1.4 ATmega128 의특징 (3) 주변장치 8 비트타이머 / 카운터 (Timer/Counter) 2 개 ( 프리스케일러, 비교모드 ) 2 개의 8 비트 PWM 채널을가짐 16 비트타이머 / 카운터 (Timer/Counter) 2 개 ( 프리스케일러, 비교모드, 캡쳐모드 ) 2 에서 16 비트의해상도를가진프로그램가능한 6 개의 PWM 채널을가짐 16 비트와 8 비트타이머 / 카운터를결합한출력비교변조기 (Output Compare Modulator) 발진회로와분리된실시간카운터 (Real Time Counter) 8 채널의 10 비트 ADC(Analog to Digital Converter) 8 개의단극성입력채널 : 그라운드 (GND) 신호와입력신호 (Vi) 사이의전위차 7 개의차동입력채널 : 두입력신호의전위차 (Vp Vn) 2 개의프로그램가능한입력이득 (1, 10, 200 ) 을갖는채널 2 선식직렬인터페이스 (Two Wire Interface) 2 개의프로그램가능한 USART(Universal Synchronous Asynchronous Receiver and Transmitter) RS232 통신, RS485 통신등에적용할수있다. Master/Slave SPI 직렬인터페이스 (SPI Serial Interface) 내부발진회로와연결된프로그램가능한워치독타이머 (Watchdog Timer) 아날로그비교기 (Analog Comparator) 8

10 1.4 ATmega128 의특징 (4) 특별한마이크로컨트롤러기능 Power On 리셋기능 외부에별도의리셋회로없이전원이인가되면모든레지스터는초기화됨. 프로그램가능한 Brown Out 검출기능 2.7V 또는 4.3V 이하의전원전압을검출하는기능 프로그램으로조율이가능한내부 RC 발진회로 내부및외부인터럽트소스 6 가지의휴면모드 Idle, ADC Noise Reduction, Power-save, Power-down, Standby, Extended Standby 소프트웨어적으로선택가능한클록주파수 퓨즈비트로선택가능한 ATmega103 호환모드 전체풀업 (Pull-up) 저항해제기능 (5) 디지털입출력과패키지 53 개의프로그램가능한디지털입출력 64 핀의 TQFP 타입또는 64 핀의 Pad 를갖는 MLF 타입 9

11 1.4 ATmega128 의특징 (6) 동작전압 2.7V ~ 5.5V : ATmega128L 4.5V ~ 5.5V : ATmega V ~ 5.5V : ATmega128A (7) 동작속도 0 ~ 8MHz : ATmega128L 0 ~ 16MHz : ATmega128 0 ~ 16MHz : ATmega128A (8) 전력소비 ATmega128A 의경우 정상동작 : 약 17.5mA(5V 16MHz) 휴면모드 : 약 6.9mA(5V 16MHz) 전원차단모드 : 약 0.8uA(5V 25 Watchdog Timer Disable) 약 17uA(5V 25 Watchdog Timer Enable) 전원절감모드 : 약 11uA(5V 25 Watchdog Timer Disable) 대기모드 : 약 2mA(5V 16MHz, CKOPT programmed) 확장대기모드 : 약 2mA(5V 16MHz, CKOPT programmed) (9) 동작온도범위 -40 ~ +85 ( 산업용스펙 ) 10

12 1.5 ATmaga128의핀배열 모두 64 개의핀으로구성 8 비트병렬입출력할수있는 7 개포트 기타핀 포트 A ~ 포트 G 포트 : 53 개의디지털입출력핀 A~F : 8 비트, G:5 비트 모두특수한기능을공유하여사용하고있음 전원 (VCC, AVCC, GND) 클록 (XTAL1, XTAL2) 리셋 (RESET) 프로그램관련 (PEN) Pxn 핀이름표기법 x 는 A ~ G 사이의문자 n 은 0 ~ 7 사이의숫자 핀의특수기능표시 Pxn 이름옆의 ( ) 안에표기 2 개이상의특수기능은 / 로구분 부논리동작의핀은핀이름위에바 (-) 를표시 11

13 1.5 ATmaga128의핀배열 표 ATmega128 의핀기능 핀이름 핀번호 역할 VCC 21,52 디지털공급전압 GND 22,53,63 기준전압 (Ground) 포트 A (PA7~PA0) 44~51 포트 A는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 A는외부메모리제어에사용될경우어드레스 (A7~A0)/ 데이터버스 (D7~D0) 로멀티플렉스된다. 포트 B 포트 B는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 B는타이머 / 카운터의 PWM 출력및 SPI 통신등의특수기능이 10~17 (PB7~PB0) 있다. 포트 C (PC7~PC0) 35~42 포트 C는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 C는외부메모리제어에사용될경우상위어드레스 (A15~A8) 버스로동작한다. 포트 D 포트 D는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 D는타이머 / 카운터의 PWM 출력및카운터입력, 입력캡쳐트 25~32 (PD7~PD0) 리거입력, 외부인터럽트, USART, TWI 통시등의특수기능이있다. 포트 E (PE7~PE0) 포트 F (PF7~PF0) 포트 G (PG4~P0) 2~9 54~61 18,19,33, 34,43 포트 E는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 E는외부인터럽트, 타이머 / 카운터의 PWM 출력, 카운터입력, 입력캡쳐트리거입력, 아날로그비교기, USART, ISP 등의특수기능이있다. 포트 F는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 F는 A/D 컨버터의아날로그입력, JTAG 디버깅신호등의특수기능이있다. 포트 A는 8비트양방향 I/O 포트로서내부풀업저항이있다. 포트 G는TOSC1과 TOSC2 단자에 KHz의크리스탈을연결하여, RTC로이용할수있으며, 또한 ALE 및 WR, RD 등은외부 SRAM을제어하는신호로사용된다. RESET 20 외부리셋핀 XTAL1 24 반전발진증폭기및내부클록회로입력 XTAL2 23 반전발진증폭기로부터의출력 AVCC 64 ADC및포트F에대한공급전압 AREF 62 ADC 기준전압 PEN 1 저전압직렬프로그래밍모드에대한프로그래밍인에이블 12

14 1.6 ATmega128 의블록도 주요블록 AVR이대부분공통적으로갖는블록 프로그램카운터 (PC, Program Counter) 프로그램메모리 (Flash Program Memory) 프로그래밍로직 (Programming Logic) 명령레지스터 (Instruction Register) 명령해독기 (Instruction Decoder) EEPROM(EEPROM Data Memory) SRAM(SRAM Data Memory) 범용레지스터 (General Purpose Registers) ALU(Arithmetic ti Logic Unit) 상태레지스터 (SREG, Status Register) MCU 제어레지스터 (MCUCR, MCU Control Register) WDT(Watchdog Timer) 내부발진기 (Internal Oscillator) JTAG(Joint Test Action Group) 인터럽트유닛 (Interrupt Unit) 타이머 / 카운터 (Timer/Counter) 발진기 (Oscillator) 기타블록 마이크로컨트롤러가가지는일반적인블록 PORT(Digital Input/Output Port) ADC(Analog to Digital Converter) USART(Universal Synchronous and Asynchron ous serial Receiver and Transmitter) TWI(Two Wire Interface) SPI(Serial Peripheral Interface) 아날로그비교기 (Analog Comparator) 13

15 1.7 ATmega128 의내부구조 하바드구조 (Harvard architecture) 메모리와버스가프로그램과데이터로분리 퍼포먼스와패러럴리즘을최대한활용하기위함 하나의명령이처리되는동안 다음명령은프로그램메모리로부터프리 - 패치 모든클록사이클에서명령이처리되는것이가능 하바드구조와반대되는구조는폰 - 노이만 (J.von Neumann architecture) 구조이다. 14

16 1.7 ATmega128 의내부구조 프로그램메모리 (Program Memory) 시스템내에존재하며프로그래밍후다시프로그래밍이가능한플래시메모리 프로그램플래시메모리공간 = 부트프로그램섹션 + 어플리케이션프로그램섹션 전용락 (Lock) 비트를제어하여쓰기및읽기 / 쓰기형태로보호 SPM 명령으로어플리케이션플래시메모리섹션안에쓰기를하려할때 SPM 명령은반드시부트프로그램섹션에위치해야함. 15

17 1.7 ATmega128 의내부구조 산술논리연산장치 ALU(Arithmetic Logic Unit) 하나의클록사이클안에두피연산자 (operand) 는레지스터로부터출력되고, 처리하며, 결과를레지스터에저장 ALU 는레지스터간또는상수와레지스터간의산술및논리연산을지원 ALU 는단일레지스터만으로도산술및논리연산을처리할수있다. 산술연산후상태레지스터는처리결과를반영하여새롭게업데이트된다. 조건문, 분기명령, 명령호출, 직접어드레스접근등대부분 AVR 명령들은 16 비트로된하나의포맷을가지며, 프로그램메모리에는 16 비트또는 32 비트명령으로구성된다. 16

18 1.7 ATmega128 의내부구조 하나의클록사이클시간에빠르게접근할수있는 8 비트의 32 개의범용목적레지스터를포함하고, 이것은 ALU(Arithmetic Logic Unit) 와연동한다. 32 개의레지스터중 6 개는능률적인어드레스연산을가능케하는 데이터공간어드레싱을위한 3 개의 16 비트간접어드레스레지스터포인터로사용될수있다. X 레지스터 Y 레지스터 Z 레지스터 어드레스포인터중 Z 레지스터는 플래시프로그램메모리안의 룩업테이블을위한어드레스포인터로사용 17

19 1.7 ATmega128 의내부구조 인터럽트모듈은상태레지스터에전역인터럽트를허용하는비트 (SREG 레지스터의 7 번째 I 비트 ) 와제어레지스 터를가지고있다. 모든인터럽트는인터럽트벡터테이블안에분리된인터럽트벡터를가지고있으며, 인터럽트벡터의위치에따라우선순위를갖는다. 인터럽트의우선순위 낮은인터럽트벡터어드레스가더높은우선권을갖는다. 벡터번호벡터어드레스인터럽트소스인터럽트설명 1 $0000 RESET 외부핀, 전원인가리셋, 저전압검출리셋, 워치독리셋,JTAGAVR리셋 2 $0002 INT0 외부인터럽트 0 3 $0004 INT1 외부인터럽트 1 4 $0006 INT2 외부인터럽트 2 5 $0008 INT3 외부인터럽트 3 6 $000A INT4 외부인터럽트 4 7 $000C INT5 외부인터럽트 5 8 $000E INT6 외부인터럽트 6 9 $0010 INT7 외부인터럽트 7 10 $0012 TIMER2 COMP 타이머 / 카운터2 비교매치 31 $003C USART1 RX USART1, 수신완료 32 $003E USART1 UDRE USART1, 데이터레지스터비움 33 $0040 USART1 TX USART1, 송신완료 34 $0042 TWI TWI(I2C) 직렬인터페이스 35 $0044 SPM READY 저장프로그램메모리준비 18

20 1.7 ATmega128 의내부구조 스택 (Stack) 은범용데이터 SRAM 에할당됨 스택포인터는읽기및쓰기가가능 반드시리셋루틴에 SP(Stack Pointer) 를초기화해야함 리셋루틴 : 서브루틴이나인터럽트가실행되기전 데이터 SRAM 은 AVR 구조에서지원되는 5 가지다른어드레스지정방식을통하여쉽게접근됨 인터럽트요청이나서브루틴처리과정에서 복귀어드레스는스택 (Stack) 에저장됨 스택의크기는오직전체 SRAM 크기와 기사용된 SRAM 등으로제한됨 전체 SRAM = 기사용 SRAM + STACK 10FF 이터메모리 내부데 내부 SR RAM 영역 레지스터영역 Internal SRAM 4kByte (4096 X 8) 160 Ext I/O Registers 64 I/O Registers 32 Registers FF F 0020 일반적인 SP 초기값 = 10FF SP 최저값 = ~ 001F 19

21 1.7 ATmega128 의내부구조 (1) ALU(Arithmetic Logic Unit) 32 개의범용레지스터와직접연결 ALU 의기능 산술연산 논리연산 비트연산 덧셈, 뺄셈, 곱셈, +1, -1, 2 의보수등의연산 AND, OR, XOR, NOT 등의연산 시프트, 논리곱, 논리합등의연산 레지스터사이의연산, 레지스터와상수와의연산은대부분한번의시스템클록으로수행 곱셈의경우 2 개의시스템클록에동작. 20

22 1.7 ATmega128 의내부구조 (2) 상태레지스터 (Status Register) SREG(Status Register) 산술연산명령이실행된이후의가장최근의결과를반영 연산결과는조건처리명령등에서프로그램의흐름을제어하는데사용 인터럽트서브루틴에진입하거나복귀할때자동으로저장되거나복구되지않음 인터럽트제어시상태레지스터는반드시소프트웨어에서제어해야함 SREG 는 ALU 의모든연산에따라최신값으로갱신 어셈블리어명령테이블을보고참조 21

23 1.7 ATmega128 의내부구조 -Bit 7 -> I : 전역인터럽트인에블 전역인터럽트활성화 (Global Interrupt Enable) 비트 인터럽트를활성화 = 1 로세트 인터럽트를비활성화 = 0 으로클리어 CLI 또는 SBI 어셈블리어명령을통해제어될수있음 -Bit 6 -> T: 비트복사영역 비트복사명령 BST(Bit STore), BLD(Bit LoaD) 에사용 BST 명령에의해목적지 (destination) 로동작, 다른레지스터의비트값이여기로복사됨 BLD 명령에의해공급지 (source) 로동작, 이비트의값이다른레지스터의비트로복사됨 - Bit 5 -> H : Half 캐리플래그 산술연산에서보조캐리가발생한상태를나타냄 BCD 연산에유용하게사용되는플래그비트 - Bit 4 -> S : 부호비트, S=N V 플래그 N( 음수플래그 ) 과플래그 V(2의보수연산의오버플로우플래그 ) 를 XOR한결과값 부호가있는정수와부호가없는정수의크기를비교할때사용 22

24 1.7 ATmega128 의내부구조 - Bit 3 -> V : 2 의보수오버플로우플래그 2 의보수연산에서오버프로우가발생하면논리 1 로설정됨 - Bit 2 -> N : 음수플래그 산술연산이나논리연산의결과가음수가되었을때논리 1 로설정됨 - Bit 1 -> Z : 0 플래그 산술연산이나논리연산의결과가 0 이되었을때논리 1 로설정됨 - Bit 0 -> C : 캐리플래그 산술연산이나논리연산의결과에서자리올림이발생했을때논리 1 로설정됨 감산에서는자리내림을나타냄 23

25 1.7 ATmega128 의내부구조 (3) 범용레지스터 8 비트로구성된 32 개의범용레지스터 사용자메모리의처음 32 개영역에배치됨 R26 ~ R31 은 X, Y, Z 포인터레지스터로사용 데이터영역의 16 비트간접어드레스지정방식에사용됨 Z 포인터레지스터는 128KBytes 의프로그램메모리공간을간접어드레싱또는호출시사용되기도함 범용레지스터의명령을처리하기위한입출력구조지원 하나의 8 비트출력오퍼랜드와하나의 8 비트결과입력 두개의 8 비트출력오퍼랜드와하나의 8 비트결과입력 두개의 8 비트출력오퍼랜드와하나의 16 비트결과입력 하나의 16 비트출력오퍼랜드와하나의 16 비트출력입력 24

26 1.7 ATmega128 의내부구조 (4) 스택포인터 (Stack Pointer) 임시데이터의저장 지역변수의저장 인터럽트와서브루틴콜이후에복귀하기위한어드레스를저장 스택포인터는초기화시스택의최대포인트를가리키도록한다. 스택포인터는상위메모리영역에서하위메모리영역으로향하도록동작하는것을유념해야한다. 스택포인터의초기값은적어도 0x100 이상으로설정되어야한다. Mega103 호환모드에서는최소 0x60 이상으로설정되어야한다. 25

27 1.7 ATmega128 의내부구조 (5) RAM Page Z 선택레지스터 - Bit 7:1 -> Reserved 비트 예약된비트로읽게되면항상 0 으로읽어진다. - Bit 0 -> RAMPZ0 : Extended d RAM Page Z-pointer RAMPZ 레지스터는 64KBytes 의 RAM Page 를사용할때 Z 포인터에의해접근한다. RAMPZ0 = 0 : 프로그램메모리어드레스 $0000 ~ $7FFF ( 하위 64KBytes) 를 ELPM/SPM 명령으로접근한다. RAMPZ0 = 1 : 프로그램메모리어드레스 $8000 ~ $FFFF ( 상위 64KBytes) 를 ELPM/SPM 명령으로접근한다. 26

28 1.7 ATmega128 의내부구조 (6) 명령처리시간 칩에의해선택된클록이 CPU Core 와직접연결되어 CPU 클록으로구동됨 위그림 : 하바드구조에의해가능하게된명령패치와명령실행의평행실행개념 기능, 클록, 전력등을비용과비교하여장점을가짐 1MHz 의클록으로 1MIPS 의성능을얻는파이프라인의기본기념 아래그림 : ALU 의동작사이클 한사이클동안 ALU 는 2 개의레지스터를오퍼랜드로사용하여실행되고결과는정해진레지스터에저장 27

29 1.7 ATmega128 의내부구조 (7) 리셋 (Reset) 과인터럽트핸들링 (interrupt Handing) 35 종의각기다른인터럽트소스제공 프로그램메모리영역에분리된리셋벡터와프로그램벡터를가짐 어플리케이션섹션과부트섹션의시작번지에벡터가있음 MCUCR.IVSEL = 1 이면인터럽트벡터는부트섹션에서시작 퓨즈비트의 BOOTRST 비트가 Program 되면리셋벡터는부트섹션에서시작 낮은어드레스벡터를가지는인터럽트의우선순위가높은우선순위를가짐 리셋벡터를제외하고, 가장높은우선순위의인터럽트벡터는외부인터럽트 0(INT0) 의벡터임 모든인터럽트는전역인터럽트허용과개별인터럽트허용이되어야사용할수있음 인터럽트발생시서브루틴실행중에 SREG.I = 0 으로클리어됨 이때모든인터럽트는금지된다. RETI 명령이실행되면자동으로 SREG.I = 1 로세트된다. 소프트웨어에의해 SREG.I = 1 이되면인터럽트는다시허용된다. 인터럽트서브루틴은 RETI 어셈블리어명령을만나면동작을완료하고원래위치로복귀함 28

30 1.7 ATmega128 의내부구조 에지트리거타입인터럽트 에지에서인터럽트플래그를세트하는인터럽트 전역인터럽트허용 + 개별인터럽트허용의경우 프로그램카운터는인터럽트의수행을위해인터럽트벡터로유도된다. 이때하드웨어적으로인터럽트플래그는 0 으로클리어된다. 개별인터럽트가허용되지않은경우 인터럽트발생시인터럽트플래그를세트하고, 개별인터럽트가허용될때까지기억한다. 개별인터럽트가허용되고, 전역인터럽트도허용되면우선순위에의해실행된다. 전역인터럽트가허용되지않은경우 인터럽트발생시관련한인터럽트플래그는세트되고, 전역인터럽트가허용될때까지기억한다. 전역인터럽트가허용되면우선순위에의해실행된다. 소프트웨어적으로인터럽트플래그를클리어하기위해서는플래그에 1 을쓰면된다. 레벨타입인터럽트 조건을만족하는한계속해서발생하는인터럽트 인터럽트플래그를필요로하지않는다. 인터럽트를허용하기전에인터럽트조건이없어지면인터럽트는발생하지않음 인터럽트에서빠져나가기전대기중인인터럽트가존재할경우 메인프로그램으로복귀하여하나이상의명령을수행한후인터럽트를수행한다. 상태레지스터는자동으로저장되거나복구되지않는것을유념해야한다. 소프트웨어에의한저장및복구프로그램요구 29

31 1.7 ATmega128 의내부구조 인터럽트동작타이밍 외부인터럽트 0 의예 프로그램카운터 PC = 99 PC = 100 프로그램메모리인터럽트서브루틴 타이밍설명 프로그램메모리메인프로그램 PC = 500 PC = 500+x PC=101 인터럽트 서브루틴으로이동... INT0 인터럽트서브루틴... 메인프로그램으로이동 메인프로그램... 30

32 핵심포인트를꽉짚어주는 AVR ATmega128 완전정복 제 1 장 AVR ATmega128 개요 [2/4] ATmega128 의내부구조 2

33 CHARTER 01- AVR ATmaga128 개요 CHARTER 01 목차 1.1 AVR 이란? 1.2 AVR 의제품종류 1.3 AVR 의어플리케이션 1.4 ATmega128 의특징 1.5 ATmega128 의핀배열 1.6 ATmega128 의블록도 1.7 ATmega128 의내부구조 1.8 ATmega128 의메모리 1.9 시스템클록과클록옵션 1.10 인터럽트 (Interrupt) 1.11 외부인터럽트 1.12 전원관리와휴면모드 1.13 ATmega128 의타이머 / 카운터 ATmega128 의디지털입출력핀구조 1.15 리셋 (Reset) 1.16 SPI 통신인터페이스 1.17 TWI 통신인터페이스 1.18 USART 통신인터페이스 1.19 EEPROM 데이터메모리 1.20 ATmega128 의아날로그디지털변환 1

34 1.8 ATmega128 의메모리 프로그램메모리 전체용량 : 128kByte 128 kbyte = Application Flash Section + Boot Flash Section 64 kbyte X 16 bit 의구조 128 kbyte 의공간을접근하기위해 PC( 프로그램카운터 ) 16 비트와 RAMPZ 비트를같이사용 mega 계열의경우부품번호의숫자가플래시메모리의크기를나타냄 mega128 : 128kByte mega64 : 64kByte mega32 : 32kByte mega8 : 8kByte ISP(In System Programming) 이가능 Universal Programmer( 일명롬라이터 ) 없이 LPT, 232 포트제어및 USB 통신으로프로그램을다운로드하는기능 USB ISP의경우 STK500 or STK600 통신프로토콜사용 10,000 번의쓰기 / 삭제가보장됨 USB COM LPT 2

35 1.8 ATmega128 의메모리 데이터메모리 - SRAM 내부 SRAM 용량 mega128 일반모드 : 4 kbyte (4096 Byte) mega103 호환모드 : 4 kbyte (4000 Byte) mega128 일반모드 meg103 호환모드 내부 + 외부 SRAM 용량 : 총 64 Kbyte (65536 Byte) 선택에의해외부 SRAM을사용할수있다.(MCUCR.SRE = 1) 외부메모리는사용되는내부메모리의다음주소부터사용할수있다. mega128 일반모드 용량 : = Byte (0xEF00 Byte) 시작주소 : 4352 번지 ( 0x1100 Address) mega103 호환모드 용량 : = Byte (0xF000 Byte) 시작주소 : 4096 번지 (0x1000 Address) 참고 ) mega128 일반모드 : 4352 개의내부데이터메모리» 32개범용레지스터 + 64개 I/O 레지스터 + 160개확장 I/O 레지스터 개내부 SRAM mega103 일반모드 : 4096 개의내부데이터메모리» 32개범용레지스터 + 64개 I/O 레지스터 개내부 SRAM 3

36 1.8 ATmega128 의메모리 데이터메모리 - SRAM 64 개의 I/O 레지스터의접근 IN, OUT 어셈블리어명령만을사용 160 개의확장 I/O 레지스터의접근 ST/STS/STD, LD/LDS/LDD 명령만을사용 mega103 호환모드에서는확장 I/O 레지스터가존재하지않음 접근방법동일 내부메모리의접근 ST/STS/STD, LD/LDS/LDD 명령만을사용 외부메모리의접근 MCUCR 레지스터의 SRE 비트가 1 일때접근가능 ST/STS/STD, LD/LDS/LDD 명령만을사용 내부데이터메모리공간을초과할때외부데이터메모리에접근 내부메모리접근시 PG0, PG1 에할당된외부메모리읽기및쓰기 스트로브신호는사용되지않는다. 외부메모리접근시내부메모리접근때보다 1 클록사이클이추가된다. 스택 (STACK) 을내부또는외부 SRAM 에놓을수있으며, PUSH, POP 명령으로수행가능하다. 4

37 1.8 ATmega128 의메모리 외부메모리인터페이스 외부메모리를사용하기위해서는? MCUCR 레지스터의 SRE(External SRAM/XMEM Enable) 비트가활성화되어야함 (MCUCR.SRE = 1) 내부레지스터와 4kByte 의 SRAM 영역까지는내부에서접근하며, 그이상은외부에서접근함 0x1100 ~ 0xFFFF 번지의약 60kByte 가외부데이터메모리영역임. 외부메모리 64kByte 영역중약 4kByte 는내부메모리와겹침. A, C, G 포트는외부메모리접근을위한버스로동작한다. 그림 Memory Configuration A 는 ATmega128 의일반모드에서외부메모리영역을나타냄 그림 Memory Configuration B 는 ATmega128 의 mega103 호환모드에서외부메모리영역을나타냄 5

38 1.8 ATmega128 의메모리 외부메모리인터페이스 AD7:0 : 하위어드레스버스와데이터버스의다중송수신 A15:8: 상위어드레스버스 ( 비트수조절가능 ) ALE: ALE 신호 (Address Latch Enable) RD : RD 스트로브 WR : WR 스트로브 6

39 1.8 ATmega128 의메모리 외부메모리인터페이스레지스터 Bit 7 -> SRE : 외부 SRAM/XMEM 인에이블 외부메모리사용여부설정비트 외부메모리사용 = 1 로세트 포트 A, C, G 는외부메모리제어버스로동작함 외부메모리사용안함 = 0 으로클리어 포트 A, C, G 는일반포트로동작함 Bit 6 -> SRW10 : Wait-State 선택비트 ATmega128 의이전모델인 ATmega103 과의호환성을유지하기위해 MCUCR 레지스터에존재하는비트 퓨즈비트에서 103 호환모드를선택할경우 SRW10 에 '1' 이기록되면외부메모리액세스에하나의사이클이추가되어 One Wait State 로동작한다. ATmega128 단독모드로동작시킬경우에는 XMCRA 레지스터와함께 Wait State 의미세한조정에사용된다. 7

40 1.8 ATmega128 의메모리 외부메모리인터페이스레지스터 XMCRA - External Memory Control Register A Bit 6:4 -> SRL2, SRL1, SRL0 : Wait-state Sector Limit 느린속도의장치를외부메모리에연결할때섹터를나누고, 제어신호를지연시키는데사용됨. 외부메모리어드레스공간은독립된 wait-state 비트를가지고 2 개영역으로분리 SRL2, SRL1, SRL0 비트는아래표와같이섹터를분리한다. 초기값 SRL2, SRL1, SRL0은모두 0 임 전체의외부메모리어드레스공간은하나의섹터로간주된다.» 이때 wait-state 는 SRW11 과 SRW10 비트로구성된다. 8

41 1.8 ATmega128 의메모리 외부메모리인터페이스레지스터 XMCRA - External Memory Control Register A SRW11, SRW10 : wait-state 선택비트 for Upper 섹터 SRW01, SRW00 : wait-state 선택비트 for Lower 섹터 SRWn1 SRWn0 wait-state 0 0 No wait-state 0 1 Read/Write 스트로브동안 1 사이클대기 1 0 Read/Write 스트로브동안 2 사이클대기 1 1 Read/Write 스트로브동안 2사이클대기와새로운어드레스조정출력전 1 사이클대기 9

42 1.8 ATmega128 의메모리 외부메모리인터페이스레지스터 XMCRB - External Memory Control Register B -Bit 7 -> XMBK : 외부메모리 Bus-keeper 인에이블 XMBK = 1 Bus-keeper 를활성화» 활성화되면 AD7:0이 Tri-State가되려고하는것을막고이전의값으로출력되도록한다» XMBK는 SRE에의존하지않으며, XMEM 인터페이스가비활성화되어도 XMBK가 1 인동안에 Bus-keeper는여전히활성화된다. XMBK가 = 0 Bus-keeper 는비활성화 -Bit 2:0 -> XMM2, XMM1, XMM0 : 외부메모리 High 마스크 60kByte 어드레스공간이요구되지않는경우일부또는전체의 C 포트를일반기능을하는포트핀으로놓일수있는기능 XMM2 XMM1 XMM0 외부메모리어드레스비트 릴리즈된포트핀 None PC PC7 - PC PC7 - PC PC7 - PC PC7 - PC PC7 - PC No Address High 비트 Full Port C 10

43 1.8 ATmega128 의메모리 외부메모리인터페이스 -TIP 외부 32kByte 메모리전체영역사용하기 주소버스의 A15를메모리에연결하지않고, 내부메모리 0x0000 ~ 0x10FF 영역 (4,352 Byte) 과겹치는외부 SRAM 영역 (0x0000 ~ 0x10FF) 을 AVR에서 0x8000 ~ 0x90FF로접근하여전체영역을사용 외부 64kByte 메모리전체영역사용하기 외부메모리의상위어드레스비트를 0 으로마스킹 XMCRB 레지스터의 XMMn 비트를 XMM[2:0] = 011 로설정 DDRC = 0XFF; // 포트 C를디지털출력으로설정 PORTC = 0X00; // 포트 C를모두 0으로클리어. AVR에서 0X2000 ~ 0X30FF 까지접근하여, 외부 SRAM 영역 (0X0000 ~ 0X10FF) 에접근할수있음.» 영역에따라 PORTC의 5~7번비트값을소프트웨어로제어해야함. 11

44 1.9 시스템클록과클록옵션 AVR의시스템클록 지원되는클록발생방법 내부 RC 발진 외부 RC 발진 크리스탈 / 레조네이터 저주파크리스탈 외부클록또는오실레이터 클록공급이되지않으면 AVR은동작하지않음 - ISP 도동작하지않음 퓨즈비트설정에주의 퓨즈비트 (Fuse Bit) CKSEL[3:0] 비트설정으로클록을선택함 Internal 1MHz TOSC1, kHz XTAL1 1~16MHz XTAL1 XTAL1, 2 XTAL1, 2 Internal 1~16MHz 1~16MHz kHz 1, 2, 4, 8MHz 12

45 1.9 시스템클록과클록옵션 (1) 클록소스 Programmed (bit = 0) Unprogrammed (bit = 1) 클록소스 CKSEL 3:0 외부수정오실레이터 / 세라믹공진기 1111 ~ 1010 외부저주파수정오실레이터 1001 외부 RC 오실레이터 1000 ~ 0101 내부 RC 오실레이터 0100 ~ 0001 외부클록

46 1.9 시스템클록과클록옵션 (2) 기본클록소스 제품출하시퓨즈비트 ( 클록부분설정 ) CKSEL = 0001 : 내부 RC 발진, 1MHz SUT = 10 : Start Up Time, 65ms, 저속으로투입되는전원환경설정 SUT : 전원이안정적인수순에도달할때까지의지연시간 내부 RC 발진 1MHz 로동작하며, 65ms 이후에 Reset 동작을수행, (6) 내 부 RC 발진기 절참조 (3) 크리스탈발진기 수정발진기나레조네이터를모두사용 CKOPT ( 클록옵션, Clock Option) 크리스탈의경우발진기증폭모드를설정함 Programmed : XTAL2에출력되는신호를크게설정» 잡음이많은환경에적합» 2번째클록버퍼에출력할때사용 Unprogrammed : XTAL2의출력을약하게함» 전력소모량을줄임 레조네이터의경우발진주파수의범위를제한함 Programmed : 최대주파수범위 8MHz Unprogrammed : 최대주파수범위 16MHz C1 = C2 XTAL2 = OUTPUT XTAL1 = INPUT CKOPT CKSEL 3:1 주파수범위 (MHz) 권장하는 C1, C2의값 ~ ~ pf ~ 22 pf ~ pf ~ 22 pf 0 101, 110, ~ 12 pf ~ 22 pf SUT 는교재참조 14

47 1.9 시스템클록과클록옵션 (4) 낮은주파수크리스탈발진기 kHz의시계크리스탈을클록소스로사용하고자할경우 CKSEL = 1001 : 저주파 (32.768kHz) 크리스탈사용 CKOPT가프로그램 (Programmed) 되면 AVR 내부에 36pF의캐패시터가 XTAL1과 XTAL2에연결 외부캐패시터반드시제거 (5) 외부 RC 발진기 시간에민감하지않은응용의경우사용 주파수 f = 1 / (3RC) [Hz] C 는최소 22pF 이상이어야함 CKOPT 가프로그램 (Programmed) 되면 AVR 내부에 36pF 의캐패시터가 XTAL1 에연결 내부 36pF 캐패시터이용가능 SUT 는교재참조 CKSEL 3:0 Frequency Range (MHz) ~ ~ ~ ~

48 1.9 시스템클록과클록옵션 (6) 내부 RC 발진기 AVR 칩내부에 RC 발진기를내장 1, 2, 4, 8 MHz의주파수를퓨즈비트설정으로선택 5V 25 에서의주파수 외부에발진회로가불필요 CKOPT는언프로그램 (Unprogrammed) 되어야함. AVR이리세하는동안 OSCCAL 레지스터의캘리브레이션값을읽고자동으로 RC 발진기를조정 5V 25 에서 1 MHz 선택시 ±3% 내의주파수로조정 SUT 는교재참조 CK SEL3:0 중심주파수 (MHz) (7) 발진기조정레지스터 (OSCCAL) 제품표시바이트의첫번째번지 (0x00) 의상위바이트 (calibration byte) 값이자동으로레지스터에로드됨. 내부 RC 오실레이터가 1MHz 의주파수가되도록조정함 만약내부 RC 발진주파수를 1MHz 가아닌조금다른주파수로변경하고자할경우 사용자가 OSCCAL 레지스터에값을지정해야함 OSCCAL 값 출력주파수에대한출력주파수에대한 % 값에서최저주파수 % 값에서최고주파수 $ $7F $FF

49 1.9 시스템클록과클록옵션 (8) 외부클록 외부클록을이용해 AVR 을동작시키고싶을때사용 외부클록신호를 XTAL1 핀에물려야함 외부클록주파수가 AVR 의동작주파수가됨 퓨즈비트 CKSEL[3:0] = 0000 으로프로그램되어야함 CKOPT가프로그램 (Programmed) 되면 36pF의커패시터가 XTAL1과 GND 사이에연결됨 AVR 의안정적인동작을위해주파수변동이 2% 가넘지않도록해야함 2% 보다커질경우예상치못한결과를얻을수있음 이런때에는 AVR이 RESET 되도록해야함 SUT 는교재참조 (9) 타이머 / 카운터발진기 TOSC1, TOSC2 핀을타이머 / 카운터발진기의연결핀으로사용 타이머 / 카운터0의외부클록입력으로사용됨 kHz의시계용크리스탈을외부커패시터없이연결 kHz에최적화 RTC(Real Time Counter) 로동작 TIP - RTC 의의미 2^8 = 256 이고, / 64 = 512 임 ( 참고로 2^15 = 임 ). 타이머 / 카운터0은 8비트이므로, kHz를 64분주하여입력하면 0.5초간격으로오버플로우발생 khz TOSC1 TOSC2 17

50 1.9 시스템클록과클록옵션 (10) 크리스탈분주제어레지스터 (XVID:XTAL XTAL Divide id Control Register) 소비전력을감소하는데유용함 -Bit 7 -> XDIVEN : XTAL Divide 인에이블 XDIVEN = 1 로설정되는경우 CPU와모든주변장치 (clk CPU, clk I/O, clk FLASH, clk ADC ) 의클록주파수는 XDIV6~XDIV0의설정에따라분주됨 XDIVEN = 0 으로설정되는경우 XDIV6~XDIV0 비트의값을바꿀수있음 클록주파수의분주는적용되지않음 동작중에도어플리케이션에적당한클록주파수로변화되도록설정이가능 -Bit 6:0 -> XDIV6:0 : XTAL Divide 선택비트 6 ~ 0 XDIVEN 비트가 1로설정되는경우적용공급되는클록을 2~129 사이의값으로분주 분주되는주파수 XDIV[6:0] 의값을 d 라고정의할경우. ( 단, XDIVEN = 1) source clock f CLK = 129 d 18

51 부록 ( 잠금비트및퓨즈비트 ) 메모리잠금비트 (memory lock bit) ATmega128은응용프로그램섹션과부트로더섹션으로구분되어있음 각각의섹션을사용용도에따라메모리의내용을보호하기위한 1바이트장치 메모리보호기능 프로그램메모리의내용을외부에서읽어볼수없도록보안을유지 실수로프로그램이수행되는것을방지 퓨즈비트 (Fuse bit) 기본적인 MCU 시스템의기능을설정함 칩삭제기능을수행하더라도퓨즈비트는영향을받지않음. 모두 3 바이트로구성 확장바이트 (Extended Byte) : mega103 호환모드사용여부, 워치독타이머사용여부 상위바이트 (High Byte) : JTAG 사용여부, On-chip Debug 사용여부, ISP 용 SPI 사용 ( 변경불가 ) 클록옵션사용여부, EEPROM 보호기능사용여부, 부트로더섹션시작주소설정 부트리셋시작주소설정 하위바이트 (Low Byte) : BOD Level 설정, BOD 사용여부, SUT 설정, 클록종류및속도설정 메모리잠금비트 LB1 을사용하여퓨지비트를변경할수없도록보호기능설정가능 퓨즈비트를설정한후에메모리잠금비트를나중에설정 19

52 부록 ( 잠금비트및퓨즈비트 ) 메모리잠금비트 (memory lock bit) LB 모드 PC 등의외부프로그램에서플래시메모리를액세스할경우에제공되는보호기능 LB2 와 LB1 에의해설정됨 메모리잠금비트 LB 모드 LB2 LB1 보호기능 메모리잠금기능이없음 ( 기본 ) 플래시나 EEPROM 을병렬모드나 SPI/JTAG 직렬모드로프로그래밍하는것을금지시킴퓨즈비트또한프로그래밍이금지됨 - 잠금비트를프로그래밍하기전에퓨즈비트를프로그래밍할것 플래시나 EEPROM 을병렬모드나 SPI/JTAG 직렬모드로프로그래밍하거나검증하는것을모두금지함. 20

53 부록 ( 잠금비트및퓨즈비트 ) 메모리잠금비트 (memory lock bit) BLB0 모드 ( 어플리케이션섹션보호 ) 부트로더프로그램이응용프로그램섹션을액세스하는것을보호하는기능 BLB02 와 BLB01 에의해설정됨 메모리잠금비트 BLB0 모드 BLB02 BLB 보호기능 부트로더프로그램이 SPM or LPM 명령을사용하여응용섹션을액세스하는데아무런제한이없음 부트로더프로그램이 SPM 명령을사용하여응용섹션에쓰기가금지됨 BLB0 모드의 2, 4 모드기능을모두포함 부트로더프로그램이 LPM 명령을사용하여응용섹션에읽기가금지됨만약, 부트로더섹션에인터럽트벡터가위치한다면, 응용프로그램섹션이실행되는동안모든인터럽트가금지됨 BLB1 모드 ( 부트로더섹션보호 ) 응용프로그램이부트로더프로그램섹션을액세스하는것을보호하는기능 BLB12 와 BLB11 에의해설정됨 메모리잠금비트 BLB1 모드 BLB02 BLB 보호기능 응용프로그램이 SPM or LPM 명령을사용하여부트로더섹션을액세스하는데아무런제한이없음 응용프로그램이 SPM 명령을사용하여부트로더섹션에쓰기가금지됨 BLB1 모드의 2, 4 모드기능을모두포함 응용프로그램이 LPM 명령을사용하여부트로더섹션에읽기가금지됨만약, 응용프로그램섹션에인터럽트벡터가위치한다면, 부트로더섹션이실행되는동안 모든인터럽트가금지됨 21

54 부록 ( 잠금비트및퓨즈비트 ) 퓨즈비트 (fuse bit) 확장바이트 비트이름비트기능기본값 M103C 1 ATmega103 호환모드 0(Programmed) WDTON 0 워치독타이머동작을허용 1(Unprogrammed) 22

55 부록 ( 잠금비트및퓨즈비트 ) 퓨즈비트 (fuse bit) 상위바이트 비트이름비트기능기본값 OCDEN 7 JTAGEN 6 JTAG 기능의허용 OCD(On-Chip debugging) 기능의허용 - JTAG 을이용해별다른장비없이디버깅하는기능 SPIEN 5 SPI 를통한직렬프로그래밍기능의허용 1(Unprogrammed, disabled) 0(Programmed, JTAG enabled) 0(Programmed, SPI prog. enabled) CKOPT 4 발진모드에따라수정발진자의진폭및기능설정 (1.9 절참조 ) 1(Unprogrammed) EESAVE 3 칩삭제의경우에 EEPROM 은삭제하지않고데이터를보존허용 1(Unprogrammed, EEPROM not preserved) BOOTSZ1 2 부트섹션의크기를선택 ( 아래표참조 ) 0(Programmed) BOOTSZ0 1 부트섹션의크기를선택 ( 아래표참조 ) 0(Programmed) BOOTRST 0 리셋벡터의선택 (1 = 0x0000, 1 = Boot Section) 1(Unprogrammed) BOOTSZ1 BOOTSZ0 부트섹션크기응용프로그램섹션부트로더섹션 워드 (4 페이지 ) 0x0000~0xFDFF 0xFE00~0xFFFF 워드 (8 페이지 ) 0x0000~0xFBFF 0xFC00~0xFFFF 워드 (16 페이지 ) 0x0000~0xF7FF 0xF800~0xFFFF 워드 (32 페이지 ) 0x0000~0xEFFF 0xF000~0xFFFF 23

56 부록 ( 잠금비트및퓨즈비트 ) 퓨즈비트 (fuse bit) 하위바이트 비트이름 비트 기능 기본값 BODLEVEL 7 저전압검출트리거레벨 (1 = 2.7V or 0 = 4.3V) 1(Unprogrammed) BODEN 6 저전압검출허가, 저전압검출시 MCU 는리셋됨 0(Programmed, BOD 금지 ) SUT1 5 기동시간 (Start-up Time) 의설정 (1.9 절참조 ) 1(Unprogrammed) SUT0 4 기동시간 (Start-up Time) 의설정 (1.9 절참조 ) 0(Programmed) CKSEL3 3 클록소스 (Clock source) 의설정 (1.9 절참조 ) 0(Programmed) CKSEL2 2 클록소스 (Clock source) 의설정 (1.9 절참조 ) 0(Programmed) CKSEL1 1 클록소스 (Clock source) 의설정 (1.9 절참조 ) 0(Programmed) CKSEL0 0 클록소스 (Clock source) 의설정 (1.9 절참조 ) 1(Unprogrammed) CKSEL[3:0] = 0001 로내부 RC 발진 1MHz 를기본으로출하됨 24

57 1.10 인터럽트 (Interrupt) 인터럽트는마이크로컨트롤러를이용한시스템응용에큰비중을차지함. 마이크로컨트롤러를자유자재로다루기위해서는반드시충분한이해가필요함 AVR에포함된여러특수장치들이가지는특징을잘이해하고인터럽트와연결시켜야쉽게응용할수있음 ATmega128 의인터럽트종류와벡터정보 모두 35 종 (RESET 벡터포함 ) 벡터번호벡터어드레스 인터럽트소스 인터럽트설명 가장높은외부핀, 전원인가리셋, 저전우선순위의리셋벡터 1 $0000 RESET 압검출리셋, 워치독리셋, JTAG AVR 리셋 2 $0002 INT0 외부인터럽트 0 높은우선순위의인터럽트벡터 3 $0004 INT1 외부인터럽트 1 4 $0006 INT2 외부인터럽트 2 5 $0008 INT3 외부인터럽트 3 6 $000A INT4 외부인터럽트 4 7 $000C INT5 외부인터럽트 5 8 $000E INT6 외부인터럽트 6 9 $0010 INT7 외부인터럽트 7 10 $0012 TIMER2 COMP 타이머 / 카운터2 비교매치 11 $0014 TIMER2 OVF 타이머 / 카운터2 오버플로우 12 $0016 TIMER1 CAPT 타이머 / 카운터 1 입력캡처 13 $0018 TIMER1 COMPA 타이머 / 카운터1 비교매치 A 14 $001A TIMER1 COMPB 타이머 / 카운터1 비교매치 B 15 $001C TIMER1 OVF 타이머 / 카운터1 오버플로우 16 $001E TIMER0 COMP 타이머 / 카운터 1 비교매치 17 $0020 TIMER0 OVF 타이머 / 카운터 0 오버플로우 벡터번호벡터어드레스인터럽트소스인터럽트설명 18 $0022 SPI, STC SPI 시리얼통신완료 19 $0024 USART0, RX USART0, 수신완료 20 $0026 USART0, UDRE USART0, 데이터레지스터비움 21 $0028 USART0, TX USART0, 송신완료 22 $002A ADC ADC 변환완료 23 $002C EE READY EEPROM 준비 24 $002E ANALOG COMP 아날로그비교기 25 $0030 TIMER1 COMPC 타이머 / 카운터1 비교매치 C 26 $0032 TIMER3 CAPT 타이머 / 카운터3 입력캡처 27 $0034 TIMER3 COMPA 타이머 / 카운터3 비교매치 A 28 $0036 TIMER3 COMPB 타이머 / 카운터3 비교매치 B 29 $0038 TIMER3 COMPC 타이머 / 카운터3 비교매치 C 30 $003A TIMER3 OVF 타이머 / 카운터3 오버플로우 31 $003C USART1 RX USART1, 수신완료 32 $003E USART1 UDRE USART1, 데이터레지스터비움 33 $0040 USART1 TX USART1, 송신완료 34 $0042 TWI TWI(I2C) 직렬인터페이스 35 $0044 SPM READY 저장프로그램메모리준비 가장낮은우선순위의인터럽트벡터 25

58 1.10 인터럽트 (Interrupt) 인터럽트벡터 인터럽트가발생하면하드웨어가참조하게되는어드레스 어플리케이션섹션과부트로더섹션의시작주소에위치할수있음 벡터당 2 개의워드주소가할당되어있음 벡터에는인터럽트서브루틴으로진입하도록, 인터럽트서브루틴의인덱스주소로점프명령이들어감 EX) JMP 0X8C ;= 점프명령 < vectors>: ; 0X8C 번지로이동주석 0: 0c jmp 08 0x8c ; 08 0x8c < ctors_end> 프로그램메모리주소 4: 0c 94 5f 00 jmp 0xbe ; 0xbe < vector_1> 8: 0c 94 5d 00 jmp 0xba ; 0xba < bad_interrupt>. 기계어코드어셈블리어코드. 84: 0c 94 5d 00 jmp 0xba ; 0xba < bad_interrupt> 88: 0c 94 5d 00 jmp 0xba ; 0xba < bad_interrupt> 메모리인덱스주소 ba < bad_interrupt>: 예외처리된 ba: 0c jmp 0 ;0x0< < vectors> 인터럽트처리루틴 be < vector_1>: 외부인터럽트 0 서브루틴 ISR(INT0_vect){ be: 1f 92 push r1 c0: 0f 92 push r : 0f 90 pop r0 128: 1f 90 pop r1 12a: reti 인터럽트발생이전으로복귀 26

59 1.10 인터럽트 (Interrupt) 인터럽트허용 -Bit 1 -> IVSEL : 인터럽트벡터선택 인터럽트벡터의위치를선택 BOOTRST IVSEL 리셋벡터어드레스인터럽트벡터의시작어드레스 1 0 $0000 $ $0000 부트리셋어드레스 + $ 부트리셋어드레스 $ 부트리셋어드레스 부트리셋어드레스 + $0002 인터럽트를사용하지않도록금지하면, 인터럽트벡터에는사용자프로그램코드가놓일수있으며, 리셋벡터가부트로더영역에있을경우에도, 응용프로그램의인터럽트벡터에는사용자프로그램코드가놓일수있다. IVSEL 비트를변경시킬때반드시다음과같은쓰기절차를따라야함 1 인터럽트벡터변경활성 (IVCE) 비트를 1 로설정한다. 2 4사이클이내에원하는값을 IVSEL에기록하며, 동시에 IVCE에 0 값을넣는다.» 인터럽트벡터테이블의주소를변경하는데의도하지않은오류를막기위함» 이절차가시행되는동안 IVCE가 1 이면모든인터럽트는자동으로비활성화되어금지되고, IVSEL 에기록한다음의명령어전까지비활성화상태로유지» 1 단계이후에 2 단계에서 IVSEL이쓰여지지않는다면인터럽트는 4사이클동안비활성화상태로남게되고, 인터럽트는다시원상태로복구된다. -Bit 0 -> IVCE : 인터럽트벡터변경활성화 IVSEL 비트를변경시키기위해서는 IVCE 비트는반드시논리 1로설정되어야한다. IVCE는논리 1로설정된이후 4사이클동안유지되며, 하드웨어에의해자동으로 0 값이된다. 27

60 핵심포인트를꽉짚어주는 AVR ATmega128 완전정복 제 1 장 AVR ATmega128 개요 [3/4] ATmega128 의주변장치 1

61 CHARTER 01- AVR ATmaga128 개요 CHARTER 01 목차 1.1 AVR 이란? 1.2 AVR 의제품종류 1.3 AVR 의어플리케이션 1.4 ATmega128 의특징 1.5 ATmega128 의핀배열 1.6 ATmega128 의블록도 1.7 ATmega128 의내부구조 1.8 ATmega128 의메모리 1.9 시스템클록과클록옵션 1.10 인터럽트 (Interrupt) 1.11 외부인터럽트 1.12 전원관리와휴면모드 1.13 ATmega128 의타이머 / 카운터 ATmega128 의디지털입출력핀구조 1.15 리셋 (Reset) 1.16 SPI 통신인터페이스 1.17 TWI 통신인터페이스 1.18 USART 통신인터페이스 1.19 EEPROM 데이터메모리 1.20 ATmega128 의아날로그디지털변환 1

62 1.11 ATmega128의외부인터럽트 외부인터럽트 외부핀의신호변화를트리거입력으로하여, 인터럽트를요청하는장치 인터럽트서브루틴실행조건 전역인터럽트허용 (SREG. I = 1), SREG 는 AVR 의상태레지스터, I 는 7 번비트 개별인터럽트허용 (EIMSK!= 0), EIMSK는외부인터럽트마스크레지스터 인터럽트서브루틴정의 (ISR) AVR 상태레지스터 - Bit 7 -> I : 전역인터럽트허용 인터럽트요청시인터럽트벡터로점프하도록허용하는전역인터럽트허용비트 인터럽트루틴진입시 0 으로클리어 인터럽트루틴에서빠져나갈때다시 1로세트 ex) 프로그램에서강제세트방법 SREG = 0X80; #include <avr/interrupt.h> sei(); // C 언어매크로 ex) 프로그램에서강제클리어방법 SREG &= ~0X80; #include <avr/interrupt.h> cli(); // C 언어매크로 SEI ; 어셈블리어 CLI ; 어셈블리어 2

63 1.11 ATmega128의외부인터럽트 외부인터럽트상태레지스터 A - EICRA 외부인터럽트 0~3의트리거동작모드를설정하는레지스터 비동기방식으로동작하며, 외부인터럽트의펄스폭이최소 50 ns 이상이어야함 ISCn1 ISCn0 설명 0 0 외부핀 INTn 의논리 0 일때인터럽트를요청 0 1 예약됨 1 0 외부핀 INTn이하강에지 ( 논리 1 에서논리 0 으로변할때 ) 일때비동기인터럽트를요청 1 1 외부핀 INTn이상승에지 ( 논리 0 에서논리 1 로변할때 ) 일때비동기인터럽트를요청 외부인터럽트상태레지스터 B - EICRB 외부인터럽트 4~7 의트리거동작모드를설정하는레지스터 동기방식으로동작하며, 외부인터럽트의펄스폭이최소 1 클록사이클이상이어야함 ISCn1 ISCn0 설명 0 0 외부핀 INTn의논리 0 일때인터럽트를요청 0 1 외부핀 INTn이하강에지또는상승에지일때인터럽트를요청 1 0 외부핀 INTn이하강에지 ( 논리 1 에서논리 0 으로변할때 ) 일때인터럽트를요청 1 1 외부핀 INTn 이상승에지 ( 논리 0 에서논리 1 로변할때 ) 일때인터럽트를요청 3

64 1.11 ATmega128의외부인터럽트 외부인터럽트마스크레지스터 -EIMSK 외부인터럽트의인터럽트마스크레지스터 ( 개별적인인터럽트허용 ) 1 로세트되면해당외부인터럽트허용 0으로클리어되면해당외부인터럽트금지 ex) 외부인터럽트 0 의허용 1. EIMSK = 0X01; 2. EIMSK = (1 << INT0); ex) 외부인터럽트 0 의금지 1. EIMSK &= ~0X01; 2. EIMSK &= ~(1 << INT0); 외부인터럽트플래그레지스터 EIFR 외부인터럽트의발생상황을알수있는플래그레지스터 인터럽트트리거발생시 1로세트 인터럽트서브루틴진입시 0으로자동클리어 프로그램에서클리어하기위해서는해당비트를 1로쓰기 ex) 외부인터럽트0 플래그의클리어 ; // EIFR == 0X01 ( 외부인터럽트 0의요청이있음 ) EIFR = 0X01; // EIFR == 0X00 ( 외부인터럽트 0의요청이없음 ) 4

65 1.11 ATmega128의외부인터럽트 외부인터럽트마스크레지스터 -EIMSK 외부인터럽트의인터럽트마스크레지스터 ( 개별적인인터럽트허용 ) 1 로세트되면해당외부인터럽트허용 0으로클리어되면해당외부인터럽트금지 ex) 외부인터럽트 0 의허용 1. EIMSK = 0X01; 2. EIMSK = (1 << INT0); ex) 외부인터럽트 0 의금지 1. EIMSK &= ~0X01; 2. EIMSK &= ~(1 << INT0); 외부인터럽트플래그레지스터 EIFR 외부인터럽트의발생상황을알수있는플래그레지스터 인터럽트트리거발생시 1로세트 인터럽트서브루틴진입시 0으로자동클리어 프로그램에서클리어하기위해서는해당비트를 1로쓰기 ex) 외부인터럽트0 플래그의클리어 ; // EIFR == 0X01 ( 외부인터럽트 0의요청이있음 ) EIFR = 0X01; // EIFR == 0X00 ( 외부인터럽트 0의요청이없음 ) 5

66 1.12 ATmega128의전원관리와휴면모드 슬립모드 AVR 의전원을절약하기위해 MCU 내부의모듈들이사용되지않도록셧 - 다운시킨모드 6 가지슬립모드지원 슬립모드진입방법 MCUCR.SE = 1 ( 슬립모드허용설정 ) MCUCR.SM2:0 = N ( 슬립모드설정, 6가지중에선택 ), (set_sleep_mode(... 슬립모드...);) SLEEP ; SLEEP 어셈블리어실행 ; 또는컴파일러의매크로를실행 (sleep_mode();) 슬립모드해제방법 허용된인터럽트발생시슬립모드해제됨 슬립모드해제시간 = SUT( 스타트 - 업타임 ) + 4 cycle 슬립모드수행단계 허용된인터럽트발생 슬립모드해제시간이후에인터럽트서브루틴실행 SLEEP 명령이후부터실행을재개 슬립모드해제단계에서레지스터와 SRAM 의내용은변하지않음 6

67 1.12 ATmega128의전원관리와휴면모드 슬립모드제어관련레지스터 MCUCR Standby 모드와 Extended Standby 모드에서 오직외부크리스탈 or 레조네이터만사용가능 Bit 5 -> SE : Sleep 인에이블 Bit 4:2 ->SM2:0 : Sleep Mode 선택비트 2, 1, 0 SM2 SM1 SM0 Sleep Mode Idle ADC Noise Reduction Power-down Power-save Reserved Reserved Standby Extended Standby 7

68 1.12 ATmega128의전원관리와휴면모드 슬립모드 6 가지 Idle 모드 ( 휴면모드 ), SM[2:0] = 000 ADC 의활성화의경우진입시자동 AD 변환시작 동작 :SPI SPI, USART, AC, ADC, TWI, T/C, WDT, 인터럽트시스템 차단 : clk CPU, clk FLASH 해제 : Overflow, TXC, Ext.Int, AC(Option, ACSR.ACD = 1 : 아날로그비교기전원차단 ) ADC Noise Reduction Mode(ADC 잡음감소모드 ), SM[2:0] = 001 ADC 잡음환경개선, 높은분해능측정가능 ADC 의활성화의경우진입시자동 AD 변환시작 동작 :ADC ADC, Ext.Int, TWI 주소감시, TC, WDT 차단 : clk CPU, clk FLASH, clk IO, 해제 : Ext.Reset, WDT Reset, Brown-out Reset, TWI 주소일치, TC0 인터럽트, SPM/EEPROM 준비, 로우레벨외부인터럽트 7:4 or 3:0 Power-down Mode( 전원차단모드 ), SM[2:0] = 010 클록발진회로의안정상태문제로모드해제시충분한기동시간이필요 동작 : Ext.Int, TWI 주소감시, WDT 차단 : 동기식모듈모두 해제 : Ext.Reset, WDT Reset, Brown-out Reset, TWI 주소일치, 로우레벨외부인터럽트 7:4 or 3:0 8

69 1.12 ATmega128의전원관리와휴면모드 슬립모드 6 가지 Power-save Mode( 전원절감모드 ), SM[2:0] = 011 기본적으로 clk ASY 를제외한모든클록을정지 CPU 가비동기모듈에의해동작할경우에사용 단한가지제외하고전원차단모드와동일 차이점 ASSR.AS0 = 1 의경우 TC0은휴면모드에서계속동작할수있음 SREG.I = 1, TIMSK( 오버플로우, 비교일치 ) 이벤트발생에서깨어남 ASSR.AS0 = 0 상황에서동작하는경우전원차단모드를추천함 전원절감모드에서 ASSR.AS=0의경우에는해제시비동기타이머레지스터내용이미정의상태로되기때문 Standby Mode( 대기모드 ), SM[2:0] = 110 메인클록 ( 외부발진 ) 허용이외에전원차단모드와같음 깨어날때오실레이터안정화시간이필요없음, MCU는 6 clock 사이클내에해제 동작 : Ext.Int, TWI 주소감시, WDT 차단 : 동기식모듈모두 해제 : Ext.Reset, WDT Reset, Brown-out Reset, TWI 주소일치, 로우레벨외부인터럽트 7:4 or 3:0 Extended Standby Mode( 확장대기모드 ), SM[2:0] = 111 메인클록 ( 외부발진 ) 허용이외에전원절감모드와같음 깨어날때오실레이터안정화시간이필요없음, MCU는 6 clock 사이클내에해제 9

70 1.12 ATmega128의전원관리와휴면모드 슬립모드의동작요약 동작되는클록오실레이터슬립모드로부터의해제방법 메인타이머 INT7 TWI SPM/ 슬립 CLK CLK CLK CLK CLK 타이머 Other 클록 OSC ~ 어드레스 EEPROM ADC 모드 CPU FLASH IO ADC ASY 0 I/O 인가허가 INT0 일치 Ready 휴면 2) ADC 잡음감소 2) 3) 잡음 2) 3) 전원다운 전원 세이브 3) 2) 2) 3) 2) 대기 1) 3) 확장 2) 2) 3) 2) 대기 1) 1) 외부수정발진기또는공진기가클록소스로선택된경우 2)ASSR 레지스터의 AS 비트가 1로설정된경우 3) 단지 INT3:0 또는 INT7:4가레벨인터럽트로동작할경우 10

71 1.13 ATmega128의타이머 / 카운터 AVR 의타이머 / 카운터개요 8비트와 16비트의카운터를내장하고있음 내부클록에서타이머로동작하고, 외부핀의카운터신호를이용카운터로동작함 타이머 / 카운터인터럽트종류 8비트 /16비트타이머공통 오버플로우 (Overflow) 비교일치 (Compare Match)» 16비트의경우 A/B/C 3종 16 비트전용 입력캡쳐 (Input Capture) 일반기능 클록을인가받아업카운트동작함, 타이머최대값에서 0 으로오버플로우발생 비교일치기능 클록을인가받아업카운트동작함, 비교일치값레지스터 (OCR) 와현재카운트값 (TCNT) 가일치하면비교일치발생 토글모드 비교일치상황에서출력레벨을반전시키는모드 카운터기능 외부카운터클록신호로부터클록을인가받고업카운트하는기능 펄스폭측정기능 외부의 ICP 단자에서발생하는트리거신호를이용해현재카운트값을레지스터에저장하는기능 ( 일반 + 비교 ) 의결합기능 PWM 발생모드 비교일치상황과오버플로우상황을연동하여, 구간을구분하고 0과 1의구형파를발생시켜출력하는모드 (8비트 PWM + 16비트 PWM) 신호변조기기능 변조기기능» 8비트 PWM 신호와 16비트 PWM 신호를 AND 또는 OR 논리연산으로혼합하는기능 11

72 1.13 ATmega128의타이머 / 카운터 AVR 의타이머 / 카운터동작모드개요 TOP TCNT 100 TCNT 200 TCNT 255 오버플로우 (Overflow) TCNT 120 오버플로우 (Overflow) TCNT TCNT TOP OCR 오버플로우 (Overflow) 0 0 ICP 50 TCNT t 0 Non-INV INV OCR/TOP Update OCR/TOP Update t ICR[15:0] Input Capture 모드 Phase and Frequency Correct PWM 모드 12

73 1.13 ATmega128의타이머 / 카운터 PWM 개요 톱니파 입력신호 듀티비개요 - PWM 주기 (P) 는일정 - PWM 주기 == 톱니파의주기 - 톱니파 < 입력신호 : 출력 = L - 톱니파 >= 입력신호 : 출력 = H [ 듀티비 ] 듀티비 = ( H / P ) * 100 [%] 13

74 1.13 ATmega128의타이머 / 카운터 타이머 / 카운터기능요약 타이머 / 카운터 타이머 / 카운터0 타이머 / 카운터1 타이머 / 카운터2 타이머 / 카운터3 비트수 8비트 16비트 8비트 16비트 최소값 최대값 TCNT0 OCR0 TCCR0 TIMSK TCNT1H, TCNT1L, OCR1AH, OCR1AL, OCR1BH, OCR1BL, OCR1CH, OCR1CL, TCNT2 OCR2 TCCR2 SFIOR TCNT3H, TCNT3L, OCR3AH, OCR3AL, OCR3BH, OCR3BL, OCR3CH, OCR3CL, 관련레지스터 TIFR ICR1H, ICR1L, TIMSK ICR3H, ICR3L, ASSR TCCR1A, CCR1B, TIFR TCCR3A, CCR3B, SFIOR TCCR1C, TIMSK, ETIMSK, TIFR, ETIFR SFIOR, TCCR3C, TIMSK, ETIMSK, TIFR, ETIFR SFIOR, 동작모드 일반모드일반모드일반모드일반모드 CTC CTC CTC CTC 고속 PWM 고속 PWM 고속 PWM 고속 PWM PC PWM PC PWM PC PWM PC PWM PFC PWM PFC PWM 카운터입력 TOSC1, TOSC2 T1 T2 T3 PWM 출력신호 OC0 OC1A, OC1B, OC1C OC2 OC3A, OC3B, OC3C 오버플로우 오버플로우 인터럽트 출력비교매치 A 출력비교매치 A 오버플로우오버플로우출력비교매치 B 출력비교매치 B 출력비교매치출력비교매치출력비교매치 C 출력비교매치 C 입력캡처 입력캡처 캡쳐기능 없음 있음 없음 있음 캡쳐신호 - ICP1 - ICP3 기타 RTC 기능 (TOSC 이용 ) ACO 입력캡처 OC2 단자는 OC1C 단자와동일한핀을사용함 14

75 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 0 타이머 / 카운터제어레지스터 최대값 = 255(0XFF) 최소값 = 0 (0X00) 일반모드 타이머 / 카운터제어회로 오버플로우인터럽트발생 PC PWM 모드 CTC 모드 현재카운트 프리스케일러 RTC 발진 ( 비동기발진 ) 고속 PWM 모드 RTC (32.768kHz) 비교일치인터럽트발생 메인발진 0~1024 프리스케일러 (0, 1, 8, 32, 64, , 1024) 비교일치상태 CTC, PWM 파형발생 파형출력 카운트비교값 타이머 / 카운터동기유닛 타이머 / 카운터비동기모드선택 15

76 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 2 타이머 / 카운터제어레지스터 최대값 = 255(0XFF) 최소값 = 0 (0X00) 일반모드 PC PWM 모드 타이머 / 카운터제어회로 오버플로우인터럽트발생 CTC 모드 고속 PWM 모드 카운터외부클록 TC1C와같이변조기로동작가능 카운터모드지원 현재카운트 프리스케일러이후비교일치인터럽트발생 0~1024 프리스케일러 (0, 1, 8, 64, 256, 1024 하강에지, 상승에지 ) 비교일치상태 CTC, PWM 파형발생 파형출력 카운트비교값 16

77 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 0 과 2 모두 8비트최소값 = 0 (0X00) kHz PORTG.4 타이머 0 의클록 메인 and RTC 모두프리스케일러사용 PORTG.3 RTC, 메인클록모두프리스케일러사용 타이머 2 의클록 메인 and 카운터 메인클록만프리스케일러사용 카운터는프리스케일러를거치지않음 상승및하강에지검출 카운터모드에서외부클록입력핀 메인클록은프리스케일러를거침 참고 ) T2 = PORTD.7 17

78 1.13 ATmega128의타이머 / 카운터 8비트타이머 / 카운터 0과 2 2중버퍼링구조 사용자프로그램에서 OCRn 레지스터의값을바꾸면임시레지스터에저장되었다가 TCNTn 레지스터값이 TOP 또는 BOTTOM 값에서업데이트되는구조 글리치 (glitch) 현상방지 일종의노이즈에의한오동작방지 2중버퍼링구조에의해 TOP 또는 BOTTOM에서업데이트 카운트설정값 항상비교함 파형발생기 카운트현재값 두레지스터값이일치하면비교일치인터럽트발생 PWM 모드 Phase Correct PWM 모드 Fast PWM 모드 FOC(Force Output Compare) PWM 이아닌동작모드에서파형강제출력기능 PWM 출력핀 (Output Compare) PWM이아닌모드 Normal 모드 CTC 모드 파형발생모드 (Waveform Generation Modes) 비교출력모드 (Compare Match Output Mode) 18

79 1.13 ATmega128의타이머 / 카운터 8비트타이머 / 카운터 0과 2 PWM 파형출력조건 DDRxn = 1 COMn = 10 or 11 COMn1:0 이하나라도 1 이어야 PWM 신호출력 00, 01 : 교재참조 10 : Non-INV PWM 11 : INV PWM CTC 파형출력조건 DDRxn = 1 PWM 신호 ( 비교출력신호 ) 2X1 신호멀티플렉서 COMn = 01 FOCn = 1 3-상태 H = High Voltage L = Low Voltage Z = High-impedance FOC(Force Output Compare) PWM 이아닌동작모드에서파형강제출력기능 디지털포트출력값설정신호 디지털포트입출력방향설정신호 3- 상태버퍼 PWM 출력핀 (Output Compare) OC0 = PORTB.4 OC2 = PORTB.7 참고 ) OC1C = PORTB.7 I/O 유닛용동기클록 19

80 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 0 관련레지스터 TCCR0(Timer/Counter Control Register 0) 타이머 / 카운터제어레지스터 0 강제출력 00, 01 : 교재참조 10 : Non-INV 00 : Normal 11 : INV 01 : CTC 10 : PC PWM 11 : 고속 PWM 000 : No Clock 001 : clk/1 010 : clk/8 011 : clk/ : clk/ : clk/ : clk/ : clk/1024 AS0 = 1 이면 TOSC1 이선택 타이머 / 카운터 0 의프리스케일러리셋 20

81 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 0 관련레지스터 TCNT0(Timer/Counter Register 0) 타이머 / 카운터레지스터 0 카운트현재값 OCR0(Output Compare Register 0) 출력비교레지스터 0 카운트설정값 ( 비교일치설정값 ) 2 중버퍼링구조로데이터업데이트되는레지스터 프로그램동작중 OCR0 레지스터에값이써지더라도 TCNT0이 TOP 또는 BOTTOM의값을가졌을때업데이트된다 21

82 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 0 관련레지스터 ASSR(Asynchronous Status Register) - 비동기상태레지스터 0 : 동기클록 ( 메인 ) 1 : 비동기클록 (RTC) 비동기클록선택 교재참조 TIMSK(Timer/Counter Interrupt Mask Register) 타이머인터럽트마스크레지스터 출력비교인터럽트허용 오버플로우인터럽트허용 1 : 허용 0 : 금지 TIFR(Timer/Counter Interrupt Flag Register) 타이머인터럽트플래그레지스터 인터럽트플래그레지스터는인터럽트서브루틴진입시 자동으로클리어 (=0) 된다. 출력비교인터럽트요청상태 오버플로우인터럽트요청상태 사용자의프로그램에서플래그를클리어하기위해서는플래그비트에 1 을써야한다. 1 : 요청있음 0 : 요청없음 22

83 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 0 관련레지스터 SFIOR(Special Function IO Register) 특수기능 IO 레지스터 Bit 7 -> TSM : 타이머 / 카운터동기화모드 TSM 비트는논리 1 로설정하였을때타이머 / 카운터동기화기능을수행 TSM = 1이면» PSR0 = PSR321 = 1이되어유지되고, 모든타이머 / 카운터의동작정지» 모든타이머 / 카운터를똑같은값으로설정할수있음 TSM = 0 이면» PSR0 = PSR321 = 0 으로하드웨어적으로클리어» 타이머 / 카운터들이동시에계수시작함 Bit 1 -> PSR0:Prescaler Prescaler Reset Timer/Counter0 타이머 / 카운터0의프리스케일러리셋기능 PSR0 = 1이면, 타이머 / 카운터0의프리스케일러를리셋한후에자동으로클리어 비동기모드동작중 PSR0 = 1이면, 프리스케일러가리셋될때까지 1로유지 TSM = 1 이면 PSR0 = 1로유지 - Bit 0 -> PSR321 : Prescaler Reset Timer/Counter3,2,1 타이머 / 카운터3, 2, 1의프리스케일러리셋기능 PSR321 = 1 이면, 타이머 / 카운터0 의프리스케일러를리셋한후에자동으로클리어 TSM = 1이면 PSR321 = 1로유지 23

84 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 2 관련레지스터 TCCR2(Timer/Counter Control Register 2) 타이머 / 카운터제어레지스터 2 강제출력 00, 01 : 교재참조 10 : Non-INV 00 : Normal 11 : INV 01 : CTC 10 : PC PWM 11 : 고속 PWM 000 : No Clock 001 : clk/1 010 : clk/8 011 : clk/ : clk/ : clk/ : T2 핀 ( 외부클록 ), 하강에지 111 : T2 핀 ( 외부클록 ), 상승에지참고 ) T2 = PORTD.7 타이머 / 카운터 1/2/3 의프리스케일러리셋 카운터외부클록신호의에지선택 24

85 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 2 관련레지스터 TCNT2(Timer/Counter Register 2) 타이머 / 카운터레지스터 2 카운트현재값 OCR2(Output Compare Register 2) 출력비교레지스터 2 카운트설정값 ( 비교일치설정값 ) 2 중버퍼링구조로데이터업데이트되는레지스터 프로그램동작중 OCR2 레지스터에값이써지더라도 TCNT2가 TOP 또는 BOTTOM의값을가졌을때업데이트된다 25

86 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 2 관련레지스터 TIMSK(Timer/Counter Interrupt Mask Register) 타이머인터럽트마스크레지스터 출력비교인터럽트허용 오버플로우인터럽트허용 1 : 허용 0 : 금지 TIFR(Timer/Counter Interrupt Flag Register) 타이머인터럽트플래그레지스터 출력비교인터럽트요청상태 오버플로우인터럽트요청상태 1 : 요청있음 0 : 요청없음 인터럽트플래그레지스터는인터럽트서브루틴진입시자동으로클리어된다. 클리어 = 0 사용자의프로그램에서플래그를클리어하기위해서는플래그비트에 1 을써야한다. 26

87 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터 2 관련레지스터 SFIOR(Special Function IO Register) 특수기능 IO 레지스터 Bit 7 -> TSM : 타이머 / 카운터동기화모드 TSM 비트는논리 1 로설정하였을때타이머 / 카운터동기화기능을수행 TSM = 1이면» PSR0 = PSR321 = 1이되어유지되고, 모든타이머 / 카운터의동작정지» 모든타이머 / 카운터를똑같은값으로설정할수있음 TSM = 0 이면» PSR0 = PSR321 = 0 으로하드웨어적으로클리어» 타이머 / 카운터들이동시에계수시작함 Bit 1 -> PSR0:Prescaler Prescaler Reset Timer/Counter0 타이머 / 카운터0의프리스케일러리셋기능 PSR0 = 1이면, 타이머 / 카운터0의프리스케일러를리셋한후에자동으로클리어 비동기모드동작중 PSR0 = 1이면, 프리스케일러가리셋될때까지 1로유지 TSM = 1 이면 PSR0 = 1로유지 Bit 0 -> PSR321 : Prescaler Reset Timer/Counter3,2,1 타이머 / 카운터3, 2, 1의프리스케일러리셋기능 PSR321 = 1 이면, 타이머 / 카운터0 의프리스케일러를리셋한후에자동으로클리어 TSM = 1이면 PSR321 = 1로유지 27

88 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 CTC 모드 TCNT == OCR, 다음클록에서 TCNT = 0 1. 비교일치인터럽트발생 TCNT가 OCR과비교일치에서반전동작함 ( 주기 ) 28

89 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 Fast PWM 모드 TCNT == OCR 1. 비교일치인터럽트발생 TCNT == MAX, 다음클록에서 TCNT = 0 1. OCR 업데이트 2. 오버플로우인터럽트발생 Non-INV INV ( 주기 ) 29

90 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 Phase Correct PWM 모드 TCNT == OCR 1. 비교일치인터럽트발생 TCNT == 0 TCNT == MAX 1. OCR 업데이트 1. 오버플로우인터럽트발생 Non-INV INV ( 주기 ) 30

91 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 오버플로우발생타이밍도, No Prescaling = clk / 1 동기클록상승신호 동기클록 클록인가허용 MAX BOTTOM ( 최대값 = 0xFF) ( 최소값 =0x00) 오버플로우인터럽트플래그 31

92 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 오버플로우발생타이밍도, with Prescaler ( 8 분주 ) 레지스터의변화와플래그의세트동작은분주되기이전의클록신호에맞추어짐 동기클록상승신호 동기클록 클록인가허용 (clk/8) X MAX BOTTOM ( 최대값 = 0xFF) ( 최소값 =0x00) 오버플로우인터럽트플래그 32

93 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 비교일치인터럽트발생타이밍도, with Prescaler ( 8 분주 ) CTC 모드제외한모든모드 동기클록상승신호 동기클록 클록인가허용 (clk/8) TCNT == OCR 비교값 비교출력인터럽트플래그 33

94 1.13 ATmega128의타이머 / 카운터 8 비트타이머 / 카운터의타이밍도 비교일치인터럽트발생타이밍도, with Prescaler ( 8 분주 ) CTC 모드의경우에만해당 CTC 모드에서는 TCNT 의최대값은 OCR 이된다. TOP == OCR, MAX == 255 동기클록상승신호 동기클록 클록인가허용 (clk/8) TCNT == OCR TCNT == 0 비교값 비교출력인터럽트플래그 34

95 1.13 ATmega128의타이머 / 카운터 16비트타이머 / 카운터 1과 3 최대값 = 65535(0XFFFF) 최소값 = 0 (0X0000) 일반모드 PC PWM 모드 CTC 모드 고속 PWM 모드 PFC PWM 모드 TC1C는 TC2와같이변조기로동작가능 A/B/C 3종류의다른 PWM 파형발생 입력캡쳐모드 카운터모드지원 0~1024 프리스케일러 (0, 1, 8, 64, 256, 1024 하강에지, 상승에지 ) 현재카운트값 입력캡쳐레지스터 비교일치 A 카운트비교값 A 비교일치 B 카운트비교값 B 비교일치 C 카운트비교값 C 타이머 / 카운터제어회로 고정된크기의 TOP 값 (8, 9, 10 비트 ) 입력캡쳐인터럽트발생 에지검출 타이머 / 카운터제어레지스터 오버플로우인터럽트발생 에지검출 프리스케일러이후 비교일치 A 인터럽트발생 카운터외부클록 CTC, PWM 파형출력 A 파형발생 A 비교일치 B 인터럽트발생 CTC, PWM 파형출력 B 파형발생 B 비교일치 C 인터럽트발생 CTC, PWM 파형발생 C 잡음제거 파형출력 C 캡쳐트리거입력핀 비교기출력 35

96 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 타이머 1과 3의클록 메인 and 카운터 메인클록만프리스케일러사용 카운터는프리스케일러를거치지않음 상승및하강에지검출 16 비트레지스터는 간접접근레지스터 (TEMP) 를통해동시 ( 하위바이트읽기또는쓰기시점 ) 에 카운터모드에서외부클록입력핀 16비트읽기및쓰기동작수행 따라서다음의순서를지켜야함 쓰기순서 [ 상위 하위 ] 읽기순서 [ 하위 상위 ] 쓰기동작순서 읽기동작순서 DATA BUS(8-bit) 메인클록은프리스케일러를거침 참고 ) T1 = PORTD.6 T3 = PORTE.6 2 TEMP (8-bit) 1 TCNTnH (8-bit) TCNTnL (8-bit) TCNTn(16-bit Counter) ex) 16 비트타이머레지스터에값쓰기 TCNT1H = 0X1F; TCNT1L = 0XFF; ex) 16비트타이머레지스터에값읽기 unsigned char t1, t2; t1 = TCNT1L; t2 = TCNT1H; 36

97 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 입력캡쳐신호 간접접근레지스터를통해 16 비트데이터읽기및쓰기 아날로그비교기출력 (ACO) 입력캡쳐트리거펄스 (ICP1) 캡쳐 (Capture) 신호 16 비트타이머 / 카운터 3 입력캡쳐신호항시 16비트데이터연결 잡음제거란? 입력캡쳐트리거펄스 (ICP3) 캡쳐트리거신호가 0 또는 1 로 전이한이후에 4 클록이상 같은상태를유지하는 신호를검출함 4 클록안에다른상태로 전이하게되면노이즈로필터링됨 ICP1 = PORTD.4 ICP3 = PORTE.7 아날로그비교기출력 입력캡쳐트리거펄스핀 ACIC(Analog Comparator Input Capture) 0:ICPn 선택 1 : ACO 선택 잡음제거 ICNC(Input Capture Noise Canceler) 0: 잡음제거안함 1 : 잡음제거기동작 상승및하강에지검출 입력캡쳐인터럽트발생 ICES(Input Capture Edge Select) 0: 하강에지검출 1 : 상승에지검출 37

98 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 3 개의 PWM 을출력할수있는기능 OCRnA/B/C 등 3 개의출력비교레지스터 간접접근레지스터를통해 16 비트데이터읽기및쓰기 카운트설정버퍼 카운트현재값 출력비교인터럽트의발생 현재값과설정값이같으면다음클록에출력비교인터럽트발생 이중버퍼링구조 PWM 동작중에사용 OCR 버퍼 - 이버퍼를통해 TOP 또는 BOTTOM 에서업데이트 카운트설정값 항상비교함 두레지스터값이일치하면비교일치인터럽트발생 일반 or CTC 모드에서는사용하지않음 업데이트된 OCR 레지스터 파형발생기 PWM 출력핀 (Output Compare) 파형발생모드 (Waveform Generation Modes) 비교출력모드 (Compare Match Output Mode) 38

99 1.13 ATmega128의타이머 / 카운터 16비트타이머 / 카운터 1과 3 PWM 파형출력조건 DDRxn = 1 COMn = 10 or 11 COMn1:0 이하나라도 1 이어야 PWM 신호출력 00, 01 : 교재참조 10 : Non-INV PWM 11 : INV PWM CTC 파형출력조건 3- 상태 DDRxn = 1 COMn = 01 FOCn = 1 H = High Voltage FOC(Force Output Compare) PWM 이아닌동작모드에서파형강제출력기능 PWM 신호 ( 비교출력신호 ) 2X1 신호멀티플렉서 디지털포트출력값설정신호 L = Low Voltage 디지털포트 Z = High-impedance 입출력방향설정신호 I/O 유닛용동기클록 3- 상태버퍼 PWM 출력핀 (Output Compare) OC1A = PORTB.5 OC1B = PORTB.6 OC1C = PORTB.7 OC3A = PORTE.3 OC3B = PORTE.4 OC3C = PORTE.5 참고 ) OC2 = PORTB.7 39

100 1.13 ATmega128의타이머 / 카운터 16비트타이머 / 카운터 1과 3 카운터용외부클록핀 타이머 / 카운터 1 = T1 PORTD.6 타이머 / 카운터 2 = T2 PORTD.7 타이머 / 카운터 3 = T3 PORTE.6 카운터용외부클록핀 3- 상태 H = High Voltage L = Low Voltage Z = High-impedance I/O 동기클록신호동기화블록에지검출 40

101 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 TCCR1A(Timer/Counter Control Register 1A) 타이머 / 카운터제어레지스터 1A TCCR3A(Timer/Counter Control Register 3A) 타이머 / 카운터제어레지스터 3A PWM A 00, 01 : 교재참조 10 : Non-INV 11 : INV PWM B 00, 01 : 교재참조 10 : Non-INV 11 : INV PWM C 00, 01 : 교재참조 10 : Non-INV 11 : INV TCCR1B 에 WGMn3, WGMn2 비트있음 WGMn[3:0] = 0000~ 교재참조 41

102 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 TCCR1B(Timer/Counter Control Register 1B) 타이머 / 카운터제어레지스터 1B TCCR3B(Timer/Counter Control Register 3B) 타이머 / 카운터제어레지스터 3B 잡음제거 0 : 잡음제거금지 1 : 잡음제거허용에지선택 0 : 하강에지 1 : 상승에지 TCCR1A에 WGMn1, WGMn0 비트있음 WGMn[3:0] = 0000~1111 -교재참조 000 : No Clock 001 : clk/1 010 : clk/8 011 : clk/ : clk/ : clk/ : Tn 핀 ( 외부클록 ), 하강에지 111 : Tn 핀 ( 외부클록 ), 상승에지 참고 ) T1 = PORTD.6 T3 = PORTE.6 타이머 / 카운터 1/2/3 의프리스케일러리셋 카운터외부클록신호의에지선택 42

103 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 모드 WGMn3 WGMn2 (CTCn) WGMn1 (PWMn1) WGMn0 (PWMn0) 동작모드 최대값 OCRnx 레지스터업데이트점 TOVn 플래그의세트점 일반 0xFFFF 설정즉시 MAX Phase Correct Phase Correct PWM, 8 비트 0x00FF TOP BOTTOM Phase Correct PWM, 9 비트 0x01FF TOP BOTTOM Phase Correct PWM, 10 비트 0x03FF TOP BOTTOM CTC OCRnA 설정즉시 MAX 고속 PWM, 8 비트 0x00FF BOTTOM TOP Fast 고속 PWM, 9 비트 0x01FF BOTTOM TOP 고속 PWM, 10 비트 0x03FF BOTTOM TOP Phase & Frequency Correct Phase and Frequency Correct PWM Phase and Frequency Correct PWM ICRn BOTTOM BOTTOM OCRnA BOTTOM BOTTOM Phase Correct Phase Correct PWM ICRn TOP BOTTOM Phase Correct PWM OCRnA TOP BOTTOM CTC ICRn 설정즉시 MAX 사용하지않음 (Reserved) Fast 고속 PWM ICRn BOTTOM TOP 고속 PWM OCRnA BOTTOM TOP 43

104 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 TCCR1C(Timer/Counter Control Register 1C) 타이머 / 카운터제어레지스터 1C TCCR3C(Timer/Counter Control Register 3C) 타이머 / 카운터제어레지스터 3C 강제출력 A 0 : 강제출력금지 1 : 강제출력허용 강제출력 C 0 : 강제출력금지 1 : 강제출력허용 강제출력 B 0: 강제출력금지 1 : 강제출력허용 44

105 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 TCNT1(Timer/Counter Register 1) 타이머 / 카운터레지스터 1 TCNT3(Timer/Counter Register 3) 타이머 / 카운터레지스터 3 카운트현재값 OCR1A(Output Compare Register 1A) 출력비교레지스터 1A, B와 C도동일 OCR3A(Output Compare Register 3A) 출력비교레지스터 3A, B 와 C 도동일 카운트설정값 ( 비교일치설정값 ) 2중버퍼링구조로데이터업데이트되는레지스터 프로그램동작중 OCRnAH, OCRnAL 레지스터에값이써지더라도 TCNT1이 TOP 또는 BOTTOM의값을가졌을때업데이트된다 B와 C도동일 45

106 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 ICR1(Input Capture Register 1) 타이머 / 카운터레지스터 1 ICR3(Input Capture Register 3) 타이머 / 카운터레지스터 3 타이머캡쳐값또는 PWM 모드에서 TOP 값 46

107 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 TIMSK(Timer/Counter Interrupt Mask Register) 타이머인터럽트마스크레지스터 타이머 / 카운터 1 입력캡쳐인터럽트허용 출력비교인터럽트 A 허용 출력비교인터럽트 B 허용 오버플로우인터럽트허용 1 : 허용 0 : 금지 TIFR(Timer/Counter Interrupt Flag Register) 타이머인터럽트플래그레지스터 타이머 / 카운터 1 입력캡쳐인터럽트요청상태 출력비교인터럽트 A 요청상태 출력비교인터럽트 B 요청상태 오버플로우인터럽트요청상태 1 : 요청있음 0: 요청없음 인터럽트플래그레지스터는인터럽트서브루틴진입시자동으로클리어 (=0) 된다. 사용자의프로그램에서플래그를클리어하기위해서는플래그비트에 1 을써야한다. 47

108 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 ETIMSK(Extended Timer/Counter Interrupt Mask Register) 확장타이머인터럽트마스크레지스터 타이머 / 카운터 3 입력캡쳐출력비교출력비교오버플로우출력비교출력비교인터럽트인터럽트 A 인터럽트 B 인터럽트인터럽트 C인터럽트 C 허용허용허용허용허용허용 타이머 / 카운터 1 1 : 허용 0 : 금지 ETIFR(Extended Timer/Counter Interrupt Flag Register) 확장타이머인터럽트플래그레지스터 입력캡쳐출력비교출력비교오버플로우출력비교출력비교 1 : 요청있음타이머 / 카운터3 인터럽트인터럽트 A 인터럽트 B 인터럽트인터럽트 C인터럽트 C 0 : 요청없음요청상태요청상태요청상태요청상태요청상태요청상태타이머 / 카운터 1 인터럽트플래그레지스터는인터럽트서브루틴진입시 자동으로클리어 (=0) 된다. 사용자의프로그램에서플래그를클리어하기위해서는플래그비트에 1 을써야한다. 48

109 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터 1 과 3 관련레지스터 SFIOR(Special Function IO Register) 특수기능 IO 레지스터 Bit 7 -> TSM : 타이머 / 카운터동기화모드 TSM 비트는논리 1 로설정하였을때타이머 / 카운터동기화기능을수행 TSM = 1이면» PSR0 = PSR321 = 1이되어유지되고, 모든타이머 / 카운터의동작정지» 모든타이머 / 카운터를똑같은값으로설정할수있음 TSM = 0 이면» PSR0 = PSR321 = 0 으로하드웨어적으로클리어» 타이머 / 카운터들이동시에계수시작함 - Bit 0 -> PSR321 : Prescaler Reset Timer/Counter3,2,1 타이머 / 카운터3, 2, 1의프리스케일러리셋기능 PSR321 = 1이면, 타이머 / 카운터0의프리스케일러를리셋한후에자동으로클리어 TSM = 1이면 PSR321 = 1로유지 49

110 1.13 ATmega128의타이머 / 카운터 8 비트와 16 비트타이머 / 카운터를이용한출력비교변조기 출력비교변조기의개념도 2개의 PWM 신호를변조 변조방법 1) 논리 AND 2) 논리 OR 변조기입력신호 OC1C AND OC2 OC1C OR OC2 50

111 1.13 ATmega128의타이머 / 카운터 8 비트와 16 비트타이머 / 카운터를이용한출력비교변조기 (Output Compare Modulator, OCM1C2) 출력비교변조기의블록도 OR 변조 (OR 게이트 ) AND 변조 (AND 게이트 ) 변조신호출력 변조신호와단일 PWM 신호선택 -타이머의비교출력모드가두파형모두일반출력모드가아닌경우에만변조기로동작함 타이머 / 카운터 1C의 OC1C 파형은타이머 / 카운터 1의제어레지스터를설정하여발생시킴 타이머 / 카운터 2의 OC2 파형은타이머 / 카운터 2의제어레지스터를설정하여발생시킴 변조기동작설정 = (COM21 or COM20 ) and (COM1C1 or COM1C0) 변조방식의선택 PORTB7 = 0 이면 AND 변조, OC1C AND OC2 PORTB7 = 1 이면 OR 변조, OC1C OR OC2 51

112 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 CTC 모드 A/B/C 중 A 에만출력 (TOP 에서 ) TCNT == 비교대상, 다음클록에서 TCNT = 0 1.WGM == 4 에서, OCnA 비교일치인터럽트발생 2.WGM == 12에서, ICFn 입력캡쳐인터럽트발생 TCNT가 OCR과비교일치에서반전동작함 ( 주기 ) 52

113 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 Fast PWM 모드 TCNT == TOP, 다음클록에서 TCNT = 0 (TOP 에서 ) 1. OCRnx 업데이트 TOP 업데이트 2. 오버플로우인터럽트발생 3. WGM == 14에서, 입력캡쳐인터럽트발생 4. WGM == 15에서, OCnA 비교일치인터럽트발생 Non-INV INV ( 주기 ) 53

114 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 Phase Correct PWM 모드 BOTTOM 에서좌우로대칭 TCNT == 0 TCNT == TOP (TOP 에서 ) 1. OCRnx 업데이트 TOP 업데이트 2. WGM == 10에서, 입력캡쳐인터럽트발생 3. WGM == 11에서, OCnA 비교일치인터럽트발생 (BOTTOM 에서 ) 1. 오버플로우인터럽트발생 Non-INV INV ( 주기 ) 54

115 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 Phase and Frequency Correct PWM 모드 TOP 에서좌우로대칭 TCNT == TOP (TOP 에서 ) 1. WGM == 8에서, 입력캡쳐인터럽트발생 2. WGM == 9에서, OCnA 비교일치인터럽트발생 TCNT == 0 (BOTTOM 에서 ) 1. OCRnx 업데이트 TOP 업데이트 2. 오버플로우인터럽트발생 Non-INV INV ( 주기 ) 55

116 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 비교출력인터럽트발생타이밍도, No Prescaling = clk / 1 동기클록상승신호 동기클록 클록인가허용 TCNT == OCRnX 비교값 비교출력인터럽트플래그 56

117 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 비교출력인터럽트발생타이밍도, with Prescaler ( 8 분주 ) 레지스터의변화와플래그의세트동작은분주되기이전의클록신호에맞추어짐 동기클록상승신호 동기클록 클록인가허용 (clk / 8) TCNT == OCRnX 비교값 비교출력인터럽트플래그 57

118 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 비교일치인터럽트발생타이밍도, No Prescaling = clk / 1 CTC 모드제외한모든모드 동기클록상승신호 동기클록 클록인가허용 (clk/1) CTC 와 FPWM 에서카운터값의변화 TCNT == OCR PC 와 PFC PWM 에서카운터값의변화 FPWM 에서오버플로우 ICR(=TOP) 에서입력캡쳐인터럽트발생 비교값 OCR 버퍼레지스터에서 OCR 비교레지스터로데이터가이동하여업데이트 58

119 1.13 ATmega128의타이머 / 카운터 16 비트타이머 / 카운터의타이밍도 비교일치인터럽트발생타이밍도, No Prescaling = clk / 1 CTC 모드제외한모든모드 동기클록상승신호 동기클록 클록인가허용 (clk/1) CTC 와 FPWM 에서카운터값의변화 TCNT == OCR PC 와 PFC PWM 에서카운터값의변화 FPWM 에서오버플로우 ICR(=TOP) 에서입력캡쳐인터럽트발생 비교값 OCR 버퍼레지스터에서 OCR 비교레지스터로데이터가이동하여업데이트 59

120 1.13 ATmega128의타이머 / 카운터 워치독타이머 기능 오버플로우발생시 ATmega128 을리셋시킨다. 리셋이후에 MCUCSR 레지스터를읽으면, 리셋의원인을알수있다. 사용방법 오버플로우가발생하지않도록주기적으로워치독타이머를클리어시킨다 사용하는이유 워치독을주기적으로클리어시키면, 워치독오버플로우가발생하지않게되고, 시스템은정상이다. 워치독오버플로우가발생하는것은시스템이비정상상태이기때문이다. 즉, 비정상상태의 AVR 을자동으로리셋시켜정상으로돌리기위한목적이다. 비정상상태의 AVR 이계속해서동작하게되면, 2 차적으로더큰문제가생길수있다. 또는오작동상태를감지한후에오작동원인을제거하면, 소프트웨어로리셋시키기위한목적도있음. 구조 내부 RC 발진기사용 ( 약 1MHz) 프리스케일러를선택하여오버플로우시간을설정 60

121 1.13 ATmega128의타이머 / 카운터 워치독타이머 WDTCR (Watchdog Timer Control Register) -Bit 4 -> WDCE : 워치독변경인에이블 워치독타이머의프리스케일러의값을변경하거나워치독기능을사용하지않도록설정 WDE 비트와 WDP[2:0] 비트를설정후에이비트 (WDCE) 를 1로설정하면, WDE의설정이적용되고, 4클록이후에자동으로 0으로클리어» WDE = 0 : 워치독타이머사용금지» WDE = 1 : 워치독타이머사용허용 WDE 비트가논리 1 로설정되어있을때이비트가논리 1 로설정될수있다. WDCE 비트가논리 1로설정되어있다가 4사이클이지나면자동으로하드웨어에의해 WDCE는논리 0 으로설정된다. -Bit 3 -> WDE : 워치독인에이블 WDE = 0 : 워치독타이머사용금지 WDE = 1 : 워치독타이머사용허용 -Bit 2:0 -> WDP2, WDP1, WDP0 : 워치독타이머프리스케일러 2, 1, 0 워치독타이머가활성화될때WDP2, WDP1, WDP0 비트들에의해프리스케일러가결정 전원전압의크기에따라서내부오실레이터의발진에약간의차이가발생» 5V일때와 3.3V일때에같은프리스케일러의값을설정하더라도타임아웃간격에는차이가있음» 일반적으로전원전압이낮을경우오실레이터의발진주파수가느려짐 61

122 1.13 ATmega128의타이머 / 카운터 워치독타이머활성화순서 1) WDTCR 레지스터의 WDCE 와 WDPn 을동시에설정한다. WDCE= 1, WDPn = 시간에맞게 ex) WDTCR = (1 << WDCE) (1 << WDP2) (1 << WDP1) (1 << WDP0); 2) WDTCR 레지스터의 WDCE 와 WDE 를동시에설정한다. WDCE = 1, WDE = 1 ex) WDTCR = (1 << WDCE) (1 << WDE); 워치독타이머비활성화순서 1) WDTCR 레지스터의 WDCE와 WDE를동시에설정한다. WDCE = 1, WDE = 0 ex) WDTCR = (1 << WDCE) (0 << WDE); ex)wdtcr=(1<<wdce); WDCE); WDP2 WDP1 WDP0 워치독타이머분주비 Vcc=3V에서의타임아웃 Vcc=5V에서의타임아웃 K(16,384) 14.8ms 14.0ms K(32,768) 29.6ms 28.1ms K(65,536) 59.1ms 56.2ms K(131,072) 0.12s 0.11s K(262,144) s s K(524,288) 0.47s 0.45s ,024K(1,048,576) 0.95s 0.9s ,048K(2,097,152) 1.9s 1.8s 62

123 핵심포인트를꽉짚어주는 AVR ATmega128 완전정복 제 1 장 AVR ATmega128 개요 [4/4] ATmega128 의주변장치 2

124 CHARTER 01- AVR ATmaga128 개요 CHARTER 01 목차 1.1 AVR 이란? 1.2 AVR 의제품종류 1.3 AVR 의어플리케이션 1.4 ATmega128 의특징 1.5 ATmega128 의핀배열 1.6 ATmega128 의블록도 1.7 ATmega128 의내부구조 1.8 ATmega128 의메모리 1.9 시스템클록과클록옵션 1.10 인터럽트 (Interrupt) 1.11 외부인터럽트 1.12 전원관리와휴면모드 1.13 ATmega128 의타이머 / 카운터 ATmega128 의디지털입출력핀구조 1.15 리셋 (Reset) 1.16 SPI 통신인터페이스 1.17 TWI 통신인터페이스 1.18 USART 통신인터페이스 1.19 EEPROM 데이터메모리 1.20 ATmega128 의아날로그디지털변환 1

125 1.14 ATmega128의디지털입출력핀구조 특징 포트 A, B, C, D, E, F, G 8 비트병렬입출력포트 : A, B, C, D, E, F 5 비트병렬입출력포트 : G 총 53 개디지털입출력핀을가짐 디지털입출력핀의 DC 전류 : 최대 40mA LED 의직접구동이가능 소형 RELAY 의직접구동이가능 Read-Modify-Write(RMW) 현재레지스터값을 Read 원하는값으로 Modify 수정된값으로 Write SBI, CBI 명령수행중다른읽기 / 쓰기동작이끼어들수없는 Atomic( 끊어지지않고연속해서일어나는동작 ) 구조를가진다. 즉, 레지스터는 8 비트병렬읽기 / 쓰기만가능하지만 RMW 를보장하기때문에 AVR 의 SBI, CBI 명령으로 특정비트의 SET 과 CLEAR 동작결과를보장한다. 2

126 1.14 ATmega128의디지털입출력핀구조 데이터방향설정레지스터 (DDRx) DDRA, DDRB, DDRC, DDRD, DDRE, DDRF, DDRG x = A ~ G 디지털입출력포트의데이터방향을설정하는레지스터 x = A ~ G, n = 0 ~ 7 DDxn = 0 : 데이터는입력방향 DDxn = 1 : 데이터는출력방향 데이터의방향설정? 1. 입력방향설정 : AVR 이핀의논리 (logic) 를내부로읽을수있는설정 2. 출력방향설정 : AVR 이핀의논리 (logic) 를변경하여쓸수있는설정 3

127 1.14 ATmega128의디지털입출력핀구조 포트데이터레지스터 (PORTx) PORTA, PORTB, PORTC, PORTD, PORTE, PORTF, PORTG x = A ~ G 포트의출력데이터값을설정하는레지스터 ( 단, DDRxn = 1 일때 ) x = A ~ G, n = 0 ~ 7 PORTxn = 0 : 0을포트의핀에출력 PORTxn = 1 : 1을포트의핀에출력 4

128 1.14 ATmega128의디지털입출력핀구조 포트입력핀어드레스 (PINx) PINA, PINB, PINC, PIND, PINE, PINF, PING x = A ~ G 포트의핀의논리 (logic) 을읽기위해접근하는주소 x = A ~ G, n = 0 ~ 7 읽기전용임 초기값은알수없음 5

129 1.14 ATmega128의디지털입출력핀구조 풀업저항연결해제 (PUD : Pull-Up Disable) PUD = 1 : 모든포트풀업저항연결해제 PUD = 0 : {DDRxn, PORTxn} 의설정에따라풀업저항연결이달라짐 DDRxn PORTxn PUD (in SFIOR) I/O 풀업 설명 0 0 X Input No 3상태 (Hi-Z) Input Yes Pxn will source current if ext. pulled low Input No 3상태 (Hi-Z) 1 0 X Output No Output Low(Sink) 1 1 X Output No Output High(Source) 내부풀업저항의크기 : 20~50[ kω ] 6

130 1.14 ATmega128의디지털입출력핀구조 대체기능 (alternate functions) 범용디지털입출력포트는 AVR 의특수기능을위해핀의대체기능을가진다. 포트포트 A 포트 B 포트 C 포트 D 포트 E 포트 F 포트 G 대체기능 외부메모리데이터버스 (Data Bus) 외부메모리하위어드레스바이트버스 (Address low byte) 타이머 / 카운터 0(OC0) 타이머 / 카운터 1(OC1A, OC1B, OC2/OC1C) SPI(MISO, MOSI, SCK, SS) 외부메모리상위어드레스바이트버스 (Address High Byte) 타이머 / 카운터 1(T1, ICP1) 타이머 / 카운터 2(T2) 외부인터럽트 (INT0, INT1, INT2, INT3) USART1(XCK1, TXD1, RXD1) TWI 직렬통신 (SDA, SCL) 타이머 / 카운터 3(T3, ICP3, OC3A, OC3B, OC3C) 외부인터럽트 (INT4, INT5, INT6, INT7) USART0(XCK0, TXD0, RXD0) 아날로그비교기 (AIN0[p], AIN1[n]) SPI(PDO, PDI) -ISP ADC 입력채널 (ADC0~ADC7) JTAG(TDI, TDO, TMS, TCK) 타이머 / 카운터 0(TOSC1, TOSC2) - RTC 외부메모리인터페이스 (ALE, /RD, /WR) 7

131 1.15 리셋 (Reset) ATmega128 이리셋되면 모든 I/O 레지스터는각각의초기값으로세트됨 리셋벡터 ( 프로그램메모리의 0x0000 번지 ) 부터프로그램이시작됨 리셋벡터에 JMP 명령으로리셋루틴을핸들링해야함 만약 ATmega128 이인터럽트를사용하지않는다면 JMP 명령으로리셋루틴을핸들링할필요가없으며, 인터럽트벡터공간에프로그램이가능하게됨 어플리케이션섹션에리셋벡터가존재하고, 부트로더섹션에인터럽트벡터가존재하는경우에도해당함 그반대의경우에도해당함 ATmega128 의리셋종류 (5 가지 ) Power-on Reset 외부리셋 (External Reset) Brown-out 리셋 워치독리셋 JTAG 리셋 8

132 1.15 리셋 (Reset) MCU 상태제어레지스터 (MCUCSR) POR 리셋을제외하고, POR에서 0으로클리어됨 해당비트에 0을쓰면클리어됨 Bit 4 -> JTRF : JTAG 리셋플래그 JTAG 명령 AVR_RESET에의해 JTAG 리셋레지스터에 1 이설정되면 MCU는리셋되고이비트는세트됨 Bit 3 -> WDRF : 워치독리셋플래그워치독타이머가오버플로우되면 MCU는리셋되고이비트는세트됨 Bit 2 -> BORF: Brown-out 리셋플래그 Brown-out 검출기에의해전원이설정전위이하로내려가면, MCU 는리셋되고, 이비트는세트됨 Bit 1 -> EXTRF : 외부리셋외부의리셋핀이 0으로떨어지면 MCU 는리셋되고, 이비트는세트됨 Bit 0 -> PORF: Power-On 리셋플래그전원이새로인가되면서 MCU는리셋과정을거치게되고, 이비트는세트됨 9

133 1.15 리셋 (Reset) 내부전압기준 ATmega128은내부밴드갭기준특성을가짐 ATmega128의내부장치에사용 Brown-out 검출기 아날로그비교기 (Analog Comparator) ADC(Analog to Digital Converter) Symbol Parameter Min Typ Max Units Bandgap reference voltage V Bandgap reference start-up time us Bandgap reference current consumption 10 ua 10

134 1.16 SPI 통신인터페이스 SPI(Serial Peripheral Interface) 근거리용직렬통신규격으로 MOSI, MISO, SCK, SS 의 4 개의신호선을이용함 모토로라사에서제안하여개발됨 이용범위 AVR 과주변장치의고속동기데이터통신에이용 AVR 과 AVR 사이의고속동기데이터통신에이용 SD 메모리제어, EEPROM 제어, AD 컨버터제어, 기타장치에주로이용됨 장점 UART 통신에비하여빠른속도와멀티통신이가능 I2C 통신에비해빠르고간단한제어 11

135 1.16 SPI 통신인터페이스 SPI 통신인터페이스의특징 MISO, MOSI, SCK, SS 등 4 개의신호선을이용한고속직렬동기식통신 전- 이중 (Full-Duplex) l 통신가능 마스터 (Master) 와슬레이브 (Slave) 로구분됨 마스터에의해클록발생및슬레이브로클록제공 첫번째데이터를 MSB 또는 LSB 로선택가능 수 MHz 속도로통신이가능하며, 7 가지전송속도중에서선택하여사용가능 전송완료인터럽트플래그지원 쓰기충돌방지를위한플래그내장 슬립모드해제기능지원 12

136 1.16 SPI 통신인터페이스 SPI 통신인터페이스 마스터모드 MOSI, SCK, SS = 출력, MISO = 입력으로설정 전송동작 SS = 0 ( 슬레이브디바이스선택 ) SPDR = 데이터 ( 전송시작, 데이터레지스터 ) 전송중» 마스터는 SCK 신호발생» 하드웨어적으로데이터를시프트 데이터길이 = 8비트» 슬레이브로데이터전송 전송완료시» SCK 클록정지» SPSR.SPIF = 1 ( 전송완료인터럽트플래그 ) 전송완료인터럽트허용시» SPCR.SPIE = 1 이면인터럽트허용» SPIF = 1이면인터럽트요청 SS = 1 ( 슬레이브디바이스선택해제, 전송종료 ) 핀 마스터 SPI일때방향 슬레이브 SPI일때방향 MOSI 사용자정의 입력 MISO 입력 사용자정의 SCK 사용자정의 입력 SS 사용자정의 입력 13

137 1.16 SPI 통신인터페이스 SPI 통신인터페이스 슬레이브모드 MOSI, SCK, SS = 입력, MISO = 출력으로설정 전송동작 if (SS = 1)» 모든 SPI 신호는 3-상태 or 입력상태로변함 if (SS = 0)» 슬레이브동작이유효하게됨 전송중» 마스터의 SCK 신호에의해 8비트데이터전송 전송완료시» SPSR.SPIF = 1 ( 전송완료인터럽트플래그 )» SPIF = 1 이면 SPDR 에서데이터를읽음 전송완료인터럽트허용시» SPCR.SPIE = 1 이면인터럽트허용» SPIF = 1 이면인터럽트요청 핀 마스터 SPI일때방향 슬레이브 SPI일때방향 MOSI 사용자정의 입력 MISO 입력 사용자정의 SCK 사용자정의 입력 SS 사용자정의 입력 14

138 1.16 SPI 통신인터페이스 SPI 통신연결구조 마스터 슬레이브연결구조 SS(SPI Bus Slave Select Input) : 슬레이브선택신호 MISO(SPI Bus Master Input/Slave Output) : 마스터입력, 슬레이브출력신호 MOSI(SPI Bus Master Output/Slave Input) : 마스터출력, 슬레이브입력신호 SCK(SPI Bus Serial Clock) : 클록신호 마스터 슬레이브 15

139 1.16 SPI 통신인터페이스 SPI 관련레지스터 SPCR(SPI Control Register) SPI 제어레지스터 SPI 인터럽트허용 0 : SPI 인터럽트금지 1 : SPI 인터럽트허용 SPI 통신활성화 0 : SPI 통신금지 1 : SPI 통신허용 데이터전송순서 0 : MSB 우선 1 : LSB 우선 클록전송률선택 SPI2X SPR1 SPR0 SCK Frequency f osc / f osc / f osc / f osc / f osc / f osc / f osc / f osc / 64 마스터 / 슬레이브선택 0 : 슬레이브로동작 1 : 마스터로동작 클록극성선택 대기상태일때클록 SCK 의극성을설정함 0 : 대기상태에서 SCK 는 Low 상태를유지 1 : 대기상태에서 SCK 는 High 상태를유지 클록위상선택 샘플링동작이수행되는 SCK의위상을선택 CPHA Leading edge Trailing edge 0 샘플링 데이터준비 1 데이터준비 샘플링 CPOL Leading edge Trailing edge 0 상승에지 하강에지 1 하강에지 상승에지 16

140 1.16 SPI 통신인터페이스 SPI 송수신동작 SPI 데이터모드 샘플링위상선택 CPHA = 0 (Leading, 앞 ) CPHA = 1 (Trailing, 뒤 ) 대기상태 대기상태 CPOL = 1 (High) 극성선택 CPOL = 0 (Low) SCK MOSI MISO SCK MOSI MISO SCK MOSI MISO 샘플링 17

141 1.16 SPI 통신인터페이스 SPI 관련레지스터 SPSR(SPI Status Register) SPI 상태레지스터 SPI 인터럽트플래그 0 : SPI 인터럽트없음 1 : SPI 인터럽트요청 쓰기충돌플래그 - SPI가데이터를전송하는동안에 SPDR 레지스터에데이터를쓰려고하면 1 로세트 - SPSR 레지스터를읽은후에 SPDR을액세스하면 SPIF와 WCOL 비트는클리어됨 SPI 2배속통신설정비트 0 : SPI 2배속사용안함 1 : SPI 2배속사용설정 SPDR(SPI Data Register) SPI 데이터레지스터 SPI 통신용데이터레지스터 18

142 1.17 TWI 통신인터페이스 TWI 통신의특징 TWI (Two-Wire Interface) AVR Device or AVR AVR 사이에서클록 (SCL) 신호와, 데이터 (SDA) 신호만을사용해서 직렬로데이터를전달하는방식의통신 필립스 (Philips) 사에서제안한근거리통신용표준직렬통신방식은 IIC == I2C IIC(Inter-Integrated Circuit) == I 2 C TWI 는 I2C 와같은통신방식 최대 128 개의서로다른 Device 및 MCU 를연결함 외부에풀업저항만연결되면되므로, 구성이간단함.( 풀업저항크기 : 일반적으로 4.7[ kω ]) 모든장치는개별적인주소를가지며, 버스경합을해결하기위한 TWI 프로토콜매커니즘이내장되어있음 ATmega128 의 TWI 통신특징 2선식의심플하고, 강력한통신인터페이스 마스터와슬레이브동작모드지원 송신기또는수신기로운영됨 7비트주소공간으로최대 128개의슬레이브주소허용 멀티마스터중재 (Arbitration) 지원 최대 400KHz의데이터전송속도 슬루-레이트 (slew-rate) 제한출력드라이버 버스라인에스파이크제거를위한노이즈억제회로내장 전체호출로모든슬레이브주소에프로그래밍할수있도록제공 AVR이슬립모드에있을때어드레스인식으로깨어남 19

143 1.17 TWI 통신인터페이스 TWI 버스의연결도 각장치는개별주소를가짐 최대 128개의장치를연결할수있음 ATmega128, EEPROM, ADC, 온도센서등 주변회로는약 4.7[ kω ] 의풀업저항만필요하므로구성이간단함 신호단자는오픈컬렉터 (TR의경우 ) 또는오픈드레인 (FET의경우 ) 의구조임 마스터 (Master) 데이터전송의시작과종료를담당하는장치 SCL 클록을발생함 송신할때 : 마스터송신기로동작 (Master Transmitter) 수신할때 : 마스터수신기로동작 (Master Receiver) 슬레이브 (Slave) 마스터에의해주소를할당받는장치 송신할때 : 슬레이브송신기로동작 (Slave Transmitter) 수신할때 : 슬레이브수신기로동작 (Slave Receiver) 20

144 1.17 TWI 통신인터페이스 TWI 데이터전송의기본형식 유효한데이터전송 SCL 이 H 인동안 SDA 가변하지않는상태에서전송 그렇지않으면 START or STOP 상태로인지 데이터는클록신호 SCL의상승에지에서전송 SCL이 L 인동안데이터신호를변경할수있음 START 조건 SCL 클록신호가 H 인동안 SDA 가하강에지신호를발생하는것 REPEATED START 조건 STOP 조건없이 START 조건이발생하는것 마스터가제어권을잃지않고계속해서새로운데이터를전송할때사용 STOP 조건 SCL 클록신호가 H 인동안 SDA 가상승에지신호를발생하는것 21

145 1.17 TWI 통신인터페이스 TWI 데이터송신및수신 TWI 통신의패킷 주소패킷 (Address packet) 9 비트로구성» 7비트의슬레이브어드레스 최상위비트 (MSB) 부터전송» 1 비트의읽기 / 쓰기신호» 1 비트의확인 (ACK) 신호 SLA+R = 슬레이브주소 + READ 신호 SLA+W = 슬레이브주소 + WRITE 신호 SLA+R/W = 슬레이브주소 + READ or WRITE 데이터패킷 (Data packet) 9 비트로구성» 8 비트의데이터신호 최상위비트 (MSB) 부터전송» 1비트의확인 (ACK) 신호 22

146 1.17 TWI 통신인터페이스 TWI 데이터송신및수신형식 (WRITE) S SLAVE ADDRESS R/W A DATA A DATA A P 0 (write) 데이터전송 (n bytes + acknowledge) (READ) S SLAVE ADDRESS R/W A DATA A DATA /A P 1 (read) 데이터전송 (n bytes + acknowledge) 마스터 -> 슬레이브 슬레이브 -> 마스터 A = Acknowledge (SDA = 0) /A = Not Acknowledge (SDA = 1) S = START 조건 P = STOP 조건 23

147 1.17 TWI 통신인터페이스 TWI 직렬통신모듈의구조 SCL과 SDA 신호출력드라이버 슬루-레이트 (Slew-rate) 제한기포함 50ns 이하의스파이크필터 (Spike Filter) 포함 비트레이트발생기 마스터모드로동작할때 SCL의주기를제어 TWBR + TWSR.TWPS[1:0] 에의해제어 TWBR(TWI Bit Rate Register)» 마스터모드에서 TWBR >= 10 TWSR(TWI Status Register) 슬레이브로동작할때는무관하지만 CPU의주파수 > SCL 주파수 * 16 이어야함 버스인터페이스유닛 TWDR + 시작 / 정지제어기 + 중재검출기 TWDR(TWI Data Register) 송신 or 수신된어드레스및데이터가포함 확인 ((N)ACK) 비트를저장하는레지스터 프로그램에서접근불가능 수신할때» TWCR에의해 SET or CLEAR 송신할때» TWSR의값에의해결정됨 24

148 1.17 TWI 통신인터페이스 TWI 직렬통신모듈의구조 START/STOP 제어기 START, REPEATED START, STOP 조거의생성과감지 휴면모드의해제 마스터에의해전송을시작하면중재검출하드웨어가 계속해서중재과정에있는지확인하기위해전송을모니터링 중재를잃은경우제어유닛에알려지고, 적절한상태코드생성으로정정된동작수행 어드레스매치유닛 수신된어드레스바이트와 TWAR 레지스터를비교 7비트의어드레스와일치하는지검사 if(twar.twgce TWGCE == 1)? 수신된어드레스와전체호출어드레스비교 일치하면제어유닛에알림 TWCR 설정에따라어드레스를인정하거나않을수있음 슬립모드에서도어드레스는비교됨 마스터가지정한주소와일치하면깨어남 제어유닛 TWI 버스를모니터링 TWCR 레지스터의설정에따라응답신호를발생 이벤트가발생하면 TWINT는세트됨 다음클록에 TWSR에이벤트를식별하는상태코드가업데이트 TWI 인터럽트플래그가세트되었을때에만유효함 if(twint == 0)? SCL 라인은 0 을유지한다. 25

149 1.17 TWI 통신인터페이스 TWI 의인터럽트는발생조건 TWI 가 START/REPEATED START 조건을전송후 TWI 가어드레스패킷 (SLA+R/W) 전송후 TWI 가어드레스바이트전송후 TWI 가중재를잃은후 TWI 가자신의슬레이브어드레스나전체호출로지정된후 TWI 가 1 바이트데이터를수신한후 TWI 가여전히슬레이브로지정되어있는데 STOP 또는 REPEATED START 를수신한후 잘못된 START 또는 STOP 조건으로버스오류가발생했을때 26

150 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI 비트레이트레지스터 비트레이트발생기의주파수분주값을선택함 즉, SCL 신호의주파수를설정하는레지스터 비트레이즈발생기 마스터모드에서 SCL 클록주파수를생성하는주파수분주기 27

151 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI 제어레지스터 Bit 7 -> TWINT : TWI 인터럽트플래그 현재작업이완료되거나예상된응용소프트웨어응답의경우에하드웨어에의해세트됨 만약 (SREG.I = 1, TWINT = 1) 이면 ATmega128은 TWI 인터럽트벡터로점프 인터럽트루틴을실행하면서하드웨어에의해자동으로클리어되지않음» 반드시소프트웨어에의해논리 0 으로클리어해야함 이플래그비트를클리어하기전에» 모든 TWI 레지스터 (TWAR, TWSR, TWDR 레지스터 ) 를읽거나써야한다. TWINT = 1인동안 SCL =0을유지 Bit 6 -> TWEA : TWI 허가확인비트 확인 (ACK) 비트의생성제어기능수행 TWEA = 1 일때, TWI 버스가다음의조건으로충족되면 ACK 확인비트가발생함» 디바이스가자기의슬레이브어드레스를수신한경우» TWAR.TWGCE 비트에의해전체호출을수신한경우» 1바이트데이터가마스터수신기또는슬레이브수신기모드로수신된경우 TWEA = 0 이면,» 디바이스는 TWI 직렬버스에서일시적으로연결이종료될수있다.» 다시논리 1 로설정되면, 다시어드레스를인식할수있다. 28

152 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI 제어레지스터 Bit 5 > TWSTA: TWI START 조건비트 TWSTA = 1 이면,» TWI 직렬버스에서마스터로서동작» TWI 버스가사용가능한상태인지확인하고, 가능한상태이면 START 조건을발생» 버스가가능한상태가아니면 STOP 조건이검출될때까지기다리게되고, 버스사용이가능하게되면 START 조건을발생 START 조건이전송되면반드시이비트는소프트웨어로클리어되어야한다. Bit 4 -> TWSTO: TWI STOP 조건비트 마스터모드에서» TWSTO = 1이면, STOP 조건을발생» STOP 조건이버스에서실행되면, TWSTO 비트는자동으로논리 0 으로클리어된다. 슬레이브모드에서» TWSTO 비트의설정은에러상태를복구하는데사용» STOP 조건을발생하는것이아니라지정된슬레이브를해제하여반환하고, SCL과 SDA 선을고임피던스 (high impedance) 상태로만듬 29

153 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI 제어레지스터 Bit 3 -> TWWC: TWI 쓰기충돌플래그 TWINT = 0 일때,TWDR 레지스터에데이터쓰기를시도할때세트됨 TWINT = 1 일때, TWDR 레지스터에데이터를쓰면 TWINT 는클리어됨 Bit 2 -> TWEN: TWI 인에이블비트 TWI 동작을가능하게하고, TWI 인터페이스를활성화한다 TWEN = 1 이면,» TWI는 SCL과 SDA 핀에연결된 I/O 핀을통해제어된다.» SCL과 SDA는슬루-레이트제한기와스파이크필터가연결되어있음 TWEN = 0 이면,» TWI는사용할수없으며, 모든 TWI 전송은종료됨 Bit 0 -> TWIE : TWI 인터럽트인에이블 TWI 인터럽트를허용하는비트 TWIE = 1, SREG.I = 1 이면, TWINT = 1 이되었을때 TWI 인터럽트가요청됨 30

154 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI 상태레지스터 Bit 7:3 -> TWS: TWI 상태 TWI 의로직 ( 논리 ) 과 TWI 버스의상태를나타냄 TWI 의동작에따라각각다른상태코드를가짐 Bit 1:0 -> TWPS: TWI 프리스케일러비트 비트전송속도에맞도록클록을분주시킴 TWPS1 TWPS0 프리스케일러값

155 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI 데이터레지스터 송신모드에서다음에전송할데이터를포함 수신모드에서마지막수신한데이터를포함 바이트를시프트하지않는처리과정중에만쓰기권한을가지며, TWINT = 1 일때가능해진다. TWINT = 1 이면, 데이터는유지됨 첫번째인터럽트가발생하기전에사용자에의해초기화될수없음 TWI 인터럽트를통해휴면모드에서깨어난후를제외하고, 항상마지막에수신한데이터를포함 TWI 인터럽트를통해휴면모드에서깨어난후 TWDR의내용은정의되지않음 버스조정이실패한경우에마스터에서슬레이브로전환될때에데이터는없어짐 Bit 7:0 -> TWD : TWI 데이터레지스터 송신모드에서다음에전송할데이터를포함 수신모드에서마지막수신한데이터를포함 32

156 1.17 TWI 통신인터페이스 TWI 제어용레지스터 TWI ( 슬레이브 ) 주소레지스터 슬레이브모드에서동작하는것으로마스터에의해서지정된 7 비트슬레이브주소를나타냄 Bit 7:1 -> TWA : TWI ( 슬레이브 ) 주소레지스터 7비트의 TWI 유닛의슬레이브주소를나타낸다. Bit 0 -> TWGCE : TWI 전체호출인식허용비트 TWGCE = 1 이면, TWI 직렬버스에서슬레이브전체호출의인식을가능하게함 33

157 1.17 TWI 통신인터페이스 TWI 통신포트의동작 AVR의 TWI는인터럽트기반의바이트단위통신인터페이스 모든버스이벤트후에인터럽트가발생 START/REPEATED START 조건의송신후 SLA+R/W 의송신후 어드레스바이트송신후 데이터바이스수신후 STOP 조건의송신후 기타 TWIE = 0 이면, TWINT 플래그를폴링방식으로처리해야함 TWIE = 1 이면, TWI 는동작을마치고프로그램의응답을기다림 TWSR 에 TWI 버스의현재상태를나타냄 응용프로그램은 TWCR, TWDR 레지스터를제어하고, 다음 TWI 동작을결정 34

158 1.17 TWI 통신인터페이스 TWI 데이터전송을위한기본동작인터페이스 TWI 하드드웨어동작 응용프로그램동작 35

159 1.17 TWI 통신인터페이스 TWI 기본통신에서 TWSR 상태코드 오류상태는제외 (ATmega128 데이터시트참조 ) MT 모드 MR 모드 ST 모드 SR 모드 ( 마스터송신 ) ( 마스터수신 ) ( 슬레이브송신 ) ( 슬레이브수신 ) START 조건종료후 0x08 0x SLA+R/W 송신, ACK 인정후 0x18 0x SLA+R/W 송신, NACK 인정후 0x SLA+R/W 수신, ACK 응답후 - - 0xA8 0x60 SLA+R/W 수신, NACK 응답후 DATA 송신, ACK 인정후 0x28-0xB8 - DATA 송신, NACK 인정후 0x30-0xC0 - DATA 수신, ACK 응답후 - 0x50-0x80 DATA 수신, NACK 응답후 - 0x58-0x88 STOP 조건종료후 xA0 REPEAT START 조건후 0x10 0x10-0xA0 36

160 1.18 USART 통신인터페이스 USART(Universal Synchronous and Asynchronous serial Receiver and Transmitter) USART의의미 : 범용동기 / 비동기수신기및송신기 UART : 범용비동기수신기및송신기 RS232, RS485, RS422 등의통신은 UART 의통신임 USRT : 범용비동기수신기및송신기 SPI 통신과같이마스터 MCU 가슬레이브 MCU 로클록을공급해야함 송신측과수신측은동일한프레임구조로설정되어야함 프레임 올바른통신을위해서는프레임구조와전송속도가일치해야함 구성및순서 : START + DATA + PARITY + STOP START 비트 길이 = 1 비트 레벨 = 0 (Low) DATA 비트 길이 = 5~9 비트 레벨 = X ( 사용자정의 ) PARITY 비트 길이 = 1 or None 레벨 = 설정 (Even, Odd, None) 에따라 STOP 비트길이 = 1~2 비트레벨 = 1(High) UART 신호와통신용송수신드라이버 IC를결합하여, RS232, RS485, RS422 통신으로분류됨 UART 신호 : RXD, TXD, GND RS232 통신 : UART 신호 + MAX232 IC ( 또는 MAX3232) RS485 통신 : UART 신호 + MAX485 IC ( 또는 SN75176, SN65176) 송신모드및수신모드전환용디지털제어신호가필요함 RS422 통신 : UART 신호 + MAX485 IC ( 또는 SP485(Half Type), SN65C1168(Full Type)) 422 멀티드롭모드에서는송신모드및수신모드전환용디지털제어신호가필요함 37

161 1.18 USART 통신인터페이스 ATmega128 의 USART 특징 전이중 (Full-Duplex) 통신동작 비동기와동기모드로동작 마스터또는슬레이브클록동기모드동작 높은정밀도의보레이트 (Baud Rate) 발생기 5~9 DATA 비트와 1~2 STOP 비트의프레임설정지원 하드웨어에의해동작하는짝수또는홀수패리티발생기와검사기지원 데이터오버런 (OverRun) 감지기능내장 프레임에러 (Framing Error) 감지기능내장 START 비트오류검출을위한노이즈필터와디지털 LPF(Low Pass Filter) 지원 송신완료, 송신데이터레지스터공백, 수신완료인터럽트제공 멀티 -프로세서통신모드지원 2 배속비동기통신모드지원 38

162 1.18 USART 통신인터페이스 ATmega128 의 USART 구조 클록발생기 송신기 수신기 UBRR( 보레이트레지스터 ) 보레이트발생기 동기클록로직 XCK 핀제어기 UDR( 송신버퍼 ) 송신시프트레지스터 패리티발생기 송신제어및 TXD 핀제어기 UDR( 수신버퍼 ) 수신시프트레지스터 패리티검사기 클록및데이터처리기 수신제어및 RXD 핀제어기 제어레지스터 UCSRA UCSRB UCSRC 39

163 1.18 USART 통신인터페이스 USART 의프레임 프레임이란? USART 통신에서단위바이트의데이터를전송하기위해구성되어지는신호들의집합 프레임을전송하지않는구간에서 USART 는대기상태를가짐 대기상태에서 RXD, TXD 는반드시 1(High) 이어야함 START ( 시작 ) 비트는반드시 0(Low) 이어야함 데이터비트는 5~9 비트를사용자가임의로설정할수있고, 전송시최하위비트 (LSB) 를먼저전송함 패리티비트는사용하지않는경우프레임의구성에서빠질수있음 STOP ( 정지 ) 비트는반드시 1(High) 이어야함 프레임의모든비트들은보레이트로설정된통신속도에따라동일한길이를가져야함. 40

164 1.18 USART 통신인터페이스 USART 의패리티비트 P even : 짝수패리티 DATA 비트와패리티비트를포함하여 1 의개수가짝수개가되는논리값 P odd : 홀수패리티 DATA 비트와패리티비트를포함하여 1 의개수가홀수개가되는논리값 짝수패리티와홀수패리티의공식 41

165 1.18 USART 통신인터페이스 USART 의클록 클록발생기의구조 Baud Rate 계산및 UBRR 레지스터값계산공식 42

166 1.18 USART 통신인터페이스 USART 의클록 데이터시트에서 Baud Rate 에맞는 UBRR 값찾기 43

167 1.18 USART 통신인터페이스 USART 의통신속도및프레임설정요약 USART 의통신속도설정 ( ) USART 의프레임설정 ( ) USART 의초기상태 ( ) 속도 초기값최고속통신 (UBRRn =0) 설명 MCU 속도 (F_CPU) 에따라보레이트는달라지며, UBRR 값이작을수록고속통신속도설정임. 데이터 8비트 데이터길이는 D7:0까 길이 (UCSZn2:0 = 011) 지 8 비트임 패리티설정정지비트 사용안함 (Disable) (UPMn1:0 = 00) 1비트 (USBSn = 0) 패리티비트를사용하지않음 정지비트는 1 비트임 44

168 1.18 USART 통신인터페이스 USART 의샘플링 USART 가대기상태에서 RXD 핀의신호가 0(Low) 로떨어지면, START 비트의시작 START 비트의샘플링에서 1 로판단되면노이즈로판단 통신속도보다 16 배 (2 배속모드에서는 8 배 ) 높은주파수로샘플링 비트의중심부에서 3 회샘플링하여, 2 회이상같은값을비트의값으로결정 일반모드에서는 8, 9, 10 회샘플링을사용 2 배속모드에서는 4, 5, 6 회샘플링을사용 START 비트검출 시작 DATA 비트검출 STOP 비트검출 STOP 비트는샘플링이후에 (A) ~ (C) 구간에서신호가 0으로떨어지면 START 비트신호로인지 45

169 1.18 USART 통신인터페이스 USART 의제어관련레지스터 UCSRnA(USART Control and Status Register A) bit 7 : RXCn -> 수신완료플래그 새로운프레임을수신버퍼에수신한상태 bit 6 : TXCn-> 송신완료플래그 송신시프트레지스터의데이터가 STOP 비트까지모두송신되고, 송신버퍼도비어있는상태 bit 5 : UDREn -> 송신버퍼공백플래그 송신버퍼가비어있는상태 bit 4 : FEn -> 프레임에러플래그 수신된프레임의 STOP 비트가 0 으로샘플링되어오류가발생한상태 bit 3 : DORn -> 데이터오버런에러플래그 수신버퍼에 2 개의수신데이터가들어와있는상태에서 3번째 START 비트가검출된상태 앞서수신된데이터를잃어버리게될수있음 bit 2 : UPEn -> 패리티에러플래그 짝수또는홀수패리티의설정에서수신된패리티비트에오류가있는상태 bit 1 : U2Xn -> 2 배속모드플래그 USART 의클록분주비를 16 에서 8 로낮추어전송속도를 2 배로높이는기능 bit 0 : MPCMn -> 멀티프로세서통신모드 USART 를 2 개이상의프로세서가통신할수있는멀티프로세서통신모드로설정 46

170 1.18 USART 통신인터페이스 USART 의제어관련레지스터 UCSRnB(USART Control and Status Register B) bit 7 : RXCIEn -> 수신완료인터럽트허용 bit 6 : TXCIEn -> 송신완료인터럽트허용 bit 5 : UDRIEn -> 송신버퍼공백인터럽트허용 bit 4 : RXENn -> 수신부활성화 RXENn = 0 이면, RXDn 핀은범용디지털입출력핀으로동작 RXENn = 1 이면, RXDn 핀은 USART 의 RXD 핀으로동작 bit 3 : TXENn -> 송신부활성화 TXENn = 0이면, TXDn 핀은범용디지털입출력핀으로동작 TXENn = 1 이면, TXDn 핀은 USART 의 TXD 핀으로동작 bit 2 : UCSZn2 -> 문자길이설정비트 2 문자 ( 데이터 ) 길이 ( 비트사이즈 ) 설정비트 (UCSZn[2:0] 중하나 ) bit 1 : RXB8n -> 수신버퍼의 8 번비트 9 비트데이터통신에서수신데이터의최상위 8 번비트가저장되는비트공간 UDRn 레지스터보다먼저읽어져야함 bit 0 : TXB8n -> 송신버퍼의 8 번비트 9 비트데이터통신에서송신데이터의최상위 8 번비트가저장되는비트공간 UDRn 레지스터보다먼저씌어져야함 UCSZn[2:0] [21 0] 문자길이 비트 비트 비트 비트 ( 기본값 ) 비트 47

171 1.18 USART 통신인터페이스 USART 의제어관련레지스터 UCSRnC(USART Control and Status Register C) bit 6 : UMSELn -> 동기 / 비동기모드선택 UPMn[1:0] [ 1 0 ] UMSELn = 0 이면, 비동기모드 ( 기본값 ) UMSELn = 1 이면, 동기모드 bit 5 : UPMn1 -> 패리티비트모드선택 1 bit 4 : UPMn0 -> 패리티비트모드선택 0 패리티비트모드 0 0 Disable( 사용안함 ) Even ( 짝수 ) 1 1 Odd ( 홀수 ) bit 3 : USBSn -> 정지 (STOP) 비트길이선택 USBSn = 0이면, 정지비트는 1 비트 ( 기본값 ) USBSn = 1이면, 정지비트는 2 비트 bit 2 : UCSZn1 -> 문자길이설정비트1 bit 1 : UCSZn0 -> 문자길이설정비트0 bit 0 : UCPOLn -> 동기모드에서클록극성선택 송신데이터의변화수신데이터샘플링 UCPOLn (TXDn 핀의출력 ) (RXDn 핀의입력 ) 0 XCKn의상승에지 XCKn의하강에지 UCSZn[2:0] [ ] 문자길이 비트 비트 비트 비트 ( 기본값 ) 비트 1 XCKn 의하강에지 XCKn 의상승에지 48

172 1.18 USART 통신인터페이스 USART 의제어관련레지스터 UBRRnL and UBRRnH(USART Baud Rate Register) USART 의통신속도를설정한다 UBRRn[11:0] 는 UBRRnH 와 UBRRnL 레지스터로분리 UBRRnH UBRRnL bit 11-8 : UBRRn -> USART 보레이트 (Baud Rate) 레지스터상위 4 비트 bit 7-0 : UBRRn -> USART 보레이트 (Baud Rate) 레지스터하위 8 비트 49

173 1.18 USART 통신인터페이스 USART 의제어관련레지스터 UDRn(USART I/O Data Register) USART 의송신및수신데이터를읽거나쓸수있는버퍼 송수신버퍼는 UDRn 의동일한이름으로접근 UDRn의읽기동작접근에서수신버퍼 (RXBn[7:0]) 에접근 ex) ch = UDR0; // 수신버퍼에서값을읽고, ch 변수에저장 UDRn 의쓰기동작접근에서송신버퍼 (TXBn[7:0]) 에접근 ex) UDR0 = dat; // dat 변수값을읽어, 송신버퍼에서쓰기 송신버퍼는오직 UCSRnA.UDREn = 1 인상태에서만쓰기를할수있음. UDREn = 0인상태에서 UDRn에데이터를쓰면송신동작은무시됨 송신기가동작하게되면송신버퍼의데이터는송신시프트레지스터로로드됨 그리고 TXD 핀을통해직렬로전송됨 수신버퍼는 2- 레벨 FIFO 되어있음 FIFO는수신버퍼에접근할때마다변하게됨 따라서수신버퍼의내용은 SBI 또는 CBI 등의 Read-Modify-Write 명령으로사용되지말아야함 또한 SBIC, SBIS 등의비트테스트명령도 FIFO를변하게하기때문에주의해야함 50

174 1.18 USART 통신인터페이스 USART 의다중프로세서통신 1 개의마스터프로세서가여러개의슬레이브프로세서에게특정한주소를전송함으로써, 1 개의슬레이브만을지정하여데이터를전송하는동작모드 UCSRnA.MPCMn =1 로설정하면, 다중프로세서통신모드로동작 다중프로세서통신을위해송수신모두프레임을 9비트로설정해야함 마스터 = TXB[7:0] + TXB8 을송신 슬레이브 = RXB[7:0] + RXB8 을수신 9번째비트 (RXB8, TXB8) = 1 이면, 주소프레임 9번째비트 (RXB8, TXB8) = 0 이면, 데이터프레임 동작순서 모든슬레이브는 UCSRnA.MPCMn = 1 로설정하고, 마스터프로세서가주소프레임을송신하는것을대기 마스터프로세서는 TXB8 = 1 인주소프레임을송신 모든슬레이브프로세서는주소프레임을수신하면, 인터럽트를발생하여, 자신의주소프레임인지판별 지정된슬레이브프로세서는 UCSRnA.MPCMn = 0 으로설정하고, 데이터프레임을수신대기 지정되지않은슬레이브프로세서는 UCSRnA.MPCMn = 1 을그대로유지 마스터프로세서는 TXB8 = 0 인데이터프레임을송신 지정된슬레이브프로세서는 UCSRnA.MPCMn = 0 이므로, 모든데이터프레임수신가능 지정되지않은슬레이브프로세서는모든데이터프레임을무시함 지정된슬레이브프로세서는통신이전부완료되는시점에서 UCSRnA.MPCMn = 1 로설정하고대기 51

175 1.18 USART 통신인터페이스 UART 를이용한 RS232 통신 RS232 통신이란? 비동기직렬통신방식으로 PC 나주변기기간통신연결에많이사용하고있음 EIA(Electronic Industries Association) 에의해규격화되었으며, 정확히는 EIA-RS232C 규격임 DTE(Data Terminal Equipment : 데이터단말장치 ) 와 DCE(Data Communication Equipment : 데이터통신장치 ) 사이의인터페이스조건을결정하기위해고안된권고규격 DTE 는컴퓨터또는 I/O 기기등의제어장치를말함 DCE 는모뎀등의회선단말장치를말함 52

176 1.18 USART 통신인터페이스 UART 를이용한 RS232 통신 RS232C 신호및기능 핀번호 25 핀 9 핀 명 칭 신호방향 DTE-DCE 기호 1 보안용접지 (Frame Ground) - FG 2 3 송신데이터 (Transmitted Data) TXD 3 2 수신데이터 (Receive Data) RXD 4 7 송신요구 (Request to Send) nrts 5 8 송신허가 (Clear to Send) ncts 6 6 데이터 ( 통신기기 ) 세트준비 (Data Set Ready) ndsr 7 5 신호용접지 (Signal Ground) - SG(GND) 8 1 캐리어검출 (Data Carrier Detect) ndcd 20 4 데이터단말준비 (Data Terminal Ready) DTR 22 9 링알림 (Ring Indicator, 벨소리 ) nri 53

177 1.18 USART 통신인터페이스 UART 를이용한 RS232 통신 RS232C 널 - 모뎀 (Null-Modem) 통신 표준연결구조 가장심플하고 경제적인연결구조 전형적인 Null 모뎀구조궤환을이용한 AVR 자체통신테스트 궤환 (feedback) 구조자신의 2-3 연결 (RXD-TXD) 표준-핸드세이크 AVR의핸드세이크연결접속대응연결에주로이용 Full Function 모뎀의 4-6 연결 (DTR-DSR) Full Function 모뎀의 7-8 연결 (RTS-CTS) 핸드세이크방식의접속 (Full Function 접속 ) 54

178 1.18 USART 통신인터페이스 UART 를이용한 RS232 통신 AVR 과 MAX232 IC 의연결 MAX AVR TXD RXD 11 T1IN T1OUT R1OUT R1IN T2IN T2OUT 7 232_TXD 232_RXD 232_TXD 232_RXD R2OUT R2IN 8 9 핀 D-SUB Female 커넥터연결 ( 연장선연결방식 ) ex) AVR- 연장선 -PC _RXD 232_TXD D-Sub Male 9Pin( 수 ) D-Sub Female 9Pin( 암 ) - PC의 COM 포트형태 -핀이삽입될수있는 -바늘같은핀이구멍이나있음돌출된형태 9 핀 D-SUB Male 커넥터연결 (Null 모뎀연결방식 ) ex) AVR-Null 모뎀케이블 -PC 55

179 1.19 EEPROM 데이터메모리 EEPROM MCU 에내장된비휘발성메모리이며, 데이터메모리로사용됨 ATmega128 의경우내부에 4kByte(4096 Byte) 가내장 같은데이터메모리종류인 SRAM 과별개의영역에존재함 별도의상태및제어레지스터를통해제어할수있음 EEARH, EEARL (EEPROM 주소레지스터 ) EEDR (EEPROM 데이터레지스터 ) EECR (EEPROM 제어레지스터 ) EEPROM 의인터럽트 EEPROM 준비완료인터럽트 56

180 1.19 EEPROM 데이터메모리 EEPROM 제어관련레지스터 EEARH and EEARL(EEPROM Address Register) 0~4095 바이트의 EEPROM 데이터에접근할수있는 EEPROM 의주소를저장하는레지스터 EEDR (EEPROM Data Register) EEPROM 에데이터를쓰거나, 읽는동작에서 8 비트데이터가저장되는레지스터 57

181 1.19 EEPROM 데이터메모리 EEPROM 제어관련레지스터 EECR (EEPROM Control Register) Bit 3 ->EERIE : EEPROM 준비인터럽트인에이블 EEPROM 의준비인터럽트를개별적으로허용하는비트 EEPROM 준비인터럽트는 EECR 레지스터의 EEWE 비트가논리 0 일때요구된다. Bit 2->EEMWE : EEPROM 마스터쓰기인에이블 EEMWE 비트는 EEPROM 에기록가능한상태를지정하는비트 EEWE 비트를논리 1 로설정하여 EEPROM 에쓰기를할것인지결정하는비트 EEMWE = 1 일때, 4 사이클안에 EEWE = 1 로설정, EEAR 의주소에 EEDR 의데이터를쓰기함 EEMWE = 0 일때, EEWE = 1 로설정되어도아무런영향을받지않음 EEMWE = 1 로세트되면, 4 사이클이지난후에, 자동으로 EEMWE = 0 으로클리어 58

182 1.19 EEPROM 데이터메모리 EEPROM 제어관련레지스터 EECR (EEPROM Control Register) Bit 1 -> EEWE : EEPROM 쓰기인에이블 EEWE 비트는 EEPROM 에쓰기동작을허용하는스트로브신호 쓰기동작을위해서는반드시 EEMWE = 1 이어야함 쓰기동작순서» EEWE == 0 이될때까지대기» SPMCSR.SPMEN == 0 이될때까지대기 MCU 의플래시메모리에값을쓰는도중에는 EEPROM 에값을쓸수없기때문» EEAR 과 EEDR 에주소및데이터를쓴다 ( 선택사항 )» EEMWE = 1 로세트하고, 4 사이클안에 EEWE = 1 로세트함 보통은 EECR = (1 << EEMWE) (1 << EEME); 의문장으로동시에두비트를세트함 쓰기동작전에 SREG.I = 0 으로설정하여인터럽트를금지하고, 후에 SREG.I = 1 로인터럽트허용» 쓰기동작을하는동안 EEMWE 비트는 4 사이클후에 0 으로클리어되므로, 쓰기도중에인터럽트 가발생하면 EEPROM 쓰기동작은실패할수있기때문에, SREG.I = 0 으로하여인터럽트서브루 틴으로점프하지않도록하는것이바람직함 1MHz 의클록에서 1 바이트쓰기동작시간 = 약 8.5 [ms] 59

183 1.19 EEPROM 데이터메모리 EEPROM 제어관련레지스터 EECR (EEPROM Control Register) Bit 0 -> EERE : EEPROM 읽기인에이블 EERE 비트는 EEPROM 에읽기동작을허용하는스트로브신호 EEAR = 목적주소때, EERE = 1 이면, 읽기동작을시작 EEPROM 을읽는과정은한번의명령으로즉시데이터를읽음.» EEPROM 읽을때다음명령이실행되기전 4 사이클동안 CPU 는정지된다. 사용자는읽기동작을시작하기전에 EEWE 비트를폴링방식으로검사해야함» 쓰기동작중에는, EEPROM 의데이터읽기동작불가능 EEPROM 의주소 (EEAR 레지스터 ) 변경불가능 60

184 1.20 ATmega128의아날로그디지털변환 AD 변환개념 분해능이높을수록변환된디지털신호를정밀한아날로그신호로변환이가능해진다. 샘플링속도가높을수록변환된디지털신호를정밀한아날로그신호로변환이가능해진다. V V V 2 비트 V REF if) V REF = 5 [V] V UNIT = V REF / 2 2비트 = 5 / 4 V UNIT = 1.25 [V] 0 Sample 1 Sample 2 Sample 3 Sample 4 4 비트 t V REF Sample 1 if) V REF = 5 [V] V UNIT = V REF / 2 4비트 = 5 / 16 V UNIT = [V] Sample 2 Sample 3 Sample 4 10 비트 t V REF V UNIT 0 Sample 1 if) V REF = 5 [V] V UNIT = V REF / 210 비트 = 5 / 1024 = [mv] 5 [mv] Sample 2 Sample 3 Sample 4 t V V V 1023 V REF 1023 V REF 1023 V REF 비트 비트 Sample 1 Sample 2 Sample 3 Sample 4 t S1 S2 S3 S4 S5 S6 S7 S8 t S1 S3 S5 S7 S9 S11 S13 S15 S2 S4 S6 S8 S10 S12 S14 S16 t 61

185 1.20 ATmega128의아날로그디지털변환 ATmega128 의 ADC 특징 10 비트분해능 0.5 LSB 적분비선형성 (Integral Non-linearity) ±2 LSB 정확도 13 ~ 260 usec 변환시간 (50 khz ~ 200 khz) 15kSPS 의최대분해능 8 채널의멀티플렉스된단일입력 7 채널의차동입력 10 배또는 200 배의증폭률을가진 2 채널의차동입력 ADC 결과값의좌정렬 0 ~ AVCC 의 ADC 입력전압범위 선택가능한 2.56V 의 ADC 기준전압 지속 (Free running) 또는단일 (Single) 변환모드 ADC 변환완료인터럽트 ADC 잡음감소슬립모드지원 62

186 1.20 ATmega128의아날로그디지털변환 ATmega128 의 ADC 특징 축차비교형 (SAR) ADC Successive-Approximation ADC 10 비트분해능 AVCC, AGND 별도전원사용 AREF 외부기준전압단자 포트 F 를 AD 입력채널로사용 ADC0 ~ ADC7 축차비교형 ADC 의기본구성 10 비트 DAC 아날로그비교기 10 비트링카운터 레지스터 ADMUX : AD 멀티플렉서 ADSCR : AD 상태제어 ADCH : AD 변환상위바이트 ADCL : AD 변환하위바이트 63

187 1.20 ATmega128의아날로그디지털변환 ATmega128 의 ADC 특징 (D) 샘플 / 홀드및변환시간 조건 샘플 / 홀드시간 ( 사이클 ) AD 변환시간 ( 사이클 ) ADEN=1 설정이후에최초변환그이후의일반적인 AD 변환 ( 단극성입력 ) 그이후의일반적인 AD 변환 ( 차동입력 ) /2.5 13/14 (A) ADEN = 1 설정후최초의변환 (B) 그이후의일반적인변환 (C) 프리런닝모드의동작타이밍 64

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729> 2주차 ATmega128의내부구조및퓨즈비트설정 Next-Generation Networks Lab. 4. ATmega128의클럭시스템과배분 시스템클럭 마이크로컨트롤러동작의기준이되는클럭의주파수 AVR은시스템클럭을내부모듈별로독립적으로배분하여제어 슬립 (Sleep) 모드를활용하여내부모듈별로클럭차단이가능하여전력소모관리 퓨즈비트를통해다양한클럭소스선택가능 클럭배분 (

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

More information

AVR Atmega128

AVR Atmega128 AVR Atmega128 외부인터럽트 중원대학교최재영 인터럽트와폴링 MCU 에서입력을받아들이는방법은폴링방식과인터럽트방식이있음 - 폴링 (Polling) 방식 : 사용자의명령어에의해서하드웨어의변경사항을주기적으로읽어들이는방식 주기적으로하드웨어의변화를체크하기때문에사용자의프로그래밍에따라다양핚변화에대응이가능하지만 CPU 의점유율이높기때문에반응속도가느리다. 인터럽트 (Interrupt)

More information

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074> 7 장. 인터럽트의동작 한국산업기술대학교 이응혁교수 WWW.ROBOTICSLAB.CO.KR 1 7.1 인터럽트 (Interrupt) 개요 인터럽트개념 프로그램이수행되고있는동안에어떤조건이발생하여수행중인프로그램을일시적으로중지시키게만드는조건이나사건의발생 비동기적으로처리 다른프로그램이수행되는동안여러개의사건을처리할수있는메커니즘 인터럽트가발생하면마이크로컨트롤러는현재수행중인프로그램을일시중단하고,

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729> 1주차 ATmega128의구조와메모리 Next-Generation Networks Lab. 1. ATmega128의특징 고성능, 저전력의 8 비트마이크로컨트롤러 진보된 RISC 구조 대부분단일클럭에서실행되는강력한 133개의명령어구조 16MHz에서거의 16MIPS로동작 32개의 8 bit 범용작업레지스터와추가된주변장치제어레지스터 2 사이클내에서수행되는강력한곱셈기내장

More information

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고 CHAPTER 7 인터럽트 가. 레지스터구조이해하기 나. 엔코더제어하기 인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고급한일을처리한후에본래의일을다시수행하는것을말한다.

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

정보보안 개론과 실습:네트워크

정보보안 개론과 실습:네트워크 ` 마이크로프로세서설계및실습 2 주차강의자료 2/31 Contents 학습목표 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ATmega128 내부구조에서특수레지스터, 범용레지스터의역할을이해할수있다. ATmega128 내부에포함된명령어인출과실행절차를알아보고, 명령어유형을통해동작을이해할수있다. 내용

More information

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터 HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터 타이머와카운터 1. 클럭과카운터 2. ATMega128 의타이머 / 카운터 3. 8 비트타이머 / 카운터의일반동작모드 4. 타이머로 LED 점멸시키기 5. 타이머로디지털시계만들기 타이머 / 카운터 타이머와카운터 정확한시간의측정이필요하다.( 자명종과스톱워치

More information

AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 소속 : 원광대학교전기 정보통신공학부

AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 소속 : 원광대학교전기 정보통신공학부 AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 (slee@wku.ac.kr) 소속 : 원광대학교전기 정보통신공학부 학습목표 2/39 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ATmega128 내부구조에서메모리공간, I/O 공간의프로그램과데이터를처리하기위한특수레지스터,

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

2. AVR(ATmega162)의 구조

2. AVR(ATmega162)의 구조 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

More information

AVR ATmega128 소개 AVR ATmega128 IT Eng 학습목표 ü 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ü ATmega128 내부구조에서메모리공간, I/O 공간의프로그램과데이터를처리하기

AVR ATmega128 소개 AVR ATmega128 IT Eng 학습목표 ü 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ü ATmega128 내부구조에서메모리공간, I/O 공간의프로그램과데이터를처리하기 AVR ATmega128 소개 AVR ATmega128 학습목표 ü 다양한 AVR 패밀리와소자특징을알아보고, 제어환경에따라 AVR 소자를선택하여개발할수있는융통성을이해할수있다. ü 에서메모리공간, I/O 공간의프로그램과데이터를처리하기위한특수레지스터, 범용레지스터의역할을이해할수있다. ü ATmega128 내부에포함된명령어인출과실행절차를알아보고, 명령어유형을통해동작을이해할수있다.

More information

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D> 7 장. 인터럽트의동작 한국산업기술대학교 이응혁 ehlee@kpu.ac.kr WWW.ROBOTICSLAB.CO.KR 1 7.1 인터럽트 (Interrupt) 개요 인터럽트개념 프로그램이수행되고있는동안에어떤조건이발생하여수행중인프로그램을일시적으로중지시키게만드는조건이나사건의발생 비동기적으로처리 다른프로그램이수행되는동안여러개의사건을처리할수있는메커니즘 인터럽트가발생하면마이크로컨트롤러는현재수행중인프로그램을일시중단하고,

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

CHAPTER 2 마이크로컨트롤러구조이해하기 가. ATmega128 기능 나. CRX10 구조

CHAPTER 2 마이크로컨트롤러구조이해하기 가. ATmega128 기능 나. CRX10 구조 CHAPTER 2 마이크로컨트롤러구조이해하기 가. ATmega128 기능 나. CRX10 구조 가. ATmega128 기능 1) 기능 고성능저전력 AVR 8비트마이크로컨트롤러 고급 RISC 구조 - 133개의강력한명령어 - 최대단일주기클록수행 - 32 8 범용레지스터 + 주변기기제어레지스터 - 완전한정적동작 - 16 MHz에서 16 MIPS(Million Instruction

More information

Microsoft PowerPoint - avr_lecture1.ppt

Microsoft PowerPoint - avr_lecture1.ppt 임베디드마이크로프로세서 프로그래밍실전 제작 : 네로테크 강의 : 김종형 AVR 개요및개발환경구축 1. AVR 개요및특징 2. AVR 개발환경구축 -2- 1-1 AVR 의개요 AVR [ Alf(Bogen) Vergard(Wollen) Risc ] 이란? ATMEL 사에서제작된 RISC(Reduced Instruction Set Computer) 구조의저전력 CMOS

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 7주차 AVR의 A/D 변환기제어레지스터및관련실습 Next-Generation Networks Lab. 3. 관련레지스터 표 9-4 레지스터 ADMUX ADCSRA ADCH ADCL 설명 ADC Multiplexer Selection Register ADC 의입력채널선택및기준전압선택외 ADC Control and Status Register A ADC 의동작을설정하거나동작상태를표시함

More information

슬라이드 1

슬라이드 1 AVR(Atmega128) Interrupt 1 Interrupt Polling 사용자가명령어를사용하여입력핀의값을계속읽어서변화를알아냄 모든경우의입력또는값의변화에대응하여처리가가능 Interrupt MCU 자체가하드웨어적으로그변화를체크하여변화시에만일정한동작 하드웨어적으로지원되는몇개의입력또는값의변화에만대응처리가가능 처리속도는일반적인경우인터럽트가빠름 인터럽트발생시

More information

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드] Chapter. 5 인터럽트 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. 폴링과인터럽트그리고인터럽트서비스루틴 2. ATMega128 인터럽트 3. 인터럽트로 LED 점멸시키기 4. 인터럽트로스톱워치만들기 인터럽트 1. 폴링과인터럽트그리고인터럽트서비스루틴 2. ATMega128 인터럽트 3. 인터럽트로 LED 점멸시키기 4. 인터럽트로스톱워치만들기

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 6 th Lecture 유명환 ( yoo@netplug.co.kr) 1 2 통신 관련이야기 시리얼통신 관련이야기 INDEX 3 ATmega128 시리얼통신회로도분석 4 ATmega128 시리얼통신컨트롤러 (USART) 분석 5 ATmega128 시리얼통신관련레지스터분석 6 ATmega128 시리얼통신실습 1 통신 관련이야기 동기

More information

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역 Section 03 인터럽트활성화와인터럽트서비스루틴연결 33/82 Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역인터럽트활성화비트가 1 로셋되었을때

More information

SAT8-10.hwp

SAT8-10.hwp Dr. Kim ATmega8 Training Kit (SAT8-10) 이란? 현제 Atmega8 마이크로컨트롤러는산업현장에서 MP3 플레이어, DMB 수신기, 로봇등첨단제품에매우많이사용되고있으며, 각종기사시험의실기시험이나졸업작품등에서매우중요한위치를차지하고있다. 하지만학습용키트나모듈등이너무비싸서개인적으로구입하여사용하기가매우힘들었다. 그래서 Dr. Kim Training

More information

Microsoft PowerPoint - 제7장 타이머와 PWM (HBE-MCU-Multi AVR).ppt [호환 모드]

Microsoft PowerPoint - 제7장 타이머와 PWM (HBE-MCU-Multi AVR).ppt [호환 모드] Chapter. 7 타이머와 PWM HBE-MCU-Multi AVR Jaeheug, Lee 목차 1. PWM(Pulse Width Modulatio) 2. 8비트타이머 / 카운터의동작모드 3. 16비트타이머 / 카운터 4. PWM으로 LED 밝기조절하기 5. 타이머로버저울리기 PWM(Pulse Width Modulatio) 펄스 (Pulse) 와펄스폭 (Pulse

More information

Microsoft PowerPoint - 08-MP-4-interrupt

Microsoft PowerPoint - 08-MP-4-interrupt 순천향대학교컴퓨터학부이상정 1 학습내용 인터럽트기본 ATmega128 인터럽트벡터외부인터럽트인터페이스외부인터럽트프로그램예 순천향대학교컴퓨터학부이상정 2 인터럽트기본 순천향대학교컴퓨터학부이상정 3 인터럽트개념 CPU 내부또는외부의요구에의해서정상적인프로그램의실행순서를변경하여보다시급한작업 ( 인터럽트서비스루틴 ) 을먼저수행한후에다시원래의프로그램으로복귀하는것 인터럽트는주변장치의서비스요청에

More information

ATmega128 Architecture Pin Configurations 1 Jo Sang Min DanKook Univ. E.E. Electron - Func1 Func2 Func3 PIN Num VCC Digit

ATmega128 Architecture Pin Configurations 1 Jo Sang Min DanKook Univ. E.E. Electron -   Func1 Func2 Func3 PIN Num VCC Digit ATmega128 Architecture Pin Configurations 1 Func1 Func2 Func3 PIN Num VCC 21 52 Digital Supply Voltage (+5V) GND 22 53 63 Ground RESET 20 CPU Reset PEN 1 Programming Enable XTAL-1 24 Oscillator Input XTAL-2

More information

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 ATmega128 인터럽트 1 제 04 강 인터럽트 (Interrupt) 인터럽트개요외부인터럽트참고 ) FND 회로실습및과제 인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 인터럽트 ( 계속 ) ATmega128 인터럽트 3 * 인터럽트벡터 (P.104 표 7.1 참조 ) : 35 개 인터럽트 ( 계속 ) * 인터럽트허용 / 금지메커니즘 ATmega128

More information

ATmega128

ATmega128 ATmega128 외부인터럽트실습 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring) Prof. Jae Young Choi 외부인터럽트실험 외부인터럽트를사용하기위해관렦레지스터를설정 일반적으로 I/O 포트에대한설정이끝난후에외부인터럽트나타이머 / 카운터설정 PE4~7 번까지 4 개의외부인터럽트 INT4~INT7 까지사용 외부인터럽트사용법요약

More information

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770> 제목 : 실험 #5 예비보고서 Interrupt 제어 실험목적 - Interrupt에대한기초지식을알아본다. - Atmega128의 Interrupt를사용해보고, 동작방식과동작방법및특징을확인한다. 실험장비 - ATmega128(AVR Chip), Switch, LED(Green-LED) 실험이론 - 인터럽트 (Interrupt) 인터럽트는프로그램이수행되고있는동안에어떤조건이발생하여수행중인프로그램을일시적으로중지시키게만드는조건이나사건의발생을말한다.

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

AVR128 자료.hwp

AVR128 자료.hwp [AVR128의특징과기본구조 ] 04. AVR128의특징 AVR은 8-비트 RISC(Reduced Instruction Set Computer) 구조로명령어가간단하며동작속도가빠르고, 1MHz당약 1MIPS(Million Instruction Per Second) 의성능을보인다. AVR 의대표적인특징은다음과같다. 향상된 RSIC구조 - 133개의강력한명령어들이대부분단일클럭으로실행된다.

More information

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR IMC-V0.1 예제소스파일 1. UART 소스코드 (page 1-3) 2. Encoder 소스코드 (page 4-7) 3. ADC 소스코드 (page 8-10) UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ

More information

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63> 라인트레이서강좌 4. 프로그래밍 2005년 8월 1일류대우 (davidryu@newtc.co.kr) 1. 라인트레이서란? 라인트레이서는정해진주행선을따라움직이는자율이동로봇이다. 현재공장자동화부분에서이용되고있는무인반송차가라인트레이서이다. 라인트레이서의기본적인원리는주어진주행선을센서로검출하여이것에따라목적위치까지이동하는것이다. 라인트레이서는크게 3부분 - 컨트롤러부,

More information

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770> I COOKBOOK 87 이론, 실습, 시뮬레이션 디지털논리회로 ( 개정 3 판 ) (Problem Solutions of Chapter ) . JK 플립플롭을사용한비동기식 6진상향카운터설계 6진카운터를구성하기위해출력이목표로하는최고카운트에 을더한 6에도달한순간을포착하여모든플립플롭의출력을 Clear 한다. 6진카운터는비동기입력 (Clear, Preset) 이있는

More information

CAN-fly Quick Manual

CAN-fly Quick Manual adc-171 Manual Ver.1.0 2011.07.01 www.adc.co.kr 2 contents Contents 1. adc-171(rn-171 Pack) 개요 2. RN-171 Feature 3. adc-171 Connector 4. adc-171 Dimension 5. Schematic 6. Bill Of Materials 7. References

More information

JMOD : ATmega128 기본모듈 사용자설명서 제이씨넷

JMOD : ATmega128 기본모듈 사용자설명서 제이씨넷 JMOD-128-1 : ATmega128 기본모듈 사용자설명서 제이씨넷 www.jcnet.co.kr 1. JMOD-128-1 개요 1.1 JMOD-128-1 소개 은 ATmega128 MCU를이용하여, 다양한기능을구현하거나시험해볼수있도록모듈형태로개발된마이크로콘트롤러모듈입니다. 개발자의편의를위하여소형모듈에서는국내최초로프로그램 (ISP)

More information

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

온라인 IT 교육최강 (  강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1 - 2. 중앙처리장치 (Central Processing Unit) 주기억장치에기억된명령을꺼내서해독하고, 시스템전체에지시신호를내는장치명령코드가명령을수행할수있게필요한제어기능을제공제어장치의구성

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

Microsoft Word - PEB08_USER_GUIDE.doc

Microsoft Word - PEB08_USER_GUIDE.doc 0. PEB08 이란? PEB08(PIC EVALUATION BOARD 8bits) 은 Microchip 8bit Device 개발을쉽고편리하게할수있는보드입니다. 1. 다양한 8bit Device 지원 기존대부분의 8bit 보드의경우일부 Pin-Count만지원을하였지만, PEB08은 PIC10, PIC12, PIC16, PIC18의 DIP Type Package의모든

More information

정보보안 개론과 실습:네트워크

정보보안 개론과 실습:네트워크 ` 마이크로프로세서설계및실습 12-13 주차강의자료 학습목표 A/D 변환기의제어방법을이해한다 능숙하게 A/D 변환기를제어할수있도록반복실습한다 2/28 아날로그 - 디지털변환회로 아날로그 - 디지털변환회로 (A/D 변환회로 ) 는, 아날로그전기신호를디지털전기신호로변환하는전자회로이다 A/D 컨버터 (ADC: Analog-to-digital converter) 라고도불린다

More information

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR)

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR) 한백전자기술연구소 HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR편) 마이크로컨트롤러기능 제 3 장 GPIO 입출력제어 GPIO 입출력제어 1. HBE-MCU-Multi 구동 2. 마이크로컨트롤러와 GPIO 3. AVR 마이크로컨트롤러의입출력포트 4. GPIO 를이용하여 LED 켜기 5. GPIO를이용한스위치눌러 LED 불켜기 6. GPIO 를이용하여

More information

Microsoft Word - logic2005.doc

Microsoft Word - logic2005.doc 제 8 장 Counters 실험의목표 - Catalog counter 의동작원리에대하여익힌다. - 임의의 counter를통하여 FSM 구현방법을익힌다. - 7-segment display 의동작원리를이해한다. 실험도움자료 1. 7-segment display 7-segment는디지털회로에서숫자를표시하기위하여가장많이사용하는소자이다. 이름에서알수있듯이 7개의 LED(

More information

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. D/A 변환기 2. 병렬 D/A 변환기로 LED 밝기제어하기 3. 직렬 D/A 변환기로 LED 밝기제어하기 D/A 변환기 D/A 변환기 (Digital to Analog Converter) 디지털데이터를아날로그전압으로변환하는소자 A/D변환기와함께마이크로프로세서응용회로에서널리사용됨.

More information

목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기

목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기 Chapter. 10 외부메모리인터페이스 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기 ATMega128 의외부메모리인터페이스 ATMega128 의외부메모리인터페이스 칩외부에더큰용량의메모리나별도의주변장치들을연결하기위한인터페이스

More information

마이크로프로세서 개요

마이크로프로세서 개요 1 주 개요 메카트로닉스공학부 조철우 8051 Pin Layout 8051 3 Atmel 89C2051 4 강의의개요 컴퓨터및의기원과동작원리를학습 마이크로컨트롤러를배우기위한기초원리 마이크로컨트롤러를활용하기위한도구사용법 마이크로컨트롤러를활용하기위한기초시스템설계및프로그래밍 History of Computer 컴퓨터의역사. 최초의컴퓨터 - 1946년 ENIAC,

More information

[ 마이크로프로세서 1] 1 주차 2 차시. 마이크로프로세서와마이크로컨트롤러발달과정 1 주차 2 차시마이크로프로세서와마이크로컨트롤러발달과정 학습목표 1. 마이크로프로세서발달과정과종류를설명할수있다. 2. 인텔 8051 계열과아트멜 (Atmel) 의특성을설명할수있다. 학습

[ 마이크로프로세서 1] 1 주차 2 차시. 마이크로프로세서와마이크로컨트롤러발달과정 1 주차 2 차시마이크로프로세서와마이크로컨트롤러발달과정 학습목표 1. 마이크로프로세서발달과정과종류를설명할수있다. 2. 인텔 8051 계열과아트멜 (Atmel) 의특성을설명할수있다. 학습 1 주차 2 차시마이크로프로세서와마이크로컨트롤러발달과정 학습목표 1. 마이크로프로세서발달과정과종류를설명할수있다. 2. 인텔 8051 계열과아트멜 (Atmel) 의특성을설명할수있다. 학습내용 1 : 마이크로프로세서발달과정 1. 마이크로프로세서종류 1 인텔 ( intel) 80 계열 2 모토롤라 (motorola) 68 계열 2. 인텔 80 계열 1 최초 1971

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

More information

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc ATMEGA 2560 모듈 ( Model : AM-2560PRO V01) 메뉴얼 ( 주 ) 뉴티씨 (NEWTC) 1 AM-2560Pro 소개 ATMega2560 16AU AVR 마이크로컨트롤러사용 256Kbit (32Kbyte) SRAM 내장 (ISSI IS62C256AL) 2줄짜리 2mm Header Pin이양쪽으로 50 핀씩배치되어있음. MAX3232 내장으로

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

Computer Architecture

Computer Architecture CPU 의구조와기능 CPU 의기본구조 명령어실행과실행사이클 명령어파이프라이닝 CPU 의기능 2 명령어인출 (Instruction Fetch) 기억장치로부터명령어읽기 명령어해독 (Instruction Decode) 수행해야할동작을결정하기위하여명령어를해독 모든명령어들에대하여공통적으로수행 데이터인출 (Data Fetch) 명령어실행에필요한데이터를기억장치혹은 I/O

More information

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M 중앙처리장치 (CPU: Central Process Unit) 1) 제어장치 (Control Unit) 컴퓨터시스템의모든장치들에게동작을지시하고제어하는장치로주기억장치에서읽어온명령어를해독하고해당장치에게제어신호를보낸다. 구성회로 : 부호기, 명령해독기, 번지해독기 구성레지스터 : PC( 프로그램카운터 ), IR( 명령어레지스터 ) 부호기 ( 제어신호발생기 ) 해독한명령어에따라서해당장치로보낼제어신호를생성하는회로

More information

학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치

학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치 컴퓨터구조 제 12 강제어장치 학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 2 12. 제어장치 학습목표 r 프로세스내의제어장치의기능과역할을공부한다. r 마이크로연산의표현을공부하다. r제어장치의구성과마이크로연산을공부한다. r제어장치의구현방법을알아본다. r 마이크로프로그램을이용한제어장치의구조와동작을공부한다.

More information

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - hy2-12.pptx CPU의구조와기능 CPU 의명령어수행과정 명령어인출 (Instruction Fetch) : 기억장치로부터명령어를읽어온다 명령어해독 (Instruction Decode) : 수행해야할동작을결정하기위하여명령어를해독한다 모든명령어들에대하여공통적으로수행 데이터인출 (Data Fetch) : 명령어실행을위하여데이터가필요한경우에는기억장치혹은 I/O 장치로부터그데이터를읽어온다

More information

Dr.Kim ATmega128 Training Kit (SAT128-300).hwp

Dr.Kim ATmega128 Training Kit (SAT128-300).hwp < 그림 1> Dr.Kim ATmega128 Training Kit 전체 구성도 < 그림 2> Dr.Kim ATmega128 Training Kit -1- 차 례 제 1 장 Dr.Kim ATmega128 Training Kit (SAT128-300) 구성 1. 제품구성 2. ATmega128 특징및구조 제 2 장 Dr.Kim ATmega128 Training

More information

Microsoft PowerPoint - M07_RTL.ppt [호환 모드]

Microsoft PowerPoint - M07_RTL.ppt [호환 모드] 제 7 장레지스터이동과데이터처리장치 - 디지털시스템의구성 data path 모듈 : 데이터처리, 레지스터, 연산기, MUX, control unit 모듈 : 제어신호발생, 연산의순서지정 - register transfer operation : reg 데이터이동 / 처리 reg set,operation, sequence control - micro-operation

More information

[ 마이크로프로세서 1] 1 주차 1 차시. 마이크로프로세서개요 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Micropr

[ 마이크로프로세서 1] 1 주차 1 차시. 마이크로프로세서개요 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Micropr 1 주차 1 차시마이크로프로세서개요 학습목표 1. 마이크로프로세서 (Microprocessor) 를설명할수있다. 2. 마이크로컨트롤러를성능에따라분류할수있다. 학습내용 1 : 마이크로프로세서 (Microprocessor) 1. 마이크로프로세서란? 1 작은실리콘칩위에트랜지스터를수천만개집적한소자 2 마이크로 [μ] 는매우작은크기, 프로세서는처리기혹은 CPU를뜻하므로

More information

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp l Y ( X g, Y g ) r v L v v R L θ X ( X c, Yc) W (a) (b) DC 12V 9A Battery 전원부 DC-DC Converter +12V, -12V DC-DC Converter 5V DC-AC Inverter AC 220V DC-DC Converter 3.3V Motor Driver 80196kc,PWM Main

More information

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx MAI-ISP-STK500 사용자매뉴얼 Manual Ver. 2.5 엠에이아이 (M.A.I) www.maicom.co.kr http://cafe.naver.com/at128mai [ 모델이름 ]: MAI-ISP-STK5000 [ 용도 ]: AVR MCU의내부 Flash Memory 및 EEPROM 에 HEX 파일을 Write W / Readd 할수있는기능을하는프로그래머로써,

More information

Computer Architecture

Computer Architecture 명령어의구조와주소지정방식 명령어세트명령어의형식주소지정방식실제명령어의형태 이자료는김종현저 - 컴퓨터구조론 ( 생능출판사 ) 의내용을편집한것입니다. 2.4 명령어세트 (instruction set) 어떤 CPU 를위하여정의되어있는명령어들의집합 명령어세트설계를위해결정되어야할사항들 2 연산종류 (operation repertoire) CPU 가수행할연산들의수와종류및복잡도

More information

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - hy2-12.pptx 2.4 명령어세트 (instruction set) 명령어세트 CPU 가지원하는기계어명령어들의집합 명령어연산의종류 데이터전송 : 레지스터 / 메모리간에데이터이동 산술연산 : 덧셈, 뺄셈, 곱셈및나눗셈 논리연산 : 비트들간의 AND, OR, NOT 및 XOR 연산 입출력 (I/O) : CPU( 레지스터 ) 와외부장치들간의데이터이동 프로그램제어 : 분기, 서브루틴호출

More information

목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기

목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기 Chapter. 9 A/D 컨버터 HBE-MCU-Multi AVR Jaeheug, Lee 목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기 A/D 컨버터개요 A/D 컨버터 (Aalog-to-Digital Coverter) 아날로그신호를컴퓨터가읽을수있는병렬또는직렬의디지털데이터로변환하여주는장치 측정하려는아날로그물리량의범위및시스템의응용목적에따라분해능이나정밀도가적합한것을사용.

More information

Microsoft PowerPoint - Chapter 8_USART Serial Communication

Microsoft PowerPoint - Chapter 8_USART Serial Communication MEC382 마이크로프로세서응용및실습 USART Serial Communication Jee-Hwan Ryu School of Mechanical Engineering 통신방법 병렬통신 고속데이터전송이필요한곳에서이루어짐 여러개의라인에서동시에이루어짐 직렬통신 한라인에서이루어짐 데이터의송수신속도가느리다 라인수적고멀리까지통신 동기식, 비동기식있음 동기식 : 기준클럭인동기클럭라인과데이터송

More information

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog 뉴티씨 (NEWTC) FPGA 개발 키트 (FB-CY4E-DEV) 매뉴얼 (주) 뉴티씨 ( NEWTC ) 1. FB-CY4E-DEV (FPGA 개발 키트) 소개 ALTERA 사의 FPGA(EP4CE6E22C8N)를 이용한 개발보드 입니다. USB 블래스터(FM-USBBLASTER) 를 이용하여 프로그램을 다운로드 가능 LCD, FND(7-Segment), 스위치

More information

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - 30.ppt [호환 모드] 이중포트메모리의실제적인고장을고려한 Programmable Memory BIST 2010. 06. 29. 연세대학교전기전자공학과박영규, 박재석, 한태우, 강성호 hipyk@soc.yonsei.ac.kr Contents Introduction Proposed Programmable Memory BIST(PMBIST) Algorithm Instruction PMBIST

More information

Chapter ...

Chapter ... Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준

More information

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc

Microsoft Word - Ahram_ISP_V15_Manual_V20.doc Ahram ISP V1.5 사용자매뉴얼 Manual Ver 2.0 Ahramsoft CO.LTD www.ahramsoft.com Contents 1. 모델이름 ------------------------------------------------------- 3 2. 용 도 -------------------------------------------------------

More information

MicrocontrollerAcademy_Lab_ST_040709

MicrocontrollerAcademy_Lab_ST_040709 Micro-Controller Academy Program Lab Materials STMicroelectronics ST72F324J6B5 Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun

More information

Microsoft PowerPoint - Ch13

Microsoft PowerPoint - Ch13 Ch. 13 Basic OP-AMP Circuits 비교기 (Comparator) 하나의전압을다른전압 ( 기준전압, reference) 와비교하기위한비선형장치 영전위검출 in > 기준전압 out = out(max) in < 기준전압 out = out(min) 비교기 영이아닌전위검출 기준배터리 기준전압분배기 기준전압제너다이오드 비교기 예제 13-1: out(max)

More information

실험 5

실험 5 실험. OP Amp 의기초회로 Inverting Amplifier OP amp 를이용한아래와같은 inverting amplifier 회로를고려해본다. ( 그림 ) Inverting amplifier 위의회로에서 OP amp의 입력단자는 + 입력단자와동일한그라운드전압, 즉 0V를유지한다. 또한 OP amp 입력단자로흘러들어가는전류는 0 이므로, 저항에흐르는전류는다음과같다.

More information

M16_32KIT_Manual.hwp

M16_32KIT_Manual.hwp M16/32KIT Mega 16/32 KIT Technical Manual AVRMALL http://www.avrmall.com/ September 20, 2004 Copyright (c) 2003,2004 AVRMALL All Rights Reserved. M16/32KIT Technical Manual September 20, 2004 Page 2 of

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

<4D F736F F F696E74202D20332EB5F0C1F6C5D0C8B8B7CEBFCD20B1B8C7F62E >

<4D F736F F F696E74202D20332EB5F0C1F6C5D0C8B8B7CEBFCD20B1B8C7F62E > 디지털회로 디지털논리의표현 디지털회로 디지털회로구현 dolicom@naver.com http://blog.naver.com/dolicom 논리 논리게이트 논리게이트 논리게이트 (Logic gate) 또는 로구성된 2 진정보를취급하는논리회 (logic circuit) 일반적으로 2 개이상의입력단자와하나의출력단자 기본게이트 : AND OR NOT 기본게이트로부터

More information

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 컴퓨터구조 제 9 강 중앙처리장치의조직과기능 학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능 학습목표 rcpu 의성능을향상시키는요인들을알아본다. rcpu 의기본적인기능을이해한다. rcpu 는 ALU, 제어장치, 레지스터집합,

More information

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로 Lab. 1. I-V Characteristics of a Diode Lab. 1. 연산증폭기특성실험 1. 실험목표 연산증폭기의전압이득 (Gain), 입력저항, 출력저항, 대역폭 (Bandwidth), 오프셋전압 (Offset Voltage), 공통모드제거비 (Common-mode Rejection Ratio; CMRR) 및슬루율 (Slew Rate) 등의기본적인성능파라미터에대해서실험을통해서이해

More information

BY-FDP-4-70.hwp

BY-FDP-4-70.hwp RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,

More information

논리회로설계 6 장 성공회대학교 IT 융합학부 1

논리회로설계 6 장 성공회대학교 IT 융합학부 1 논리회로설계 6 장 성공회대학교 IT 융합학부 제 6 장플립플롭 조합회로 현재의입력상태에의해출력이결정 과거의상태에의해영향받지않음 순차회로 현재의입력 기억소자에기억된과거의입력의조합에의해출력이결정됨 조합회로를위한논리게이트 + 기억소자 순차회로의기억소자 플립플롭 (Flip Flop, F/F) 플립플롭 래치 (latch) 비트의정보를저장 플립플롭중가장간단한형태동기형플립플롭

More information

Microsoft Word - EastSocket매뉴얼_ _.doc

Microsoft Word - EastSocket매뉴얼_ _.doc USB 전원을이용한 SMD 패키지라이팅지원보드 저가의라이팅장비를사용하여 SMD 패키지마이컴을라이팅할수있도록지원하는장비입니다. 각종제품개발시마이컴을 SMD로사용하는추세로이를양산에적용시고가의장비를사용해야했습니다. 아니면보드에다운로더를사용하여마이컴라이팅을했습니다. 그에따른생산속도의저하및고가의장비구입에따른경제적부담이컸습니다. 이를대처하기위해저가및기존개발에사용한장비를그대로사용하여라이팅을할수있는지원장비를개발했습니다.

More information

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

뉴티씨 (NEWTC)   ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC )   1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을 ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을이용한초소형모듈 AM-8PL에내장된 UART 포트로디버깅가능 ( 전원핀포함된뉴티씨 4핀 UART 배열 ) 8MHz 초소형크리스탈클럭채용으로안정성확보및 3.3V/5V 전원에모두동작함. 전원전압 (3.3V/5V)

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

Microsoft PowerPoint - AVR100%(1).ppt

Microsoft PowerPoint - AVR100%(1).ppt GREENTECH SYSTEM CO., LTD. AVR 100% 활용하기 목 차 그린텍시스템 AVR 이란 AVR ATmega128 AVR ATmega128 활용 SPI 사용방법 실 기 습 타 2 AVR 이란 AVR 어원 AVR 은 Alf(Bogen) Vergard(Wollen) Risc(Reduced Instruction Set Computer) 의약자로서

More information

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다. 마이크로프로세서의원리 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 (slee@wku.ac.kr) 소속 : 원광대학교전기 정보통신공학부 학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

More information

ADP-2480

ADP-2480 Mitsubishi PLC 접속 GP 는 Mitsubishi FX Series 와통신이가능합니다. 시스템구성 6 7 8 GP-80 RS- Cable RS-C Cable FXN--BD FXN--BD 6 FX Series(FXS,FXN,FXN,FXNC, FXU) 7 FXS, FXN 8 FXN FX Series 는기본적으로 RS- 통신을하며, RS-/ converter

More information

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지

2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지 PX-8000 SYSTEM 8 x 8 Audio Matrix with Local Control 2 PX-8000과 RM-8000/LM-8000등의 관련 제품은 시스템의 간편한 설치와 쉬운 운영에 대한 고급 기술을 제공합니다. 또한 뛰어난 확장성으로 사용자가 요구하는 시스템을 손쉽게 구현할 수 있습니다. 메인컨트롤러인 PX-8000의 BGM입력소스를 8개의 로컬지역에

More information

목차 Section 2. Oscillator Section 3. Reset Section 4. Architecture Section 5. CPU and ALU Section 6. Memory organization Section 7. Data EEPROM Section

목차 Section 2. Oscillator Section 3. Reset Section 4. Architecture Section 5. CPU and ALU Section 6. Memory organization Section 7. Data EEPROM Section Microchip Mid-Range MCU Family Reference Manual Section 9. I/O 목차 Section 2. Oscillator Section 3. Reset Section 4. Architecture Section 5. CPU and ALU Section 6. Memory organization Section 7. Data EEPROM

More information

Microsoft PowerPoint - hw8.ppt [호환 모드]

Microsoft PowerPoint - hw8.ppt [호환 모드] 8.1 데이터경로와제어장치 Chapter 8 데이터경로와제어장치 많은순차회로의설계는다음의두부분으로구성 datapath: data의이동및연산을위한장치 control unit에상태신호제공 control ol unit: datapath th 에서적절한순서로 data 이동및연산을수행할수있도록제어신호제공. 먼저, datapath를설계 다음에, control unit

More information

11 강 AVR board & download cable 2009 년도 1 학기 센서개론 Mechatronics Lab 센서개론

11 강 AVR board & download cable 2009 년도 1 학기 센서개론 Mechatronics Lab 센서개론 강 AVR bard & dwlad cable 2009 년도 학기 A V R 을시작하며 AVR bard Pi cfigurati 64 개의핀으로구성 Vcc(2) Avcc() GND(3) 입출력핀 (8*6+5) Clck, reset, Aref, PEN 한개의핀이두개이상의기능을수행하기도한다. Pi cfigurati I/O PORT A~G 의 7 개의 prt 중 A~E

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

2주차: 입출력 제어 복습

2주차: 입출력 제어 복습 마이크로프로세서 응용및실습 ` 13-14 주차 : 직렬통신 (2) 한철수 전자공학과 2/35 직렬통신과병렬통신 직렬통신 한가닥의선으로송수신할데이터를차례대로전송하는방식 장점 : 통신선로가적기때문에경제적임 단점 : 전송속도가느림. 송수신약속이복잡해짐 병렬통신 여러가닥의선으로동시에여러개의데이터를전송하는방식 장점 : 전송속도가빠름 단점 : 직렬통신보다비쌈 3/35

More information

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F FB1E2BBE7C6D0BDBABFEB2E687770>

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F FB1E2BBE7C6D0BDBABFEB2E687770> 4 명령실행과제어 4.1 마이크로오퍼레이션(Micro Operation) (1) 마이크로오퍼레이션( 동작) 0609 0509 1) 명령을수행하기위해 CPU 내의레지스터와플래그의상태변환을일으키는 작업 0308 0405 2) 레지스터에저장된데이터에의해서이루어지는동작 0109 0209 0503 3) 마이크로오퍼레이션을순서적으로일어나게하는데필요한신호를제어신호 라함

More information

Microsoft PowerPoint - 부호기와 복호기.PPT

Microsoft PowerPoint - 부호기와 복호기.PPT 논리회로실험부호기와복호기 2005. 5. 3. 부호기와복호기란? 이론실험내용 개요 Encoder & Decoder 서로다른부호간의변환에사용되는것으로디지털신호를압축하거나전송시깨지지않도록바꾸는등여러가지목적에의해부호화라는장치와부호화되어전송되어온신호를다시원래의디지털신호로복호하는장치들을말한다. CODEC(enCOder DECoder) 이라고도한다. 기타 10진 to

More information

4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr

4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr 강의정보처리필기강사조대호 차시명 체크문제 [CA-07 강 ] 주소지정방식과연산, 명령실행과제어 차시 7 차시 학습내용 1. 주소지정방식과연산 2. 명령실행과제어 학습목표 1. 주소지정방식과연산에대해이해할수있다 2. 명령실행과제어를이해하고해결할수있다 학습내용 3.3 주소지정방식 1. 주소설계시고려해야할점이아닌것은? 가. 주소를효율적으로나타낼수있어야한다. 나.

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예

2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK 시스템구성 시스템설정 사용예 사용예 사용예 Mitsubishi FX Series Computer Link 2 Mitsubishi FX Series Computer Link MITSUBISHI FX SERIES COMPUTER LINK... 1 1. 시스템구성... 3 2. 시스템설정... 4 3. 사용예... 6 3.1. 사용예 1... 6 3.2. 사용예 2... 9 4. 케이블연결도... 13 4.1.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information