AVR Timer/Counter · การทางานเบ้ืองตน้ของ Timer/Counter วงจรนบั เริ่มการนับจากค่าต้งัตน้
KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter.
-
date post
19-Dec-2015 -
Category
Documents
-
view
242 -
download
10
Transcript of KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter.
KyungHee Univ. 2-1
ATmega128 Timer/Counter
KyungHee Univ. 1-2
Atmega128 Timer/Counter 의 이용 분야
Timer일정 주기의 Clock 신호를 Counting일정한 시간 주기를 갖는 펄스의 발생 .
주파수 ( 주기 ) 제어 펄스 폭 제어
Counter 속도 측정 : 외부 핀을 통해서 들어오는 Event 를 일정
시간 동안 Count(Edge Detector) 한다 .Input Capture (Timer1, Timer3)
시간 측정 ( 펄스 폭 측정 ) : 일정한 주기 마다 Timer/Counter Register 의 값을 Capture 하여 시간 ( 펄스 폭 ) 등을 측정 한다 .
펄스폭 측정 예 : Timer/Counter 에 일정 주기 신호를 가하고 , Input Capture Pin 에 피 측정 신호를 가 한다 .
KyungHee Univ. 1-3
Atmega128 Timer/Counter
TimerClock( 내부 또는 외부 ) 를 이용 하여 일정한 시간
주기 또는 일정 시간 후에 Event(Interrupt) 를 발생 시킨다 .
Counter 외부 핀 (TOSC1, TOSC2, T1, T2, T3) 을 통해서
들어오는 Event 를 Count(Edge Detector) 한다 .ATmega128 의 Timer/Counter
4 개의 범용 타이머 / 카운트로 구성되어있다 . Timer/Counter0(8 비트 ) Timer/Counter1(16 비트 ) Timer/Counter2(8 비트 ) Timer/Counter3(16 비트 )
KyungHee Univ. 1-4
Timer/Counter (8-bit 0,2 16-bit 1,3)
기본 기능Clear Timer on Compare Match (Auto
Reload)Pulse width Modulator (PWM)Frequency Generator10-bit Clock PrescalerOverflow and Compare Match Interrupt
Sources (TOV2 and OCF2)Allows Clocking from External 32 kHz
Watch Crystal Independent of the I/O Clock (Timer0)
External Event Counter (Timer1,2,3)Input Capture (Timer1, 3)
KyungHee Univ. 1-5
Timer/Counter0, 2
Timer/Counter0 과 2 는 8 비트 구조로서 유사한 OVERFOLW, PWM 기능과 제어방식을 갖는다 .Counter : 8 비트 (0x00 ~ 0xff)Prescaler : 10 비트 , 8 종류 Clock 주기 선택
가능Interrupt : Overflow, Output Compare Match
Timer/Counter0, 2 의 Clock 입력Clock 의 Pre scale 기능을 사용 하여 Counter
의 Clock 주기를 다양하게 선택 할 수 있다 .Timer/Counter0 : 32.768kHz(2**15 =
32,768) 의 크리스탈을 접속하는 TOSC1 및 TOSC2 단자를 가지고 있어서 RTC 의 기능을 갖도록 할 수 있다 .
KyungHee Univ. 1-6
Timer/Counter0 Block Diagram
Asn:1 외부 Clock( 비 동기 )
Asn:0 내부 Clock( 동기 )
내부 Clock
외부 Clock
KyungHee Univ. 1-7
Timer/Counter1,3 Block Diagram
KyungHee Univ. 1-8
Timer/Counter0 Counter Unit Block Diagram
KyungHee Univ. 1-9
Timer/Counter2 Counter Unit Block Diagram
EventInput
KyungHee Univ. 1-10
Timer/Counter0 Output Compare Unit, Block Diagram
KyungHee Univ. 1-11
Timer/Counter0 Compare Match Output Unit
KyungHee Univ. 1-12
TCCR0 - Timer/Counter Control Register 동작모드설정 / 분주비 설정
Bit 7 : FOC0(Force Output Compare) Non-PWM mode 에서만 동작 이 Bit 에 1 을 Write 하면 OC0 단자에 TCNT0 와
OCR0 Rg 가 Compare Match 가 발생 한 것과 같은 신호를 출력 한다 .
새로운 Compare Match 가 발생 하면 OC0 단자는 Update 된다 .
Bit 3,6 : WGM01,WGM00(Waveform Generation Mode)
Bit 5,4 : COM01, COM00(Compare Match Output Mode)
Bit 2,1,0 : CS02~CS00(Clock Select)
KyungHee Univ. 1-13
Waveform Generation Mode Bit Description
Compare Output Mode, non-PWM Mode
CTC: Clear Timer on Compare Match
KyungHee Univ. 1-14
Timer/Counter 0 의 Operation Mode
Normal ModeOverflow Interrupt 가 필요한 경우 사용항상 Up Counter 로 동작0x00~0xff 범위를 반복 하여 Counting 한다 .Count 도중 Clear 없음MAX = 0xff 일 때 Overflow Interrupt 이 발생Out Compare (COMP) Interrupt 는 이 Mode
에서 추천 하지 않음
KyungHee Univ. 1-15
Timer/Counter 0 의 Operation Mode
CTC Mode(Clear Timer on Compare Match Mode)일정한 주기 또는 주파수 발생Up Counter0x00~OCR0 구간을 반복 CountingOCR0 값과 TCNT0 값이 같으면 카운트 도중
ClearTCNT0 = OCR0 일 때 Output Compare
Match Interrupt 발생오버프로우 (OVF) 인터럽트(MAX=OCR0 값일 때 발생 , COMP 인터럽트와
동일하게 작동되기 때문에 추천하지 않음 )
KyungHee Univ. 1-16
Timer/Counter 0 의 Operation ModeCTC Mode, Timing Diagram
KyungHee Univ. 1-17
Compare Output Mode, Fast PWM Mode
Compare Output Mode, Phase Correct PWM Mode
KyungHee Univ. 1-18
Timer/Counter 0 의 Operation Mode
FAST PWM높은 주파수의 PWM 파형발생이 필요할 때 사용상향카운터 (Single-Slope Operation)0x00~0xFF 계수 동작 반복TCNT0 과 OCR0 의 Compare Match 되면
OC0 에 LOW 출력 (COM0 1:0 = 2)0xFF → 0x00 : Overflow 발생 시 OC0 에
HIGH 출력 (COM 1:0 = 2)
KyungHee Univ. 1-19
Timer/Counter 0 의 Operation Mode
Fast PWM Mode, Timing Diagram
KyungHee Univ. 1-20
Timer/Counter 0 의 Operation Mode
Phase Correct PWM높은 분해능의 PWM 출력 파형을 발생하는데
사용상향카운터 0x00 → 0xFF하향카운터 0xFF → 0x000x00 ~ 0xFF ~ 0x00 계수 동작 반복상향카운터 Compare Match >> OC0 = 0 출력
(COM1:0=2)하향카운터 Compare Match >> OC0 = 1 출력
(COM1:0=2)
KyungHee Univ. 1-21
Timer/Counter 0 의 Operation Mode
Phase Correct PWM Mode, Timing Dia-gram
KyungHee Univ. 1-22
Clock Select Bit Description
KyungHee Univ. 1-23
Prescaler for Timer/Counter0
KyungHee Univ. 1-24
TCNT0 - Timer/Counter Register
OCR0 - Output Compare Register
Timer/Counter 0 의 8 비트 Count 값을 저장하고 있는 Register
Timer/Counter 0 의 8 비트 Counter TCNT0 과 비교하여 OC0 단자에 출력신호를 발생하기 위한 8 비트 값을 저장하고 있는 Register
KyungHee Univ. 1-25
ASSR - Asynchronous Status Register
Bit 3 – AS0: Asynchronous Timer/Counter0 AS0 = 0 : 내부클럭 (clkI/O) 동기모드 AS0 = 1 : 외부클럭 (TOSC1) 비 동기모드
Bit 2 – TCN0UB: Timer/Counter0 Update Busy
Bit 1 – OCR0UB: Output Compare Reg-ister0 Update Busy
Bit 0 – TCR0UB: Timer/Counter Control Register0 Update Busy
KyungHee Univ. 1-26
TIMSK - Timer/Counter Interrupt Mask Register
Bit 1 – OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable OCIE0 를 Set 시키면 Output Compare
Match Interrupt 가 활성화 된다 .Bit 0 – TOIE0: Timer/Counter0 Overflow
Interrupt Enable TOIE0 를 Set 시키면 Overflow Interrupt 가
활성화된다 .인터럽트를 사용하려면 SREG 의 I Bit 가 1 인
상태여야 한다 .
KyungHee Univ. 1-27
TIFR - Timer/Counter Interrupt Flag Register
Bit 1 – OCF0: Output Compare Flag 0 TCNT0 값과 OCR0 값을 비교하여 이것이 같으면 이
비트가 1 로 Set 되면서 , Output Compare Interrupt가 요청된다 . 이 비트는 인터럽트 처리의 시작과 함께 0으로 Clear 된다 .
Bit 0 – TOV0: Timer/Counter0 Overflow Flag 타이머 / 카운트에서 Overflow 가 발생되면 이 비트가 1
로 Set 되면서 Output Compare Interrupt 가 요청된다 . 이 비트는 인터럽트 처리의 시작과 함께 0으로 Clear 된다 .
위 Bits 의 위치에 0 를 Write 하면 해당 Flag 가 Clear 된다 .
KyungHee Univ. 2-29
Timer 응용 프로그램 예
cho_timer1_int_clock_gen cho_key_debounce_timer1 cho_keypad_basic_soft_timer2_delay cho_input_capture_pulse_width_measure cho_led_PWM_bright_control