Wbudowanelielow/PTM/Wyklady/W8_Wbudowane...układy peryferyjne cz. 2 Wykład 8 Timery (liczniki)...
Transcript of Wbudowanelielow/PTM/Wyklady/W8_Wbudowane...układy peryferyjne cz. 2 Wykład 8 Timery (liczniki)...
Techniki mikroprocesorowe
Wbudowane układy peryferyjne cz. 2
Wykład 8
Timery (liczniki)
Techniki mikroprocesorowe
Timery
2
Techniki mikroprocesorowe
Timery – informacje ogólne
• Mikrokontroler ATmega32 posiada 3 liczniki:
– Timer0 – 8-bitowy
– Timer1 – 16-bitowy
– Timer2 – 8-bitowy, mogący pracować w trybie asynchronicznym
• Każdy licznik może pracować w jednym z kilku trybów pracy i być źródłem przerwań
3
Techniki mikroprocesorowe
Timery – informacje ogólne
• Timery mogą być taktowane sygnałem z różnych źródeł
• Każdy timer ma możliwość pracy z preskalerem sygnału taktującego, stopnie podziału są zależne od numeru timera
4
Techniki mikroprocesorowe
Timery - pojęcia
• BOTTOM – minimalna wartość możliwa do osiągnięcia przez timer (0x00 lub 0x0000)
• MAX – maksymalna wartość możliwa do osiągnięcia przez timer (0xff lub 0xffff – zależnie od timera)
• TOP – maksymalna wartość timera możliwa do osiągnięcia w danej sekwencji zliczania. Może być nią MAX lub wartość OCRn lub ICRx.
5
Timer0 i timer2
Techniki mikroprocesorowe
Timer0 i timer2
6
Techniki mikroprocesorowe
Timer 0
7
Techniki mikroprocesorowe
Timer2
8
Techniki mikroprocesorowe
Timer0 i timer2 – informacje ogólne
• Pojemność: 8-bitów • Pojedynczy moduł porównujący • 10-bitowy preskaler • Tryby:
– Zliczanie (zegar zewnętrzny lub wewnętrzny) – Szybki PWM i PWM z korekcją fazy – Zerowanie w momencie zgodności (CTC - Clear Timer
on Compare)
• Przerwania: – Przepełnienie, zgodność
9
Techniki mikroprocesorowe
Timer0 i timer1 - preskaler
10
Techniki mikroprocesorowe
Timer2 - preskaler
11
Techniki mikroprocesorowe
Tryb zliczania
• W trybie tym licznik zlicza impulsy taktujące, pochodzące z zegara systemowego lub źródła zewnętrznego
• W momencie przepełnienia może zostać zgłoszone przerwanie
• Stan licznik przechowywany jest w rejestrze TCNT0 (timer0) lub TCNT2 (timer2)
12
Techniki mikroprocesorowe
Tryb zliczania (timer0)
13
Techniki mikroprocesorowe
Tryb zliczania (timer2)
14
Techniki mikroprocesorowe
Tryb porównywania
• W trybie tym stan licznika TCNT0 (timer0) lub TCNT2 (timer2) jest porównywany ze stanem rejestru OCR0 (timer0) lub OCR0 (timer2)
• W momencie wystąpienia zgodności może zostać zgłoszone przerwanie
• Ponadto w momencie wystąpienia zgodności może zostać zmieniony stan pinu OC0 (timer0) lub OC2 (timer2)
15
Techniki mikroprocesorowe
Tryb porównywania
16
Techniki mikroprocesorowe
Tryb zerowania timera w momencie zgodności (CTC)
• W trybie tym stan timera TCNT0 (timer0) lub TCNT2 (timer2) jest zerowany w momencie wystąpienia zgodności ze stanem rejestru OCR0 (timer0) lub OCR2 (timer2)
• Oprócz wyzerowania może zostać stan pinu OC0 (timer0) lub OC2 (timer2)
17
Techniki mikroprocesorowe
Tryb zerowania timera w momencie zgodności (CTC)
18
Techniki mikroprocesorowe
Tryb zerowania timera w momencie zgodności (CTC)
• Częstotliwość przebiegu generowanego na wyjściu OC0 (timer0) lub OC2 (timer2) jest zadana wzorem:
gdzie N jest współczynnikiem podziału preskalera (różne dla timera0 i timera1)
)1(2
/_
OCRnN
ff
OIclk
OCn
19
Techniki mikroprocesorowe
Tryb szybkiego PWM
• W trybie tym licznik zlicza od BOTTOM do MAX, po czym jest zerowany
• Zmiana stanu następuje w momencie osiągnięcia BOTTOM i TOP
20
Techniki mikroprocesorowe
Tryb szybkiego PWM
21
Techniki mikroprocesorowe
Tryb szybkiego PWM
• Częstotliwość przebiegu generowanego na wyjściu OC0 (timer0) lub OC2 (timer2) jest zadana wzorem:
gdzie N jest współczynnikiem podziału preskalera (różne dla timera0 i timera1)
N
ff
OIclk
OCnPWM
256
/_
22
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
• W trybie tym licznik zlicza od BOTTOM do TOP
• W momencie osiągnięcia zgodności zmieniany jest stan OC0 (lub OC2 dla timera2) na przeciwny
• Po osiągnięciu TOP licznik zmienia kierunek zliczania
• Ponownie w momencie osiągnięcia zgodności zmieniany jest stan OC0 (lub OC2 dla timera2) na przeciwny
23
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
24
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
• Częstotliwość przebiegu generowanego na wyjściu OC0 jest zadana wzorem:
gdzie N jest współczynnikiem podziału preskalera (różne dla timera0 i timera1)
N
ff
OIclk
OCnPCPWM
510
/_
25
Techniki mikroprocesorowe
Timer0 i timer2 - rejestry
• TCCRn:
– FOCn: w trybie zwykłym zmienia wartość pinu OCn zgodnie z bitami COMn0 i COMn1
– WGMn0 i WGMn1: tryb pracy
WGMn1 WGMn0 Tryb TOP Aktualizacja OCRn
Flaga TOVn ustawiana
0 0 Normalny 0xff natychmiast MAX
0 1 PWM z korekcją fazy
0xff TOP BOTTOM
1 0 CTC OCRn natychmiast MAX
1 1 Szybki PWM 0xff BOTTOM MAX 26
Techniki mikroprocesorowe
Timer0 i timer2 - rejestry
• TCCRn – c.d.:
– COMn0 i COMn1: tryb porównywania zgodności
COMn1 COMn0 Opis dla trybów innych niż PWM
0 0 OCn odłączony
0 1 Zmień stan OCn na przeciwny w momencie zgodności
1 0 Zeruj OCn w momencie zgodności
1 1 Ustaw OCn w momencie zgodności
27
Techniki mikroprocesorowe
Timer0 i timer2 - rejestry
COMn1 COMn0 Opis dla trybu szybkiego PWM
0 0 OCn odłączony
0 1 Zarezerwowany
1 0 Zeruj OCn w momencie zgodności, ustaw OCn dla BOTTOM
1 1 Ustaw OCn w momencie zgodności, zeruj OCn dla BOTTOM
COMn1 COMn0 Opis dla trybu PWM z korekcją fazy
0 0 OCn odłączony
0 1 Zarezerwowany
1 0 Zeruj OCn w momencie zgodności przy liczeniu w górę, ustaw OCn w momencie zgodności przy liczeniu w dół
1 1 Zeruj OCn w momencie zgodności przy liczeniu w dół, ustaw OCn w momencie zgodności przy liczeniu w górę
28
Techniki mikroprocesorowe
Timer0 - rejestry
• TCCR0 – c.d.: – CS00, CS01, CS02: dzielnik preskalera
CSn2 CSn1 CSn0 Opis
0 0 0 Sygnał taktujący odłączony (licznik zatrzymany)
0 0 1 clk/1
0 1 0 clk/8
0 1 1 clk/64
1 0 0 clk/256
1 0 1 clk/1024
1 1 0 Sygnał taktujący podany na pin T0 – reakcja na zbocze opadające
1 1 1 Sygnał taktujący podany na pin T0 – reakcja na zbocze narastające
29
Techniki mikroprocesorowe
Timer2 - rejestry
• TCCR2 – c.d.:
– CS20, CS21, CS22: dzielnik preskalera
CS22 CS21 CS20 Opis
0 0 0 Sygnał taktujący odłączony (licznik zatrzymany)
0 0 1 clk/1
0 1 0 clk/8
0 1 1 clk/32
1 0 0 clk/64
1 0 1 clk/128
1 1 0 clk/256
1 1 1 clk/1024 30
Techniki mikroprocesorowe
Timer0 i timer2 – rejestry
• TCNTn: bieżący stan licznika
• OCRn: rejestr wartości do porównania
• TIMSK:
– OCIEn: 1 - włączenie przerwania przy zgodności
– TOIEn: 1 - włączenie przerwania przy przepełnieniu
• TIFR:
– OCFn: flaga wystąpienia przerwania przy zgodności
– TOVn: flaga wystąpienia przerwania przy przepełnieniu
31
Timer1
Techniki mikroprocesorowe
Timer1
32
Techniki mikroprocesorowe
Timer1
33
Techniki mikroprocesorowe
Timer1 – informacje ogólne
• Pojemność: 16-bitów • Podwójny moduł porównujący • Pojedynczy moduł przechwytywania • 10-bitowy preskaler • Tryby:
– Zliczanie (zegar zewnętrzny lub wewnętrzny) – Szybki PWM, PWM z korekcją fazy, PWM z korekcją fazy i
częstotliwości – Zerowanie w momencie zgodności (CTC)
• Przerwania: – Przepełnienie, zgodność, przechwycenie
34
Techniki mikroprocesorowe
Tryb zliczania
• Tryb ten działa tak samo jak w przypadku licznika timer0
• Wartość licznika jest przechowywana w rejestrze TCNT1 (TCNT1H i TCNT1L)
35
Techniki mikroprocesorowe
Tryb zliczania
36
Techniki mikroprocesorowe
Tryb przechwytywania
• W trybie tym istnieje możliwość zachowania stanu licznika timer1 w momencie pojawienia się wybranego zbocza na pinie ICP1
• Przechwycona wartość jest zachowywana w rejestrze ICR1 (ICR1H i ICR1L)
• W momencie przechwycenia może być zgłoszone przerwanie
37
Techniki mikroprocesorowe
Tryb przechwytywania
38
Techniki mikroprocesorowe
Tryb porównywania
• Tryb ten działa identycznie jak w liczniku timer0, z tą różnicą, że timer1 posiada dwa takie moduły: A i B
• Moduły te posiadają odpowiednio rejestry OCR1A i OCR1B oraz własne opcje konfiguracyjne, dzięki czemu mogą działać częściowo niezależnie od siebie
• Moduły A i B mogą zgłaszać przerwania niezależnie od siebie
39
Techniki mikroprocesorowe
Tryb porównywania
40
Techniki mikroprocesorowe
Tryb zerowania timera w momencie zgodności (CTC)
• Zasada działania tego trybu jest identyczna jak w przypadku timera0, lecz dzięki posiadaniu dwóch modułów porównawczych możliwe jest generowanie dwóch niezależnych przebiegów na pinach OCR1A i OCR1B
41
Techniki mikroprocesorowe
Tryb zerowania timera w momencie zgodności (CTC)
42
Techniki mikroprocesorowe
Tryb zerowania timera w momencie zgodności (CTC)
• Częstotliwość generowanego przebiegu na wyjściach OC1A i OC1B można wyrazić wzorem gdzie N jest współczynnikiem podziału preskalera (1,8,64,256,1024)
)1(2
/_
OCRnxN
ff
OIclk
OCnx
43
Techniki mikroprocesorowe
Tryb szybkiego PWM
• Tryb ten różni się od trybu szybkiego PWM dla timera0 możliwością użycia jako TOP rejestru ICR1 lub OCR1x
• Dzięki obecności dwóch modułów porównujących A i B istnieje możliwość jednoczesnego generowania dwóch przebiegów o różnym wypełnieniu
44
Techniki mikroprocesorowe
Tryb szybkiego PWM
45
Techniki mikroprocesorowe
Tryb szybkiego PWM
• Częstotliwość i rozdzielczość generowanego przebiegu można wyrazić wzorami gdzie N jest współczynnikiem podziału preskalera (1,8,64,256,1024)
)1(2
/_
TOPN
ff
OIclk
OCnxPWM
)2log(
)1log(
TOPRFPWM
46
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
• Podobnie jak tryb szybkiego PWM, tryb ten różni się od trybu PWM z korekcją fazy dla timera0 możliwością użycia jako TOP rejestru ICR1 lub OCR1x
• Dzięki obecności dwóch modułów porównujących A i B istnieje możliwość jednoczesnego generowania dwóch przebiegów o różnym wypełnieniu
47
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
• W przypadku zmiany wartości TOP przez program jego wartość jest aktualizowana z bufora tymczasowego w momencie osiągnięcia przez licznik wartości aktualnej wartości TOP
• Podczas ustawiania nowej wartości TOP należy ustawiać ją zawsze większą lub równą niż wartość w rejestrze porównującym, w przeciwnym wypadku ponowne porównanie nigdy nie nastąpi
48
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
49
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy
• Częstotliwość i rozdzielczość generowanego przebiegu można wyrazić wzorami gdzie N jest współczynnikiem podziału preskalera (1,8,64,256,1024)
TOPN
ff
OIclk
OCnxPCPWM
2
/_
)2log(
)1log(
TOPRPCPWM
50
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy i częstotliwości
• Tryb ten jest podobny do trybu z korekcją fazy, z tą różnicą, że aktualizacja wartości TOP następuje w momencie, gdy licznik ma wartość BOTTOM
• Tryb ten ma zastosowanie, jeśli TOP ulega zmianom w trakcie pracy licznika. Jeśli wartość TOP jest stała, tryb ten jest taki sam jak PWM z korekcją fazy.
51
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy i częstotliwości
52
Techniki mikroprocesorowe
Tryb PWM z korekcją fazy i częstotliwości
• Częstotliwość i rozdzielczość generowanego przebiegu można wyrazić wzorami gdzie N jest współczynnikiem podziału preskalera (1,8,64,256,1024)
TOPN
ff
OIclk
OCnxPCPWM
2
/_
)2log(
)1log(
TOPRPCPWM
53
Techniki mikroprocesorowe
Timer1 - rejestry
• TCCR1A
– COM1A1 i COM1A0: tryb porównywania dla modułu A
– COM1B1 i COM1B0: tryb porównywania dla modułu B
54
Techniki mikroprocesorowe
Timer1 - rejestry
COM1A1 COM1B1
COM1A0 COM1B0
Opis (tryby inne niż PWM)
0 0 Pin OC1A/OC1B odłączony
0 1 Zmień stan OC1A/OC1B na przeciwny w momencie zgodności
1 0 Zeruj OC1A/OC1B w momencie zgodności
1 1 Ustaw OC1A/OC1B w momencie zgodności
55
Techniki mikroprocesorowe
Timer1 - rejestry
COM1A1 COM1B1
COM1A0 COM1B0
Opis (tryb szybkiego PWM)
0 0 Pin OC1A/OC1B odłączony
0 1 Jeśli TOP:=OCR1A: zmień stan OC1A na przeciwny w momencie zgodności, OC1B odłączony Pozostałe przypadki: zmień stan OC1A/OC1B odłączone
1 0 Zeruj OC1A/OC1B w momencie zgodności, ustaw dla BOTTOM
1 1 Ustaw OC1A/OC1B w momencie zgodności, zeruj dla BOTTOM
56
Techniki mikroprocesorowe
Timer1 - rejestry
COM1A1 COM1B1
COM1A0 COM1B0
Opis (tryb PWM z korekcją fazy i PWM z korekcją fazy i częstotliwości)
0 0 Pin OC1A/OC1B odłączony
0 1 Jeśli TOP:=OCR1A: zmień stan OC1A na przeciwny w momencie zgodności, OC1B odłączony Pozostałe przypadki: zmień stan OC1A/OC1B odłączone
1 0 Zeruj OC1A/OC1B w momencie zgodności przy liczeniu w górę, ustaw OC1A/OC1B w momencie zgodności przy liczeniu w dół
1 1 Ustaw OC1A/OC1B w momencie zgodności przy liczeniu w górę, zeruj OC1A/OC1B w momencie zgodności przy liczeniu w dół
57
Techniki mikroprocesorowe
Timer1 - rejestry
• TCCR1A – c.d.:
– FOC1A: w trybie zwykłym zmienia wartość pinu OC1A zgodnie z bitami COM1A0 i COM1A1
– FOC1B: w trybie zwykłym zmienia wartość pinu OC1B zgodnie z bitami COM1B0 i COM1B1
– WGM11 i WGM10: tryb pracy licznika
58
Techniki mikroprocesorowe
Timer1 - rejestry
WG
M1
3
WG
M1
2
WG
M1
1
WG
M1
0
Tryb pracy TOP Aktualizacja OCR1x
Flaga TOV1 ustawiana
0 0 0 0 Normalny 0xffff natychmiast MAX
0 0 0 1 PWM z kor. Fazy, 8-bit 0x00ff TOP BOTTOM
0 0 1 0 PWM z kor. Fazy, 9-bit 0x01ff TOP BOTTOM
0 0 1 1 PWM z kor. Fazy, 10-bit 0x03ff TOP BOTTOM
0 1 0 0 CTC OCR1A Natychmiast MAX
0 1 0 1 Szybki PWM, 8-bit 0x00ff BOTTOM TOP
0 1 1 0 Szybki PWM, 9-bit 0x01ff BOTTOM TOP
0 1 1 1 Szybki PWM, 10-bit 0x03ff BOTTOM TOP
59
Timer1 - rejestry
Techniki mikroprocesorowe
WG
M1
3
WG
M1
2
WG
M1
1
WG
M1
0
Tryb pracy TOP Aktualizacja OCR1x
Flaga TOV1 ustawiana
1 0 0 0 PWM z korekcją fazy i częst. ICR1 BOTTOM BOTTOM
1 0 0 1 PWM z korekcją fazy i częst. OCR1A BOTTOM BOTTOM
1 0 1 0 PWM z korekcją fazy ICR1 TOP BOTTOM
1 0 1 1 PWM z korekcją fazy OCR1A TOP BOTTOM
1 1 0 0 CTC ICR1 Natychmiast MAX
1 1 0 1 zarezerwowane - - -
1 1 1 0 Szybki PWM ICR1 BOTTOM TOP
1 1 1 1 Szybki PWM OCR1A BOTTOM TOP
60
Techniki mikroprocesorowe
Timer1 - rejestry
• TCCR1B:
– ICNC1: 1 - włączenie eliminacji zakłóceń na wejściu ICP1
– ICES1: wybór zbocza przechwytywania: 0 – opadające, 1- narastające
– WGM12 i WGM13: tryb pracy licznika
– CS10, CS11, CS12: dzielnik preskalera
61
Techniki mikroprocesorowe
Timer1 - rejestry
CS12 CS11 CS10 Opis
0 0 0 Sygnał taktujący odłączony (licznik zatrzymany)
0 0 1 clk/1
0 1 0 clk/8
0 1 1 clk/64
1 0 0 clk/256
1 0 1 clk/1024
1 1 0 Sygnał taktujący podany na pin T1 – reakcja na zbocze opadające
1 1 1 Sygnał taktujący podany na pin T1 – reakcja na zbocze narastające
62
Techniki mikroprocesorowe
Timer1 - rejestry
• TCNT1 (TCNT1H i TCNT1L): bieżący stan licznika
• OCR1A (OCR1AH i OCR1AL): rejestr wartości do porównania (A)
• OCR1B (OCR1BH i OCR1BL): rejestr wartości do porównania (B)
• ICR1 (ICR1A i ICR1L): rejestr przechwytujący
63
Techniki mikroprocesorowe
Timer1 - rejestry
• TIMSK: – TICIE1: 1 - włączenie przerwania przy przechwyceniu
– OCIE1A i OCIE1B: 1 - włączenie przerwania przy zgodności (moduł A i B komparatora)
– TOIE1: 1 - włączenie przerwania przy przepełnieniu
• TIFR: – ICF1: flaga przerwania przy przechwyceniu
– OCF1A i OCF1B: flagi przerwania przy zgodności (moduł A i B)
– TOV1: flaga przerwania przy przepełnieniu 64
Timer2 – tryb asynchroniczny
Techniki mikroprocesorowe
Timer 2 – tryb asynchroniczny
65
Techniki mikroprocesorowe
Timer2 – tryb asynchroniczny
• Timer2 posiada możliwość pracy w trybie asynchronicznym, niezależnym od głównego zegara systemowego
• Źródłem sygnału zegarowego dla trybu asynchronicznego może być oscylator kwarcowy 32,768kHz
• Tryb ten umożliwia pracę timera w niektórych trybach oszczędzania energii
66
Techniki mikroprocesorowe
Timer2 – tryb asynchroniczny
• Timer2 pracujący w trybie asynchronicznym może zostać wykorzystany do wybudzania mikrokontrolera z trybu uśpienia lub jako wzorzec częstotliwości dla zegara RTC
67
Techniki mikroprocesorowe
Timer2 – tryb asynchroniczny - rejestry
• ASSR:
– AS2: 1 - przełączenie timera2 w tryb asynchroniczny, zmiana tego bitu w trakcie pracy timera2 może uszkodzić zawartość rejestrów TCNT2, OCR2 i TCCR2
– TCNT2UB: flaga aktualizacji rejestru TCNT2 w trybie asynchronicznym, jeśli jest ustawiona, to wartość rejestru TCNT2 jest aktualizowana
68
Techniki mikroprocesorowe
Timer2 – tryb asynchroniczny - rejestry
• ASSR – c.d.:
– OCR2UB: flaga aktualizacji rejestru OCR2 w trybie asynchronicznym, jeśli jest ustawiona, to wartość rejestru OCR2 jest aktualizowana
– TCR2UB: flaga aktualizacji rejestru TCR2 w trybie asynchronicznym, jeśli jest ustawiona, to wartość rejestru TCR2 jest aktualizowana
69