28
KyungHee Univ. 2-1 ATmega128 Timer/Counter

KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

  • View
    252

  • Download
    10

Embed Size (px)

Citation preview

Page 1: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 2-1

ATmega128 Timer/Counter

Page 2: KyungHee Univ. 2-0 ATmega128 Timer/Counter 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 에 피 측정 신호를 가 한다 .

Page 3: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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 비트 )

Page 4: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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)

Page 5: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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 의 기능을 갖도록 할 수 있다 .

Page 6: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-6

Timer/Counter0 Block Diagram

Asn:1 외부 Clock( 비 동기 )

Asn:0 내부 Clock( 동기 )

내부 Clock

외부 Clock

Page 7: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-7

Timer/Counter1,3 Block Diagram

Page 8: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-8

Timer/Counter0 Counter Unit Block Diagram

Page 9: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-9

Timer/Counter2 Counter Unit Block Diagram

EventInput

Page 10: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-10

Timer/Counter0 Output Compare Unit, Block Diagram

Page 11: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-11

Timer/Counter0 Compare Match Output Unit

Page 12: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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)

Page 13: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-13

Waveform Generation Mode Bit Description

Compare Output Mode, non-PWM Mode

CTC: Clear Timer on Compare Match

Page 14: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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

에서 추천 하지 않음

Page 15: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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 인터럽트와

동일하게 작동되기 때문에 추천하지 않음 )

Page 16: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-16

Timer/Counter 0 의 Operation ModeCTC Mode, Timing Diagram

Page 17: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-17

Compare Output Mode, Fast PWM Mode

Compare Output Mode, Phase Correct PWM Mode

Page 18: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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)

Page 19: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-19

Timer/Counter 0 의 Operation Mode

Fast PWM Mode, Timing Diagram

Page 20: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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)

Page 21: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-21

Timer/Counter 0 의 Operation Mode

Phase Correct PWM Mode, Timing Dia-gram

Page 22: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-22

Clock Select Bit Description

Page 23: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

KyungHee Univ. 1-23

Prescaler for Timer/Counter0

Page 24: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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

Page 25: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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

Page 26: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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 인

상태여야 한다 .

Page 27: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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 된다 .

Page 28: KyungHee Univ. 2-0 ATmega128 Timer/Counter ATmega128 Timer/Counter

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