Transcript avr_timer

ATmega128 Timer/Counter
KyungHee Univ.
2-0
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-1
Atmega128 Timer/Counter
Timer
 Clock(내부 또는 외부)를 이용 하여 일정한 시간 주
기 또는 일정 시간 후에 Event(Interrupt)를 발생 시킨
다.
Counter
 외부 핀(TOSC1, TOSC2, T1, T2, T3)을 통해서 들어
오는 Event를 Count(Edge Detector) 한다.
ATmega128의 Timer/Counter
 4개의 범용 타이머/카운트로 구성되어있다.




KyungHee Univ.
Timer/Counter0(8비트)
Timer/Counter1(16비트)
Timer/Counter2(8비트)
Timer/Counter3(16비트)
1-2
Timer/Counter (8-bit 0,2 16-bit 1,3)
기본 기능
 Clear Timer on Compare Match (Auto Reload)
 Pulse width Modulator (PWM)
 Frequency Generator
 10-bit Clock Prescaler
 Overflow 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-3
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-4
Timer/Counter0 Block Diagram
외부 Clock
내부 Clock
Asn:0 내부 Clock(동기)
Asn:1 외부 Clock(비 동기)
KyungHee Univ.
1-5
Timer/Counter1,3 Block Diagram
KyungHee Univ.
1-6
Timer/Counter0 Counter Unit Block Diagram
KyungHee Univ.
1-7
Timer/Counter2 Counter Unit Block Diagram
Event
Input
KyungHee Univ.
1-8
Timer/Counter0 Output Compare Unit, Block Diagram
KyungHee Univ.
1-9
Timer/Counter0 Compare Match Output Unit
KyungHee Univ.
1-10
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-11
Waveform Generation Mode Bit Description
CTC: Clear Timer on Compare Match
Compare Output Mode, non-PWM Mode
KyungHee Univ.
1-12
Timer/Counter 0의 Operation Mode
Normal Mode
 Overflow Interrupt 가 필요한 경우 사용
 항상 Up Counter로 동작
 0x00~0xff 범위를 반복 하여 Counting 한다.
 Count 도중 Clear 없음
 MAX = 0xff 일 때 Overflow Interrupt 이 발생
 Out Compare (COMP) Interrupt는 이 Mode에서
추천 하지 않음
KyungHee Univ.
1-13
Timer/Counter 0의 Operation Mode
CTC Mode(Clear Timer on Compare Match
Mode)
 일정한 주기 또는 주파수 발생
 Up Counter
 0x00~OCR0 구간을 반복 Counting
 OCR0값과 TCNT0값이 같으면 카운트 도중 Clear
 TCNT0 = OCR0 일 때 Output Compare Match
Interrupt 발생
 오버프로우(OVF) 인터럽트
(MAX=OCR0값일 때 발생, COMP인터럽트와 동일
하게 작동되기 때문에 추천하지 않음)
KyungHee Univ.
1-14
Timer/Counter 0의 Operation Mode
CTC Mode, Timing Diagram
KyungHee Univ.
1-15
Compare Output Mode, Fast PWM Mode
Compare Output Mode, Phase Correct PWM Mode
KyungHee Univ.
1-16
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-17
Timer/Counter 0의 Operation Mode
Fast PWM Mode, Timing Diagram
KyungHee Univ.
1-18
Timer/Counter 0의 Operation Mode
Phase Correct PWM
 높은 분해능의 PWM출력 파형을 발생하는데 사용
 상향카운터 0x00 → 0xFF
 하향카운터 0xFF → 0x00
 0x00 ~ 0xFF ~ 0x00 계수 동작 반복
 상향카운터 Compare Match >> OC0 = 0출력
(COM1:0=2)
 하향카운터 Compare Match >> OC0 = 1출력
(COM1:0=2)
KyungHee Univ.
1-19
Timer/Counter 0의 Operation Mode
Phase Correct PWM Mode, Timing Diagram
KyungHee Univ.
1-20
Clock Select Bit Description
KyungHee Univ.
1-21
Prescaler for Timer/Counter0
KyungHee Univ.
1-22
TCNT0 - Timer/Counter Register
 Timer/Counter 0의 8비트 Count 값을 저장하고
있는 Register
OCR0 - Output Compare Register
 Timer/Counter 0의 8비트 Counter TCNT0과 비교
하여 OC0 단자에 출력신호를 발생하기 위한 8비트
값을 저장하고 있는 Register
KyungHee Univ.
1-23
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 Register0
Update Busy
 Bit 0 – TCR0UB: Timer/Counter Control
Register0 Update Busy
KyungHee Univ.
1-24
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-25
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.
1-26
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
KyungHee Univ.
2-28