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

Similar documents
<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

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

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

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

ATmega128

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

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

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

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-03

목차 1. UART와 RS232 개요 2. ATMega128의 USART 포트 3. UART로 Hello 보내기 4. UART로 PC와데이터주고받기

API 매뉴얼

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

(6)

AVR Atmega128

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

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

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

AVR128 자료.hwp

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

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

2009년2학기 임베디드시스템 응용

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

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

2009년2학기 임베디드시스템 응용

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

AN2629

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

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

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

Microsoft Word - logic2005.doc

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

- 2 -

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

Microsoft Word - LAB_OPamp_Application.doc

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

온습도 판넬미터(JTH-05) 사양서V1.0

IoT FND8 7-SEGMENT api

1. 일련의순차적인수를세는회로는? < 가 > 가카운터 다디코더 나레지스터 라인코더 2. 입력펄스에따라미리정해진순서대로상태가변화하는레지스터로써발생회수를세거나동작순서를제어하기위한타이밍 (timing) 신호를만드는데가장적합한회로는? < 다 > 가범용레지스터 다

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

ZPONZCMGOVQK.hwp

Microsoft Word - Lab.4

lecture4(6.범용IO).hwp

1. 제품소개 1.1 제품소개 < 그림 1.1> 도트매트릭스모듈 하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 16x16 도트매트릭스모듈입니다. 또한당사 AVR, PIC, ARM(STM32F) 개발보드와 1P 점퍼클립케이블을이용하여연동이가능하

Microsoft PowerPoint - Chapter 8_USART Serial Communication

Microsoft PowerPoint - 08-MP-4-interrupt

PowerPoint Template

9장 순차논리 회로

2009년2학기 임베디드시스템 응용

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

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

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

Microsoft PowerPoint - Java7.pptx

Ver. DS-2012.T3.DWS.STR-1.0 System Test Report for Digital Watch System Test Cases Specification Test Summary Report Project Team 이동아 Latest update on

슬라이드 1

Microsoft Word doc

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770>

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

I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징

OCW_C언어 기초

Microsoft PowerPoint - chap06-2pointer.ppt

그룹웨어와 XXXXX 제목 예제

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

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

실험 5

DBPIA-NURIMEDIA

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

The zws sensors are among the smallest ultrasonic sensors available on the market in colloidal housings with teach-in buttons. 하이라이트 Ultrasonic sensor

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

슬라이드 1

Microsoft PowerPoint - ch11_reg.pptx

2주차: 입출력 제어 복습

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

슬라이드 제목 없음

C & System

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

제목을 입력하십시오

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

시리얼통신 (USART) 범용동기및비동기시리얼수신기와송신기 (USART) 는매우유연한시리얼통신장치이다. 주요특징은다음과같다. w 송수신레지스터가독립적으로운용되는전이중방식. w 비동기또는동기동작. w 마스터또는슬레이브동기동작. w 고해상도전송속도생성기. w 5, 6, 7

UI TASK & KEY EVENT

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

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

개요 데이터를저장할수있는기억소자 여러개의플립플롭으로구성. 메모리는단순데이터를저장하는소자이지만, 레지스터는저장뿐아니라저장된데이터를처리할수있는기능도있다. 카운터도클록펄스가입력되면미리정해진순서에따라상태가변하는레지스터이다. 카운터와레지스터의차이점 데이터를저장또는이동하는목적으로

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft PowerPoint - Ch13

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

03장.스택.key

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

Visual Basic 반복문

2009년2학기 임베디드시스템 응용

PowerPoint 프레젠테이션

Section 03 트랜지스터를이용한스위칭동작 16/45 트랜지스터의직류특성 활성 직류상황에서전류 I C 는전류 I B 보다 h FE 배만큼더많은전류가흐름» 베이스와이미터가순방향으로바이어스» 컬렉터와베이스가역방향으로바이어스 차단 만일 I B 가 0[A] 이면컬렉터전류

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Transcription:

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 Width) 펄스 : 짧은시간동안생기는진동현상 펄스폭 : 하나의펄스가가지는폭 펄스 (Pulse) 전압 시간 펄스폭 (Pulse Width)

PWM(Pulse Width Modulatio) PWM( 펄스폭변조 ) 펄스폭을전송하고자하는신호에따라변화시키는변조방식 모터제어나전압제어등에널리사용 100 50% 30% 10% PWM 주기안에서의펄스폭으로신호의값을나타냄 PWM 주기 ATmega128 의타이머는펄스를만드는데매우유용하다 10% 30% 50% 100 펄스폭 (Pulse Width)

8 비트타이머 / 카운터의동작모드 Normal Mode( 일반동작모드 ) 카운터는업카운터로서만동작 MAX(0xFF) 값이되면, BOTTOM(0x00) 값부터다시시작 MAX 위치에서오버플로우인터럽트발생 TCNT의초기값을설정하여전체타이머주기를결정 TCCR레지스터의 WGM1:0 = 00으로설정 숫자세기구간 인터럽트발생위치 0 TCNT ( 초기값 ) 255

8 비트타이머 / 카운터의동작모드 CTC(Clear Timer o Compare match) Mode 카운트의한계값 ( 최대로세는수 ) 을설정 카운터는업카운터로서만동작 0으로부터설정된한계값까지세고다시 0으로클리어 TCNT 값이증가하여, OCR값과일치하면출력비교인터럽트발생 OCR의값을바꾸면그다음카운터주기를원하는대로변경가능 OC단자를이용하여출력파형발생가능 TCCR의 COM1~0을 01로설정 OCR레지스터값을바꿔가면서출력비교에의해 OC의신호를토글 출력되는파형의주기는 foc = fclk / (2*N*(1+OCR0)) 로계산 TCCR레지스터의 WGM1:0를 10 으로설정

8 비트타이머 / 카운터의동작모드 CTC(Clear Timer o Compare match) Mode 인터럽트발생위치 숫자세기구간 0 255 OCR ( 한계값 )

8 비트타이머 / 카운터의동작모드 CTC(Clear Timer o Compare match) Mode

8 비트타이머 / 카운터의동작모드 Fast PWM Mode 0에서 255까지세는동안두번의인터럽트발생가능 카운터는업카운터로서만동작 TCNT 값이증가하여, OCR값과일치하면출력비교인터럽트발생 TCNT는업카운팅을계속하여 255까지증가했다가 0으로바뀌는순간오버플로우인터럽트발생 OCR의값을바꾸면그다음카운터주기를원하는대로변경가능 두가지모드로 OC0핀에구형파출력가능 비반전비교출력모드 TCCR 레지스터의 COM 비트를 10 로설정 TCNT0가 OCR0와일치하면, OC0 핀에 0를출력하고 TCNT0가 0이되면 OC0 핀에 1을출력 반전비교출력모드 TCCR 레지스터의 COM 비트를 11 로설정 TCNT0가 OCR0와일치하면, OC0 핀에 1을출력하고, TCNT0가 0이되면 OC0 핀에 0을출력 출력파형주파수 foc = fclk / (N*256)

8 비트타이머 / 카운터의동작모드 Fast PWM Mode TCCR 레지스터의 WGM1:0 를 11 으로설정 높은주파수의 PWM 파형발생시유용 인터럽트발생위치 숫자세기구간 0 255 OCR ( 한계값 )

8 비트타이머 / 카운터의동작모드 Fast PWM Mode

8 비트타이머 / 카운터의동작모드 PCPWM(Phase Correct Pulse Width Modulatio) Mode Fast PWM 과유사 업카운팅과다운카운팅이번갈아일어남 TCNT 값이증가하여, OCR 값과일치하면출력비교인터럽트발생 TCNT 는업카운팅을계속하여 TCNT 는 255 에도달하면다운카운팅시작. 다운카운팅을하다가 0 에도달하면오버플로우인터럽트가발생 OCR 의값을바꾸면그다음카운터주기를원하는대로변경가능 PWM 주기를변경하기위해 OCR 레지스터에새로운값을기록하더라도즉시변경되지않고 TCNT 이 255 에도달하면갱신됨.

8 비트타이머 / 카운터의동작모드 PCPWM(Phase Correct Pulse Width Modulatio) Mode 두가지모드로 OC0 핀에구형파출력가능 비반전비교출력모드 (TCCR 레지스터의 COM 비트를 10 로설정 ) 업카운트중에 TCNT0와 OCR0가일치하면, OC0핀에 0를출력다운카운트중에일치하면, OC0핀에 1을출력 반전비교출력모드 (TCCR 레지스터의 COM 비트를 11 로설정 ) 업카운트중에 TCNT0와 OCR0가일치하면, OC0핀에 1을출력다운카운트중에일치하면, OC0핀에 0를출력 출력파형주파수 foc = fclk / (N*256)

8 비트타이머 / 카운터의동작모드 PCPWM(Phase Correct Pulse Width Modulatio) Mode TCCR 레지스터의 WGM1:0 를 01 으로설정 높은분해능의 PWM 파형발생시유용 인터럽트발생위치 인터럽트발생위치 숫자세기구간 0 255 OCR ( 한계값 )

8 비트타이머 / 카운터의동작모드 PCPWM(Phase Correct Pulse Width Modulatio) Mode

16 비트타이머 / 카운터 16 비트타이머 / 카운터 타이머 / 카운터 1,3 16비트의카운터를보유 2 16 = 65536 까지셀수있음 10비트프리스케일러내장 입력캡쳐유닛내장 비교매치에서타이머클리어 ( 오토리로드 ) 3개의 PWM 출력 가변 PWM 주기파형출력 3개의출력비교유닛내장 T1, T3핀에의한카운터동작 10개의인터럽트소스 오버플로우, 출력비교매치 A,B,C, 입력캡쳐

16 비트타이머 / 카운터 16 비트타이머 / 카운터레지스터 TCCRxA~C 타이머 x 의동작방식설정 TCNTx(Timer/CouNTer x) ` 타이머 x 의 16 비트카운터값을저장 OCRxA~C(Output Compare Resister x A~C) TCNTx 의값과출력비교되기위한 16 비트데이터값을저장 ICRx(Iput Capture Register x) 입력캡쳐시 TCNTx 의카운터값을저장 TIMSK(Timer Iterrupt MaSK) ETIMSK(Exteded TIMSK) TIFR(Timer Iterrupt Flag Register) ETIFR(Exteded TIFR)

16 비트타이머 / 카운터 TCCRA(Timer/Couter Cotrol Register A) 타이머 / 카운터제어레지스터 A (=1 or 3) 타이머 / 카운터 1,3 의동작을설정 7 6 5 4 3 2 1 0 COMA1 COMA0 COMB1 COMB0 COMC1 COMC0 WGM1 WGM0 비트 7:6 : COMA1:0 비트 5:4 : COMB1:0 비트 3:2 : COMC1:0 비트 1:0 : WGM1:0

16 비트타이머 / 카운터 TCCRA(Timer/Couter Cotrol Register A) COMA1:0, COMB1:0, COMC1:0 출력비교핀 OCA 와 OCB, OCC 를제어 출력모드비교, o-pwm COMA1/COM B1/COMC1 COMA0/COM B0/COMC0 설명 0 0 ormal 포트동작, OCA/OCB/OCC 분리 0 1 Toggle OCA/OCB/OCC o compare match 1 0 1 1 Clear OCA/OCB/OCC o compare match (low level 에서출력 ) Set OCA/OCB/OCC o compare match (high level 에서출력 )

16 비트타이머 / 카운터 TCCRA(Timer/Couter Cotrol Register A) 출력모드비교, Fast-PWM COMA1/COM B1/COMC1 COMA0/COM B0/COMC0 설명 0 0 ormal 포트동작, OCA/OCB/OCC 분리 0 1 1 0 1 1 WGM3:0=15:Toggle OCA o compare match, OCB discoected(ormal포트동작 ) For all other WGM3:0 settigs, ormal 포트동작, OCA/OCB/OCC discoected Clear OCA/OCB/OCC o compare match, set OCA / OCB / OCC at TOP Set OCA/OCB/OCC o compare match, clear OCA/OCB/OCC at TOP

16 비트타이머 / 카운터 TCCRA(Timer/Couter Cotrol Register A) 출력모드비교, Phase correct ad Phase ad Frequecy Correct PWM COMA1/COM B1/COMC1 COMA0/COM B0/COMC0 설명 0 0 ormal 포트동작, OCA/OCB/OCC 분리 0 1 1 0 1 1 WGM3:0=9 or 14:Toggle OCA o compare match, OCB discoected(ormal포트동작 ) For all other WGM3:0 settigs, ormal 포트동작, OCA/OCB/OCC discoected 업카운팅일때 Clear OCA/OCB/OCC o compare match, 다운카운팅일때 set OCA / OCB / OCC at TOP 업카운팅일때 Set OCA/OCB/OCC o compare match, 다운카운팅일때clear OCA/OCB/OCC at TOP

16 비트타이머 / 카운터 TCCRA(Timer/Couter Cotrol Register A) 비트 1:0 : WGM1:0 : 15 가지의동작모드를결정 Mode WGM13 WGM12 WGM11 WGM10 (CTC1) (PWM11) (PWM10) 타이머 / 카운터의 1,3 동작모드 TOP OCR1x TOV1플래그업데이트 Set 시점 0 0 0 0 0 0xFFFF Immediate MAX 1 0 0 0 1 PWM, Phase Correct, 8-bit 0x00FF TOP BOTTOM 2 0 0 1 0 PWM, Phase Correct, 9-bit 0x01FF TOP BOTTOM 3 0 0 1 1 PWM, Phase Correct, 10-bit 0x03Ff TOP BOTTOM 4 0 1 0 0 CTC OCR1A Immediate MAX 5 0 1 0 1 Fast PWM 8-bit 0x00FF TOP TOP 6 0 1 1 0 Fast PWM 9-bit 0x01FF TOP TOP 7 0 1 1 1 Fast PWM 10-bit 0x03Ff TOP TOP 8 1 0 0 0 PWM, Phase ad Frequecy Correct ICR1 BOTTOM BOTTOM 9 1 0 0 1 PWM, Phase ad Frequecy Correct OCR1A BOTTOM BOTTOM 10 1 0 1 0 PWM, Phase Correct ICR1 TOP BOTTOM 11 1 0 1 1 PWM, Phase Correct OCR1A TOP BOTTOM 12 1 1 0 0 CTC ICR1 Immediate MAX 13 1 1 0 1 Reserved - - - 14 1 1 1 0 Fast PWM ICR1 TOP TOP 15 1 1 1 1 Fast PWM OCR1A TOP TOP

16 비트타이머 / 카운터 TCCRB(Timer/Couter Cotrol Register B) 타이머 / 카운터제어레지스터 B (=1 or 3) 타이머 / 카운터 1,3 의프리스케일러등을설정하는기능수행 7 6 5 4 3 2 1 0 ICNC ICES - WGM3 WGM2 CS2 CS1 CS0 비트 7 : ICNC 비트 6 : ICES 비트 4:3 : WGM3:2 비트2:0 : CS2:0, -클럭선택

16 비트타이머 / 카운터 TCCRB(Timer/Couter Cotrol Register B) 비트 7 : ICNC 1 로세트하면 Iput Capture Noise Caceler 설정 입력캡처핀 (ICP) 의입력을필터링 4 개의오실레이터사이클만큼지연 비트 6 : ICES ICP 에해당되는에지의형태를선택 1 로설정하면상승에지에서검출, 0 으로설정하면하강에지에서검출 카운터값은 ICR 에저장되고, 입력캡처플래그 (ICP) 가설정된경우입력캡처인터럽트가발생된다. 비트 4:3 : WGM3:2 TCCRxA 의비트 1~0(WGMx1~0) 와결합하여동작모드를설정

16 비트타이머 / 카운터 TCCRB(Timer/Couter Cotrol Register B) 비트 2:0 : CS2:0 분주비와클럭소스를선택 CS2 CS1 CS0 설명 0 0 0 클럭소스가없음 ( 타이머 / 카운터가멈춤 ) 0 0 1 클럭소스존재 ( 프리스케일링이없음 ) 0 1 0 8분주 0 1 1 64분주 1 0 0 256분주 1 0 1 1024분주 1 1 0 T1핀에서외부클럭소스, 하강에지에서클럭발생 1 1 1 T1핀에서외부클럭소스, 상승에지에서클럭발생

16 비트타이머 / 카운터 TCCRC(Timer/Couter Cotrol Register C) 타이머 / 카운터제어레지스터 C (=1 or 3) 타이머 / 카운터 1,3 의 Force Output Compare 를설정 7 6 5 4 3 2 1 0 FOCA FOCB FOCC - - - - - 비트 7 : FOCA 비트 6 : FOCB 비트 5 : FOCC o-pwm 모드일경우에만활성화 1 로설정하면 compare match 가파형발생장치로되어, OCA/OCB/O CC 에출력비교가일치할때출력되는값과동일한출력을내보낸다.

16 비트타이머 / 카운터 TCNT (Timer Couter Rgister ) 타이머카운터레지스터 (=1 or 3) 타이머 / 카운터1,3의 16비트카운터값을저장하고있는레지스터 읽기및쓰기가가능한카운터로동작하며자동으로증가한다. 16 비트레지스터값을저장 TCNTH 와 TCNTL 로구성. 15 14 13 12 11 10 9 8 TCNT15 TCNT14 TCNT13 TCNT12 TCNT11 TCNT10 TCNT9 TCNT8 7 6 5 4 3 2 1 0 TCNT7 TCNT6 TCNT5 TCNT4 TCNT3 TCNT2 TCNT1 TCNT0

16 비트타이머 / 카운터 OCRA, OCRB, OCRC (Output Compare Register) 출력비교레지스터 (TCNT1/3 와계속적으로비교 ) 16 비트 두레지스터의값이일치했을때, OCA, OCB, OCC 핀을통하여설정된값이출력되거나출력비교인터럽트가발생 ICR(Iput Capture Register) 입력캡쳐레지스터 입력캡쳐핀 ICx 으로들어오는신호변화를검출하여일어나는입력캡쳐시 TCNTx 의카운터값을저장하는 16 비트레지스터 이때 ICFx 플래그가세트되고입력캡쳐인터럽트가요청 어떤신호의주기측정에응용

16 비트타이머 / 카운터 TIMSK(Timer Iterrupt MaSK) 타이머인터럽트마스크레지스터 타이머 / 카운터 0, 타이머 / 카운터 1, 타이머 / 카운터 2 가발생하는인터럽트를개별적으로 eable 하는레지스터 7 6 5 4 3 2 1 0 OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0 비트 5 : TICIE1 비트 4~3 : OCIE1A~B 비트 2 : TOIE1

16 비트타이머 / 카운터 TIMSK(Timer Iterrupt MaSK) TICIE1:Timer Iput Capture Iterrupt Eable 1 1 로설정되면타이머 1 의입력캡쳐인터럽트를개별적으로 Eable IC1 핀에서캡쳐트리거이벤트가발생했을경우, TIFR.ICF1 플래그가세트되면서인터럽트서비스루틴이실행 OCIE1A~B: Output Compare match Iterrupt Eable timer 1 A~B 1 로설정되면타이머 1 의출력비교인터럽트 A, B 를개별적으로 Eable. TCNT1 과 OCR1A/B 의값이일치하면, TIFR.OCF1A/B 플래그가세트되면서인터럽트서비스루틴이실행. TOIE1 : Timer Overflow Iterrupt Eable for timer 1 1 로설정되면타이머 1 의오버플로우인터럽트를개별적으로 Eable 타이머 / 카운터 1 의오버플로우가발생시 TIFR.TOV1 플래그가세트되면서인터럽트서비스루틴이실행.

16 비트타이머 / 카운터 ETIMSK(Exteded Timer Iterrupt MaSK) 확장타이머인터럽트마스크레지스터 타이머 1, 3 이발생하는인터럽트를개별적으로 Eable 제어하는레지스터 7 6 5 4 3 2 1 0 - - TICIE3 OCIE3A OCIE3B TOIE3 OCIE3C OCIE1C 비트 5 : TICIE3 비트 4~3 : OCIE3A~B 비트 2 : TOIE3 비트 1~0 : OCIExC

16 비트타이머 / 카운터 ETIMSK(Exteded Timer Iterrupt MaSK) TICIE3 : Timer Iput Capture Iterrupt Eable 3 1로설정되면타이머3의입력캡쳐인터럽트를개별적으로 Eable IC3 핀에서캡쳐트리거이벤트가발생했을경우, TIFR.EICF3 플래그가세트되면서인터럽트서비스루틴실행 OCIE3A~B : Output Compare match Iterrupt Eable timer 3 A~B 1로설정되면타이머3의출력비교인터럽트 A, B를개별적으로 Eable. TCNT3과 OCR3A/B의값이일치하면, ETIFR.OCF3A/B 플래그가세트되면서인터럽트서비스루틴실행. TOIE3 : Timer Overflow Iterrupt Eable for timer 1 1로설정되면타이머3의오버플로우인터럽트를개별적으로 Eable. 타이머 / 카운터3의오버플로우가발생시 ETIFR.TOV3 플래그가세트되면서인터럽트서비스루틴이실행. OCIExC : Output Compare match Iterrupt Eable timer x C 1로설정되면타이머x의출력비교인터럽트 C를개별적으로 Eable. TCNT3/1과 OCR3C/OCR1C의값이일치하면, ETIFR.OCF3C/ETIFR.OCF1C 플래그가세트되면서인터럽트서비스루틴이실행.

16 비트타이머 / 카운터 TIFR(Timer Iterrupt Frag Register) 타이머인터럽트플래그레지스터 타이머 0~2 가발생하는인터럽트플래그를저장하는레지스터 7 6 5 4 3 2 1 0 - - ICF1 OCF1A OCF1B TOV1 - - 비트 5 : ICF1(Iput Capture Flag 1) 비트 4~3 : OCF1A~B(Output Compare match Flag 1 A~B) 비트 2 : TOV1 (Timer Overflow Flag 1)

16 비트타이머 / 카운터 TIFR(Timer Iterrupt Frag Register) ICF1 : Iput Capture Flag 1 입력캡쳐신호또는아날로그비교기로부터의신호에의해캡쳐동작이수행될때 1 로세트되고, 입력캡쳐인터럽트가발생. ICR1 레지스터가 TOP 값으로사용되는동작모드에서 TCNT1 의값이 TOP 과같아질때 1 로세트되고인터럽트가발생 OCF1A~B : Output Compare match Flag 1 A~B TCNT1 레지스터와출력비교레지스터 OCR1A~B 의값을비교하여같으면 OC F1A~B 는 1 로세트되고출력비교인터럽트가발생 TOV1 : Timer Overflow Flag 1 오버플로우가발생하면 (0xFFFF 까지세고 0x0000 으로넘어가게되면 ) 이 TOV 1 는 1 로세트되면서오버플로우인터럽트가발생 Phase correct PWM 모드에서는타이머 1 이 0x00 에서계수방향을바꿀때 T OV1 가세트됨.

16 비트타이머 / 카운터 ETIFR(Exteded Timer Iterrupt Frag Register) 타이머인터럽트플래그레지스터 타이머 1,3 이발생하는인터럽트플래그를저장하는레지스터 7 6 5 4 3 2 1 0 - - ICF3 OCF3A OCF3B TOV3 OCF3C OCF1C 비트 5 : ICF3(Iput Capture Flag 3) 비트 4,3,1 : OCF3A,B,C (Output Compare match Flag 3 A,B,C) 비트 2 : TOV3 (Timer Overflow Flag 3) 비트 0 : OCF1C: Output Compare match Flag 1 C

16 비트타이머 / 카운터 ETIFR(Exteded Timer Iterrupt Frag Register) ICF3 : Iput Capture Flag 3 입력캡쳐신호또는아날로그비교기로부터의신호에의해캡쳐동작이수행될때 1 로세트되고입력캡쳐인터럽트발생. ICR3 레지스터가 TOP 값으로사용되는동작모드에서 TCNT3 의값이 TOP 과같아질때 1 로세트되고인터럽트발생. OCF3A,B,C: Output Compare match Flag 3 A,B,C TCNT3 레지스터와출력비교레지스터 OCR3A~C 의값을비교하여같으면 OC F3A~C 는 1 로세트되고출력비교인터럽트요청. TOV3 : Timer Overflow Flag 3 오버플로우가발생하면이 TOV3 는 1 로세트되면서오버플로우인터럽트발생 PC PWM 모드에서는타이머 1 이 0x00 에서계수방향을바꿀때 TOV3 가세트 OCF1C: Output Compare match Flag 1 C TCNT1 레지스터와출력비교레지스터 OCR1C 의값을비교하여같으면 OCF1C 는 1 로세트되고출력비교인터럽트발생

16 비트타이머 / 카운터동작모드 16 비트타이머 / 카운터동작모드 크게나누어 5 가지동작모드 8 비트타이머 / 카운터 4 가지모드 + PFC PWM(Phase ad Frequecy Correct PWM) 모드 세분하면총 15 가지동작모드로구분 Normal Mode( 일반동작모드 ) 타이머 는항상상향카운터로만동작 TCNT 의값이 0xFFFF 에서 0 으로바뀌는순간 TOV 비트가세트되며오버플로우인터럽트발생 TCCRxA~B 의 WGMx3~0 = 00 으로설정 카운터가 16 비트라는것을제외하고는 8 비트타이머와동일

16 비트타이머 / 카운터동작모드 CTC(Clear Timer o Compare match) 모드 4 번모드 인터럽트 : TCNT 의값이 OCRA 에설정한값과일치되면그다음클럭사이클에서 TCNT 의값이 0 으로클리어되고, OCFA 비트가세트되며출력비교인터럽트발생 출력파형 : COMA/COMB/COMC1~0 을 01 로설정하고 OCRA 레지스터값을바꿔가면서출력비교에의해 OCA/OCB/OCC 의신호를토글 12 번모드 인터럽트 : TCNT 의값이 ICR 에설정한값과일치되면그다음클럭사이클에서 TCNT 의값이 0 으로클리어되고, ICF 비트가세트되며입력캡쳐인터럽트발생 출력파형 : COMA/COMB/COMC1~0 을 01 로설정하고 OCRA/OCRB/ O CRC 레지스터값을바꿔가면서출력비교에의해 OCA/OCB/OCC 의신호를토글 TCCRB 레지스터의 WGMx3~0 을 4 또는 12 로설정

16 비트타이머 / 카운터동작모드 CTC(Clear Timer o Compare match) 모드

16 비트타이머 / 카운터동작모드 Fast PWM(Fast Pulse Width Modulatio) 모드 TCNT는반복적으로업카운팅하며항상 0x0000~TOP의값을가짐 TCNT의값이 TOP 값과일치되면그다음사이클에서 0으로클리어 모드별 TOP 값 동작모드 5 6 7 14 15 TOP 값 0x00FF 0x01FF 0x03FF ICR1 OCR1A 인터럽트 OCFA비트세트, 출력비교인터럽트발생 ICF비트세트, 입력캡춰인터럽트발생 TOV비트세트, 오버플로우인터럽트발생 TCCRxB 레지스터의 WGMx3~0 비트를 5,6,7,14,15 로설정

16 비트타이머 / 카운터동작모드 Fast PWM(Fast Pulse Width Modulatio) 모드 출력파형 COM1:0 가 10 일때 TCNT의값이 ICR이나 OCRA/OCRB/OCRC 값과같아지면 OCA/ OCB/OCC의값은 0으로클리어 TOP까지증가했다가 0으로바뀌는순간 OCA/OCB/OCC 는 1로세트 COM1:0 가 11 일때 TCNT의값이 ICR이나 OCRA/OCRB/OCRC 값과같아지면 OCA/ OCB/OCC의값은 1로세트 TOP까지증가했다가 0으로바뀌는순간 OCA/OCB/OCC 는 0으로클리어 COM1:0 가 00 or 01 일때 OCA/OCB/OCC 는신호출력되지않음

16 비트타이머 / 카운터동작모드 Fast PWM(Fast Pulse Width Modulatio) 모드

16 비트타이머 / 카운터동작모드 PC PWM(Phase Correct PWM) 모드 TCNT 는업카운팅하여 TOP 으로증가하다가다운카운팅으로 0x0000 으로감소를반복 모드별 TOP 값 동작모드 1 2 3 10 11 TOP 값 0x00FF 0x01FF 0x03FF ICR1 OCR1A 인터럽트 OCFA비트세트, 출력비교인터럽트발생 ICF비트세트, 입력캡춰인터럽트발생 TOV비트세트, 오버플로우인터럽트발생 TCCRxB 레지스터의 WGMx3~0 비트를 1,2,3,10,11 로설정

16 비트타이머 / 카운터동작모드 PC PWM(Phase Correct PWM) 모드 출력파형 COM1:0 가 10 일때 TCNT 의값이 OCRA/OCRB/OCRC 레지스터에설정한값과일치되면 OCA/OCB/OCC 의값은상향카운팅의경우에는 0 으로, 하향의경우에는 1 로세트. COM1:0 가 11 일때 TCNT 의값이 OCRA/OCRB/OCRC 레지스터에설정한값과일치되면 OCA/OCB/OCC 의값은상향카운팅의경우에는 1 로, 하향의경우에는 0 로세트. COM1:0 가 00 or 01 일때 OCA/OCB/OCC 는신호출력되지않음 PWM 주기를변경하기위해 OCRA/OCRB/OCRC 레지스터에새로운값을기록하더라도즉시변경되지않고 TCNT 이 TOP 에도달하면비로소값이갱신된다

16 비트타이머 / 카운터동작모드 PC PWM(Phase Correct PWM) 모드

16 비트타이머 / 카운터동작모드 PFC PWM(Phase & Frequecy Correct PWM) 모드 PC PWM 모드와거의유사 모드별 TOP 값 모드 8 : ICR1 모드 9 : OCRA TCNT 는업카운팅하여 TOP 으로증가하다가다운카운팅으로 0x0000 으로감소를반복 인터럽트 OCFA 비트세트, 출력비교인터럽트발생 ICF 비트세트, 입력캡춰인터럽트발생 TOV 비트세트, 오버플로우인터럽트발생 새로운값으로의갱신이 TCNT 가 0 일때이루어짐. TCCRxB 레지스터의 WGMx3~0 비트를 8,9 로설정

16 비트타이머 / 카운터동작모드 PFC PWM(Phase & Frequecy Correct PWM) 모드 출력파형 COM1:0 가 10 일때 TCNT 의값이 OCRA/OCRB/OCRC 레지스터에설정한값과일치되면 OCA/OCB/OCC 의값은상향카운팅의경우에는 0 으로, 하향의경우에는 1 로세트. COM1:0 가 11 일때 TCNT 의값이 OCRA/OCRB/OCRC 레지스터에설정한값과일치되면 OCA/OCB/OCC 의값은상향카운팅의경우에는 1 로, 하향의경우에는 0 로세트. COM1:0 가 00 or 01 일때 OCA/OCB/OCC 는신호출력되지않음

16 비트타이머 / 카운터동작모드 PFC PWM(Phase & Frequecy Correct PWM) 모드

실습 9 : PWM 으로 LED 밝기조절 실습개요 타이머 0 의 PC PWM 동작모드를이용하여 LED 의밝기를조절하는실습 PWM 동작모드에서 OC0 핀을통해 PWM 신호를만들어출력함으로써, LED 의밝기를조절하도록함. 밝기는 PWM 신호의듀티비 (Pulse Duty) 에의해좌우됨. 실습목표 타이머0의 PWM 기능동작원리이해 타이머0의 PCPWM 모드제어방법의습득 ( 관련레지스터이해 ) PWM 신호출력제어방법습득

실습 9 : PWM 으로 LED 밝기조절 사용모듈 : MCU 모듈, LED 모듈 MCU 모듈포트 B 의비트 4 MCU 모듈 LED 모듈 Sigal LED1 LED 모듈

실습 9 : PWM 으로 LED 밝기조절 모듈결선방법 MCU 모듈포트 B 의 PB4 를 2 핀케이블로 LED 모듈의 LED 1 에연결

실습 9 : PWM 으로 LED 밝기조절 구동프로그램 : 사전지식 PWM 신호에의한 LED 의밝기조절방법 가장밝음 100% 듀티비 100% 인경우 LED 는가장밝을것이며, 듀티비가 0% 이면 LED 는꺼진다 중간 50% 어두움 10% 출력비교용레지스터 (OCR) 값을조절하여 OC0 로출력되는 PWM 신호의듀티비를원하는대로변경 꺼짐 0%

실습 9 : PWM 으로 LED 밝기조절 구동프로그램 : 사전지식 (PWM 동작모드설정 ) 타이머 / 카운터 0 사용 Phase Correct PWM 동작모드사용 TCCR0 설정 CS 비트는 01 로세팅하여 Prescaler 의분주비를 1 로설정 FOC 비트는 0 로설정 WGM 비트는 PC PWM 모드인 01 로설정 COM 비트는 11 로세팅하여업카운팅의경우 OC0 를 1 로세트하고, 다운카운팅의경우 OC0 를클리어시키도록설정 PWM 클럭 = 메인클럭 /N*510, (N = 클럭분주 )

실습 9 : PWM 으로 LED 밝기조절 구동프로그램 : 사전지식 (PWM 동작모드설정 ) OCR TCNT 값 OC0 신호 어두움 밝음

실습 9 : PWM 으로 LED 밝기조절 구동프로그램 : 소스분석 Pwm_led.c 1) #iclude<avr/io.h> #iclude<avr/iterrupt.h> #iclude<util/delay.h> it mai(){ usiged char Light=0; PB4 는 OC0 핀 (PWM 출력핀 ) 2) DDRB = 0x10; TCCR0 = 0x71; /* 0~7비트까지의레지스터중에서 4번째비트의레지스터를사용하여출력한다. */ // PWM, No Prescalig /* 0~7비트까지의모든레지스터중에서 0, 4, 5, 6번째의레지스터를사용하여출력한다. */

실습 9 : PWM 으로 LED 밝기조절 구동프로그램 : 소스분석 TCCR0 = 0x71; 7 6 5 4 3 2 1 0 FOC WGM0 COM1 COM0 WGM1 CS2 CS1 CS0 0 1 1 1 0 0 0 1 CS는 001 이므로 Prescaler의분주비가 1 WGM(1:0) 는 01 이므로 PC PWM 모드 COM(1:0) 는 11 로세팅 FOC 는 0 로세팅

실습 9 : PWM 으로 LED 밝기조절 3) TCNT0 = 0; while(1){ for(light=0;light<255;light++){ OCR0 = Light; _delay_ms(10); //10ms만큼의딜레이간격 } for(light=255;0<light;light--){ OCR0 = Light; _delay_ms(10); } } retur 0; }

실습 9 : PWM 으로 LED 밝기조절 실행결과

실습 10 : 타이머로버저울리기 실습개요 타이머를이용하여원하는주파수의신호를만들고, 이를버저에입력하여여러가지소리를내도록설계 16 비트타이머인타이머 / 카운터 3 을사용하며, 동작모드는 CTC 모드을사용 각기다른스위치입력에따라, 다른주파수의신호를만들어준다. 실습목표 16 비트타이머 / 카운터활용방법의습득 ( 관련레지스터이해 ) 버저의동작원리이해

실습 10 : 타이머로버저울리기 사용모듈 : MCU 모듈, Audio 모듈, 스위치모듈 MCU 모듈포트 E PE3 핀 MCU 모듈포트 D MCU 모듈 Audio 모듈 Audio 모듈 Piezo Sigal Switch 모듈버튼스위치 Sigal Switch 모듈

실습 10 : 타이머로버저울리기 사용모듈 : Audio 모듈회로 압전버저관련회로

실습 10 : 타이머로버저울리기 모듈결선방법 MCU 모듈포트 E 의 PE3 을 Audio 모듈의 PIEZO 에연결. MCU 모듈포트 D 의 PD0~PD7 을 Switch 모듈의 BT0~BT7 에연결.

실습 10 : 타이머로버저울리기 구동프로그램 : 사전지식 타이머를이용하여버저를여러가지소리가나도록울리도록함. 각기다른스위치입력에따라, 다른주파수의신호를만들어주면됨 16비트타이머 / 카운터 3을이용 / 동작모드는 12번 CTC모드를사용 TCCR3A/TCCR3B/ TCCR3C 레지스터들을적절히세팅 버저에입력될신호는 OC3A핀을사용 WGM(3:0) 은 1100 으로세팅 COM3A(1:0) 비트를 01 로설정하여토글모드를사용프리스케일러는 CS(2:0) 비트에 001 을세팅하여 1분주로한다 OC3A 핀출력신호의주파수 OC3A 주파수 = 메인클럭 / (2 * 분주비 * (1 + ICR3))

실습 10 : 타이머로버저울리기 구동프로그램 : 소스분석 PIEZO.c 1) #iclude<avr/io.h> #iclude<util/delay.h> #defie FREQ(x) (usiged it)(7372800/(2*(x))) 2) void Chage_FREQ(usiged it freq); 3) void STOP_FREQ(); 4) void Pop_Butto(); usiged char Push_Butto(); 5) usiged it key2doremi(usiged char key); it mai(){ usiged char piao=0; DDRE = 0x08; DDRD = 0x00; /* 0~7 비트의레지스터중에서 3 번째레지스터를 사용하여출력 */ // 버튼입력

실습 10 : 타이머로버저울리기 6) TCCR3A = 0x40; /* COM3A(1:0) = 01, COM3B(1:0) = 00, COM3C(1:0) = 00, OC3A핀사용 WGM3(1:0) = 00 */ TCCR3B = 0x19; /* WGM3(3:2) = 11 CTC 12모드사용 CS3(2:0) = 001 1분주사용 ICNC3 = 0, ICES3 = 0 */ TCCR3C = 0x00; /* FOC3A = 0, FOC3B = 0, FOC3B = 0, */ TCNT3 = 0x0000; STOP_FREQ(); // T/C1 value=0 // 초기값을클리어한다. while(1){ piao = Push_Butto(); // 버튼을누를때까지대기 Chage_FREQ(key2DoReMi(piao)); // 버튼에맞는음향을연주한다. Pop_Butto(); // 버튼이눌러지지않을때까지대기 STOP_FREQ(); // 연주를정지한다. } retur 0; }

실습 10 : 타이머로버저울리기 7) void Chage_FREQ(usiged it freq){ usiged it x; } TCCR3A = 0x40; TCCR3B = 0x19; do{ x=tcnt3; }while(x>=freq(freq)); ICR3 = FREQ(freq); // 위와동일 // 위와동일 void STOP_FREQ(){ TCCR3A = 0x00; TCCR3B = 0x00; TCNT3 = 0; ICR3 = FREQ(0); PORTE = 0xFF; } // 포트 E 출력, 초기값

실습 10 : 타이머로버저울리기 7) void Pop_Butto(){ while((pind & 0xFF)!=0x00); } usiged char Push_Butto(){ while((pind & 0xFF)==0x00); retur PIND; } usiged it key2doremi(usiged char key){ usiged it _ret=0; switch(key){ case 0x01: _ret = 523; break; case 0x02: _ret = 587; break; case 0x04: _ret = 659; break; 7) case 0x08: _ret = 698; break; case 0x10: _ret = 783; break; case 0x20: _ret = 880; break; case 0x40: _ret = 987; break; case 0x80: _ret = 1046; break; } retur _ret; }

실습 10 : 타이머로버저울리기 실행결과