Podstawy Techniki
Mikroprocesorowej
Liczniki
Timer Counter T/C0, T/C1, T/C2
Wydział Elektroniki Mikrosystemów i Fotoniki
Piotr Markowski
Na prawach rękopisu.
Licznik „0”
Timer/Counter 0
Funkcje
Służy do: • zliczania:- impulsów zegarowych - impulsów zewnętrznych
• generowania sygnału o zadanej częstotliwości • generowania PWM
Cechy:
• 8-o bitowy (0-255) • 1-o kanałowy
• 10-o bitowy prescaler
Sterowanie licznikiem T/C0
Do sterowania licznikiem:• 3+2 rejestry specjalne:
- Timer/Counter 0 Control Register (TCCR0) - Timer/Counter 0 Register (TCNT0)
- Output Compare Register 0 (OCR0)
- Timer /Counter Interrupt Mask Register (TIMSK) - Timer /Counter Interrupt Flag Register (TIFR) • wejście Timer0 (T0 - PB0)
• wyjście Output Compare 0 (OC0 – PB3) • 2 przerwania:
- Timer0 Overflow (TOV0, flaga TOV0, wektor 0x009) - Timer0 Compare (OCF0, flaga OCF0, wektor 0x013)
T/C0 - sterowanie
Struktura
Wnę trz e mi kro ko nt ro le ra Pi ny WE /W Y TIMSK TIFRTaktowanie licznika
Piny WE/WY
Struktura
Wnę trz e mi kro ko nt ro le ra Pi ny WE /W YPiny WE/WY
Struktura – waveform generator
Wnę trz e mi kro ko nt ro le ra Pi ny WE /W YPiny WE/WY
OC0 – wyjście przebiegu prostokątnego
Piny WE/WY
Piny WE/WY
OC0 – wyjście przebiegu prostokątnego
COM01,COM00 = 00
COM01,COM00 = 11,01,10 wymaga DDR 1
Przerwania licznika T/C0
- Timer0 Overflow (TOV0, flaga TOV0, wektor 0x009)
- Timer0 Compare Match (OCF0, flaga OCF0, wektor 0x013) Timer/Counter Interrupt Mask Register:
Timer/Counter Interrupt Flag Register:
Timer0 Overflow (TOV0)
Timer0 Compare Match (OCF0)
Rejestry
Licznika 0
Timer/Counter0 Control Register
WGM0
Timer/Counter0 Control Register
Force Output Compare FOC0 –
(zgodne z ustawieniami bitów COM)
Timer/Counter0 Control Register
Tryb CTC COM0 –
Timer/Counter0 Control Register
Tryb Fast PWM
Timer/Counter0 Control Register
Tryb PWM z korekcją fazy
Timer/Counter0 Control Register
Timer/Counter0 Register - TCNT0
Output Compare Register - OCR0
Timer/Counter0 Register:Output Compare Register:
Tryby pracy
Licznika 0
Tryby pracy T/C0
Licznik T/C0 pracuje w jednym z czterech trybów: • Normalny
• CTC (Clear on Compare)
• Fast PWM (Pulse Width Modulation) • Phase Correct PWM
Do wyboru trybów – bity WGM0 oraz COM0 w TCCR0 WGM0 – wybór trybu
COM0 – sposób działania wyjścia
Tryb normalny
• Służy do• Zliczanie w górę
• Po doliczeniu do MAX (255) zerowanie licznika
• W dowolnym momencie można zmodyfikować wartość TCNT0 (stan licznika)przejściu
MAX → 0
Tryb Clear on Compare (CTC)
• Służy do• Zliczanie
• Po doliczeniu do OCR0
• W OCR0 wartość z zakresu
Tryb CTC
Tryb Fast PWM
• Służy do• Zliczanie
• Po doliczeniu do 255
• tylko zbocze narastające:
• Praca normalna: odwrócona:
pin OC0 » ’0’ przy zrównaniu przy przepełnieniu pin OC0 » ’1’ przy przepełnieniu przy zrównaniu • DDRB » ’1’ aby OC0 działało!
Tryb Fast PWM
Tryb PWM z korekcją fazy
• Służy do• Zliczanie
• Po doliczeniu do 255
• 2 zbocza (narastające i opadające):
• Praca normalna: odwrócona:
pin OC0 » ’0’ przy zrównaniu przy zrównaniu na zb. narastającym na zb. opadającym
pin OC0 » ’1’ przy zrównaniu przy zrównaniu na zb. opadającym na zb. narastającym • DDRB » ’1’ aby OC0 działało!
Tryb PWM z korekcją fazy
• Zliczanie w• Po doliczeniu do MAX
• 2 zbocza (narastające i opadające): –
-
• Praca normalna: odwrócona:
pin OC0 » 0
pin OC0 » 1
• DDRB » 1 aby OC0 działało!
• Flaga przepełnienia (TOV0) ustawiana przy przejściu przez `0`!
Tryb PWM z korekcją fazy
Licznik „1”
Timer/Counter 1
Zastosowanie
Służy do:
• zliczania:
- impulsów zegarowych
- impulsów zewnętrznych
• generowania sygnału PWM
• generowania częstotliwości
Cechy
• 16-o bitowy (0-65535)
• 10-o bitowy prescaler (wspólny z T/C0) • 2x Output Compare (OCR1A, OCR1B)
• Input Capture (IC) – detekcja zdarzeń zewnętrznych • IC Noise Canceler
• 3 tryby PWM • 4 przerwania:
ICF1 – TIMER1 CAPT – wektor 0x005 OCF1A – TIMER1 COMPA – wektor 0x006 OCF1B – TIMER1 COMPB – wektor 0x007 TOV1 – TIMER1 OVF – wektor 0x008
Budowa
Wnę trz e mi kro ko nt ro le raSterowanie licznikiem T/C1
• 6+3 rejestry specjalne:- Timer/Counter 1 Control Register A (TCCR1A) – 8 bit - Timer/Counter 1 Control Register B (TCCR1B) – 8 bit - Timer/Counter 1 Register (TCNT1) – 16 bit
- Output Compare Register 1A (OCR1A) – 16 bit - Output Compare Register 1B (OCR1B) – 16 bit - Input Capture Register 1 (ICR1) – 16 bit
- Timer /Counter Interrupt Mask Register (TIMSK) - Timer /Counter Interrupt Flag Register (TIFR) - Special Function I/O Register (SFIOR)
• 2 wejścia:
- Timer1 (T1) – PB1
- Input Capture pin (ICP1) – PD6
Sterowanie licznikiem T/C1
• 2 wyjścia:- Output Compare 1A (OC1A) – PD5 - Output Compare 1B (OC1B) – PD4 • 4 przerwania:
- Input Capture Flag (ICF1, wektor 0x005)
- Output Compare 1A (OCF1A, wektor 0x006) - Output Compare 1B (OCF1B, wektor 0x007) - Timer1 Overflow (TOV1, wektor 0x008)
Piny licznika T/C1
Piny WE/WY
T1 PB1 OC1A, OC1B PD5, PD4 ICP1 ICP1 PD6Taktowanie licznika
- wybór źródła taktowania
- wybór prescalera (dla źródła MCU)
- wybór zbocza (dla źródła zewnętrznego) Źródło nie wybrane = licznik zatrzymany
CS12 CS11 CS10
T1 T1
• T/C0 i T/C1 wykorzystują ten sam moduł prescalera
(1, 8, 64, 256, 1024), ale mogą mieć różne dzielniki • pin wejściowy T0 (T1) – taktowanie licznika
• reset prescalera – SFIOR (PSR10)
T/C0, T/C1 - prescaler
2
clk zewnf
f
Special Function IO Register
Output Compare Unit
(układ porównawczy)
Przerwania
OCR1A:
0x006
OCR1B:
0x007
Wyjścia ukł. porównawczego
Wyjścia:
OC1A:
PD5
OC1B:
PD4
Input Capture Unit
(układ zatrzaskujący)
PD6
Przerwanie: 0x005
Tryby pracy
Licznika 1
Tryby pracy T/C1
Tryb normalny
zob. T/C0
Tryby CTC
2 tryby:
• z OCR1A
• z ICR1
Tryby FAST PWM
Fast PWM
Zliczanie
Flaga TOV1 – w TOP
Zmiana na pinach OC1x przy: OCR1A, OCR1B, TOP
Tryby Phase Correct PWM (korekcja fazy)
Tryby Phase Correct PWM (korekcja fazy)
Zliczanie
Flaga TOV1 –
Zmiana na pinach OC1x przy: OCR1A, OCR1B
Modyfikacja OCR1x – w TOP => niesymetryczny PWM
Tryby Phase and Frequency Correct PWM
(korekcja fazy i częstotliwości)
Tryby Phase and Frequency Correct PWM
(korekcja fazy i częstotliwości)
Zliczanie
Flaga TOV1 –
Zmiana na pinach OC1x przy: OCR1A, OCR1B
Modyfikacja OCR1x – w BOTTOM => symetryczny PWM
PC / PFC PWM
PC / PFC PWM
Rejestry
Licznika T/C1
Timer/Counter1 Control Register A
(TCCR1A)
Piny wyjściowe – tryby NIE PWM
Timer/Counter1 Control Register A
(TCCR1A)
Piny wyjściowe – tryby FAST PWM
Timer/Counter1 Control Register A
(TCCR1A)
Piny wyjściowe – tryby PC i PCF PWM
Timer/Counter1 Control Register B
(TCCR1B)
Timer/Counter1 (TCNT1H, TCNT1H)
Input Capture Register (ICR1H, ICR1L)
Output Compare Registers (OCR1AH, OCR1AL)
(OCR1BH, OCR1BL)
Rejestry 16-bitowe
16-bitowe:
TCNT1
ICR1
OCR1A
OCR1B
Timer/Counter Interrupt Mask Register
Timer/Counter Interrupt Flag Register
Licznik „2”
Timer/Counter 2
Cechy
• 8-o bitowy (0-255)
• 10-o bitowy prescaler (niezależny od T/C0 i T/C1)
• Output Compare (OCR2)
• 2 tryby PWM
• 2 przerwania:
OCF2 – TIMER2 COMP – wektor 0x003
TOV2 – TIMER2 OVF – wektor 0x004
Zastosowanie
Służy do:
• zliczania:
- impulsów zegarowych
- impulsów zewnętrznych
• generowania sygnału PWM
• generowania częstotliwości
• możliwość pracy jako licznik czasu rzeczywistego
(Real Time Counter)
Budowa
Budowa - c.d.
Sterowanie licznikiem T/C2
• 4+3 rejestry specjalne:- Timer/Counter 2 Control Register (TCCR2) - Timer/Counter 2 Register (TCNT2)
- Output Compare Register 2 (OCR2) - Asynchronous Status Register (ASSR)
- Timer /Counter Interrupt Mask Register (TIMSK) - Timer /Counter Interrupt Flag Register (TIFR) - Special Function I/O Register (SFIOR)
• wejścia:
- Timer Oscillator 1 (TOSC1) – PC6 - Timer Oscillator 2 (TOSC2) – PC7 • wyjścia:
- Output Compare 2 (OC2) – PD7
T/C2 vs T/C0
Różnice dotyczą
Rejestry
Licznika T/C2
Timer/Counter Control Register (TCCR2)
Pozostałe rejestry
Timer/Counter Register (TCNT2)
Output Compare Register (OCR2)
Timer/Counter Interrupt Mask Register (TIMSK)
(bity 7 oraz 6)
Timer/Counter Interrupt Flag Register (TIFR)
(bity 7 oraz 6)
Special Function IO Register (SFIOR)
(bit 1)
Asynchronous Status Register (ASSR)
AS2 – 1 =>
Pozostałe – sygnalizacja dostępności
Praca asynchroniczna
• Przy zmianie źródła taktowania możliwe
• Optymalna f =
• Zapis/odczyt rejestrów trwa
(ważne m.in. przy )
• Wybudzanie przerwaniem od T/C2 asynchro:
• T/C2 asynchro wyłączany tylko w
• Po wybudzeniu TOSC1/2 oraz CPU
(wymaga czasu)
Przykładowe zagadnienia
sprawdzające
1. Liczniki mikrokontrolerów – cechy, różnice.
2. Tryby pracy – cechy, różnice, zastosowania.
3. Wejścia i wyjścia – rodzaje, zastosowania.
4. Bloki funkcyjne liczników.
5. Przerwania – rodzaje.
6. Sposoby formowania przebiegów prostokątnych na wyjściu licznika.
7. Praca asynchroniczna, zegar czasu rzeczywistego – wyjaśnij terminy.