Mikroprocesory i Mikrosterowniki Liczniki Timer Counter T/C0, T/C1, T/C2 Wydział Elektroniki Mikrosystemów i Fotoniki Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com.
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 TIMSK TIFR Wnętrze mikrokontrolera Piny WE/WY
Taktowanie licznika
Piny WE/WY T0 wejście dla zliczanych impulsów
Struktura Wnętrze mikrokontrolera Piny WE/WY
Piny WE/WY
Struktura waveform generator Wnętrze mikrokontrolera Piny WE/WY
Piny WE/WY OC0 wyjście przebiegu prostokątnego T1 T2 T3 T4 T5 T6 T7
Piny WE/WY OC0 wyjście przebiegu prostokątnego
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 COM0 Tryb CTC
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 zmniejsza zakres pracy licznika (0 OCR0)
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ętrze mikrokontrolera
Sterowanie 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 ICP1 ICP1 PD6 OC1A, OC1B PD5, PD4
Taktowanie licznika CS12 CS11 CS10 - 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 T1 T1
T/C0, T/C1 - prescaler 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 f < zewn f clk reset prescalera SFIOR (PSR10) 2 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.