Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
Poniższy rysunek przedstawia preskaler timera/licznika 1, który obsługuje dwa tryby taktowania: tryb synchroniczny i asynchroniczny. W trybie synchronicznym wykorzystywany jest zegar systemowy (CK) jako podstawa czasu zegara, a w trybie asynchronicznym jako podstawę czasu wykorzystuje się szybki zegar peryferyjny (PCK). Tryb asynchroniczny jest uaktywniany przez ustawienie na 1 bitu PCKE w rejestrze PLLCSR.
W asynchronicznym trybie taktowania wybór zegara przebiega od PCK do PCK/16384 oraz stop, a w trybie synchronicznym wybór przebiega od CK do CK/16384 oraz stop. Ustawienie bitu PSR1 w rejestrze GTCCR resetuje preskaler. Bit PCKE w rejsetrze PLLCSR włącza tryb asynchroniczny. Częstotliwość szybkiego zegara peryferyjnego wynosi 64 MHz (lub 32 MHz w trybie niskiej szybkości).
Timer/licznik 1 posiada wysoką rozdzielczość i dużą dokładność i można w nim zastosować również niższe częstotliwości z preskalera. Może również wspierać dwa dokładne. 8-bitowe modulatory szerokości impulsu o dużej szybkości pracy z użyciem częstotliwości do 64 MHz (lub 32 MHz w trybie niskiej prędkości). W tym trybie timer/licznik 1 i rejestry output compare służą jako podwójne samodzielne generatory PWM z nienakładającymi się przebiegami na wyjściach nieodwracających i odwracających. Wysokie częstotliwości preskalowania pozwalają wykorzystywać ten moduł w funkcjach niższych częstotliwości lub w funkcjach dokładnego odmierzania czasu w rzadko występujących działaniach.
Timer/licznik 1 i preskaler pozwalają mikroprocesorowi pracować dowolnym źródłem zegarowym, podczas gdy preskaler pracuje na szybkim zegarze PCK 64 MHz (lub 32 MHz w trybie niskiej szybkości) w trybie asynchronicznym. Zwróć uwagę, iż częstotliwość zegara systemowego musi być niższa od jednej trzeciej częstotliwości PCK. Mechanizm synchronizacji asynchronicznego timera/licznika 1 potrzebuje co najmniej dwóch zboczy PCK, gdy zegar systemowy jest w stanie wysokim. Jeśli częstotliwość zegara systemowego jest zbyt wysoka, istnieje ryzyko, że dane lub wartości sterujące zostaną utracone. Poniższy rysunek przedstawia schemat blokowy timera/licznika 1.
Trzy znaczniki stanu (przepełnienie i zgodności porównań) znajdują się w rejestrze znaczników przerwań timera/licznika (ang. Timer/Counter Interrupt Flag Register - TIFR). Sygnały sterujące znajdują się w rejestrach sterujących timera/licznika (ang. Timer/Counter Control Registers) TCCR1 i GTCCR. Ustawienia aktywacji/dezaktywacji znajdują się w rejestrze maski przerwań timera/licznika (ang. Timer/Counter Interrupt Mask Register - TIMSK).
Timer/licznik 1 zawiera trzy rejestry Output Compare, OCR1A, OCR1B i OCR1C jako źródło danych do porównywania z zawartością timera/licznika 1. W trybie normalnym funkcje Output Compare działają ze wszystkimi rejestrami output compare. Rejestr OCR1A określa działanie na końcówce OC1A (PB1) i może generować przerwanie TIMER1_COMPA w trybie normalnym i w trybie PWM. Podobnie rejestr OCR1B określa działanie na końcówce OC1B (PB4) i może generować przerwanie TIMER1_COMPB w trybie normalnym i w trybie PWM. Rejestr OCR1C przechowuje wartość maksymalną timera/licznika, tj. wartość dla której licznik jest zerowany przy zgodności porównania. W trybie normalnym przerwanie przy przepełnieniu TIMER1_OVF jest generowane, gdy timer/licznik 1 zlicza z 0xFF na 0x00, natomiast w trybie PWM przerwanie przy przepełnieniu jest generowane, gdy timer/licznik 1 zlicza albo z 0xFF na 0x00 lub z OCR1C na 0x00. Zanegowane wyjścia PWM OC1A i OC1B nie są podłączone w trybie normalnym. W trybie PWM rejestry OCR1A i OCR1B udostępniają wartości danych, z którymi jest porównywana wartość timera/licznika. Przy zgodności porównania są generowane wyjścia PWM (OC1A, OC1A, OC1B, OC1B). W trybie PWM timer/licznik zlicza do wartości określonej w rejestrze output compare OCR1C, po czym rozpoczyna zliczanie z powrotem od 0x00. Cecha ta pozwala określić górną wartość, do której licznik będzie zliczał, a która jest niższa od 0xFF. Wraz z wieloma opcjami preskalera udostępniony jest w ten sposób elastyczny wybór częstotliwości PWM. Wyższe częstotliwości PWM można otrzymać kosztem rozdzielczości.
Aby ustawić timer/licznik 1 w tryb asynchroniczny najpierw uaktywnij pętlę PLL, a następnie odczekaj 100 μs na ustabilizowanie się pętli PLL. W kolejnym kroku sprawdzaj wartość bitu PLOCK, aż zostanie ustawiony i wtedy ustaw bit PCKE.
Gdy zostanie wybrany tryb PWM, to timer/licznik 1 i rejestr C output compare - OCR1C tworzą podwójny 8-bitowy, swobodnie pracujący bez zakłóceń generator PWM z wyjściami na końcówkach PB1(OC1A) i PB4(OC1B) oraz z odwróconymi wyjściami na końcówkach PB0(OC1A) i PB3(OC1B). Standardowo czasy nachodzenia na siebie impulsów w komplementarnych parach wyjść (tnon-overlap) wynoszą zero, lecz możne je wstawić przy pomocy generatora czasu martwego (ang. Dead Time Generator).
Gdy wartość licznika zgodzi się z zawartością rejestru OCR1A lub OCR1B, wyjścia OC1A i OC1B są ustawiane lub zerowane zgodnie z bitami COM1A1/COM1A0 lub COM1B1/COM1B0 w rejestrze A sterującym timerem licznikiem 1 - TCCR1, co pokazuje poniższa tabelka.
Timer/licznik 1 pracuje jako licznik liczący w górę od 0x00 do wartości określonej w rejestrze output compare OCR1C, po czym rozpoczyna zliczanie ponownie od 0x00 w górę. Zgodność porównania z rejestrem OC1C ustawi znacznik przerwania przy przepełnieniu (TOV1) po opóźnieniu wnoszonym przez synchronizację po zdarzeniu porównania.
Wybór trybu porównania w trybie PWM
COM1x1 | COM1x0 | Wpływ na końcówki output compare |
0 | 0 | OC1x nie podłączone. OC1x nie podłączone. |
0 | 1 | OC1x zerowane przy zgodności porównania.
Ustawiane, gdy TCNT1 = 0x00. OC1x ustawiane przy zgodności porównania. Zerowane, gdy TCNT1 = 0x00. |
1 | 0 | OC1x zerowane przy zgodności porównania.
Ustawiane, gdy TCNT1 = 0x00. OC1x nie podłączone. |
1 | 1 | OC1x ustawiane przy zgodności porównania.
Zerowane, gdy TCNT1 = 0x00. OC1x nie podłączone. |
Zauważ, iż w trybie PWM zapis do rejestrów Output Compre OCR1A lub OCR1B powoduje umieszczenie wartości danych najpierw w rejestrach tymczasowych. Następnie wartość ta jest zatrzaskiwana w OCR1A lub w OCR1B, gdy timer/licznik osiągnie wartość OCR1C. Zapobiega to wystąpieniu impulsów PWM o złej długości (zakłócenia) w przypadku niezsynchronizowania rejestrów OCR1A lub OCR1B. Przykład pokazuje poniższy rysunek.
W czasie pomiędzy zapisem a operacją zatrzaskiwania, odczyt z rejestrów OCR1A lub OCR1B zwróci zawartość rejestru tymczasowego. Oznacza to, iż z rejestrów OCR1A/B odczytywana jest zawsze ostatnio wpisana wartość. Gdy OCR1A lub OCR1B zawierają 0x00 lub wartość maksymalną, określaną przez rejestr OCR1C register, wyjście PB1(OC1A) lub PB4(OC1B) jest utrzymywane w stanie wysokim lub niskim zgodnie z ustawieniami bitów COM1A1/COM1A0, co pokazuje poniższa tabelka.
Stan wyjść PWM, gdy rejestry OCR1x = 0x00 lub równe są OCR1C, x = A lub B
COM1x1 | COM1x0 | OCR1x | Wyjście OC1x | Wyjście OC1x |
0 | 1 | 0x00 | L | H |
0 | 1 | OCR1C | H | L |
1 | 0 | 0x00 | L | Niepodłączone |
1 | 0 | OCR1C | H | Niepodłączone |
1 | 1 | 0x00 | H | Niepodłączone |
1 | 1 | OCR1C | L | Niepodłączone |
W trybie PWM znacznik przepełnienia timera (ang. Timer Overflow Flag, TOV1) jest ustawiany, gdy TCNT1 zliczy do wartości OCR1C i zostanie zresetowany na 0x00. Przerwanie 1 od przepełnienia timera (ang. Timer Overflow Interrupt1) jest wykonywane, gdy zostaje ustawiony bit TOV1 przy globalnym włączeniu przerwań (bit I w rejestrze stanu SREG) i uaktywnieniu przerwania od przepełnienia timera. Stosuje się to również do znaczników i przerwań Output Compare.
Częstotliwość PWM będzie równa częstotliwości zegara timera 1 podzielonej przez (wartość OCR1C + 1). Zobacz na poniższy wzór:
Rozdzielczość pokazuje ile bitów jest potrzebnych do wyrażenia wartości w rejestrze OCR1C i można ją obliczyć z poniższego wzoru:
Wybór preskalowania zegara timera/licznika 1 w trybie asynchronicznym
Częstotliwość PWM | Wybór zegara | CS1[3:0] | OCR1C | Rozdzielczość |
20 kHz | PCK/16 | 0101 | 199 | 7.6 |
30 kHz | PCK/16 | 0101 | 132 | 7.1 |
40 kHz | PCK/8 | 0100 | 199 | 7.6 |
50 kHz | PCK/8 | 0100 | 159 | 7.3 |
60 kHz | PCK/8 | 0100 | 132 | 7.1 |
70 kHz | PCK/4 | 0011 | 228 | 7.8 |
80 kHz | PCK/4 | 0011 | 199 | 7.6 |
90 kHz | PCK/4 | 0011 | 177 | 7.5 |
100 kHz | PCK/4 | 0011 | 159 | 7.3 |
110 kHz | PCK/4 | 0011 | 144 | 7.2 |
120 kHz | PCK/4 | 0011 | 132 | 7.1 |
130 kHz | PCK/2 | 0010 | 245 | 7.9 |
140 kHz | PCK/2 | 0010 | 228 | 7.8 |
150 kHz | PCK/2 | 0010 | 212 | 7.7 |
160 kHz | PCK/2 | 0010 | 199 | 7.6 |
170 kHz | PCK/2 | 0010 | 187 | 7.6 |
180 kHz | PCK/2 | 0010 | 177 | 7.5 |
190 kHz | PCK/2 | 0010 | 167 | 7.4 |
200 kHz | PCK/2 | 0010 | 159 | 7.3 |
250 kHz | PCK | 0001 | 255 | 8.0 |
300 kHz | PCK | 0001 | 212 | 7.7 |
350 kHz | PCK | 0001 | 182 | 7.5 |
400 kHz | PCK | 0001 | 159 | 7.3 |
450 kHz | PCK | 0001 | 141 | 7.1 |
500 kHz | PCK | 0001 | 127 | 7.0 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x30 | CTC1 | PWM1A | COM1A1 | COM1A0 | CS13 | CS12 | CS11 | CS10 | TCCR1 |
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Gdy bit sterujący CTC1 jest ustawiony, timer/licznik 1 zostaje zresetowany na 0x00 w cyklu mikroprocesora następującym po zgodności porównania z wartością rejestru OCR1C. Jeśli ten bit sterujący jest wyzerowany, to timer/licznik 1 kontynuuje zliczanie i nie wpływa na niego zgodność porównania.
Gdy bit ten zostanie ustawiony, włącza tryb PWM oparty o komparator OCR1A w timerze/liczniku 1 i wartość licznika jest resetowana na 0x00 w takcie mikroprocesora występującym po zgodności porównania z wartością rejestru iOCR1C.
Bity sterujące COM1A1 i COM1A0 określają zachowanie się końcówki wyjściowej po wystąpieniu zgodności porównania z rejestrem A w timerze/liczniku 1. Ponieważ działanie na końcówce wyjściowej jest alternatywną funkcją portu we/wy, to odpowiedni bit kierunku musi zostać ustawiony na 1, aby kontrolować końcówkę wyjścia.
W trybie normalnym bity sterujące COM1A1 i COM1A0 określają działania wpływające na końcówkę PB1 (OC1A), co pokazuje poniższa tabelka. Zauważ, iż OC1A nie jest podłączone w trybie normalnym.
COM1A1 | COM1A0 | Opis |
0 | 0 | Komparator A timera/licznika odłączony od końcówki wyjściowej OC1A. |
0 | 1 | Zmiana stanu linii OC1A na przeciwny. |
1 | 0 | Zerowanie linii OC1A. |
1 | 1 | Ustawienie w stan 1 linii OC1A. |
W trybie PWM bity te mają inne znaczenia. Zobacz tutaj.
Bity wyboru zegara 3, 2, 1 i 0 definiują preskalujace źródło dla timera/licznika 1.
CS13 | CS12 | CS11 | CS10 | Tryb asynchroniczny | Tryb synchroniczny |
0 | 0 | 0 | 0 | Timer/licznik 1 zatrzymany | Timer/licznik 1 zatrzymany |
0 | 0 | 0 | 1 | PCK | CK |
0 | 0 | 1 | 0 | PCK/2 | CK/2 |
0 | 0 | 1 | 1 | PCK/4 | CK/4 |
0 | 1 | 0 | 0 | PCK/8 | CK/8 |
0 | 1 | 0 | 1 | PCK/16 | CK/16 |
0 | 1 | 1 | 0 | PCK/32 | CK/32 |
0 | 1 | 1 | 1 | PCK/64 | CK/64 |
1 | 0 | 0 | 0 | PCK/128 | CK/128 |
1 | 0 | 0 | 1 | PCK/256 | CK/256 |
1 | 0 | 1 | 0 | PCK/512 | CK/512 |
1 | 0 | 1 | 1 | PCK/1024 | CK/1024 |
1 | 1 | 0 | 0 | PCK/2048 | CK/2048 |
1 | 1 | 0 | 1 | PCK/4096 | CK/4096 |
1 | 1 | 1 | 0 | PCK/8192 | CK/8192 |
1 | 1 | 1 | 1 | PCK/16384 | CK/16384 |
Opcja stopu udostępnia funkcję zatrzymania timera/licznika 1.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x2C | TSM | PWM1B | COM1B1 | COM1B0 | FOC1B | FOC1A | PSR1 | PSR0 | GTCCR |
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z | Z | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Po ustawieniu na jeden ten bit włącza tryb PWM oparty na komparatorze OCR1B w timerze/liczniku 1 i wartość licznika jest resetowana na 0x00 w takcie mikroprocesora po zgodności porównania z wartością rejestru OCR1C.
Bity sterujące COM1B1 i COM1B0 określają zachowanie się końcówki wyjściowej po wystąpieniu zgodności porównania z rejestrem B w timerze/liczniku 1. Ponieważ działanie na końcówce wyjściowej jest alternatywną funkcją portu we/wy, to odpowiedni bit kierunku musi zostać ustawiony na 1, aby kontrolować końcówkę wyjścia.
W trybie normalnym bity sterujące COM1A1 i COM1A0 określają działania wpływające na końcówkę PB4 (OC1B), co pokazuje poniższa tabelka. Zauważ, iż OC1B nie jest podłączone w trybie normalnym.
COM1B1 | COM1B0 | Opis |
0 | 0 | Komparator B timera/licznika odłączony od końcówki wyjściowej OC1B. |
0 | 1 | Zmiana stanu linii OC1B na przeciwny. |
1 | 0 | Zerowanie linii OC1B. |
1 | 1 | Ustawienie w stan 1 linii OC1B. |
W trybie PWM bity te mają inne znaczenia. Zobacz tutaj.
Zapis logicznej jedynki do tego bitu wymusza zmianę zgodności porównania na końcówce wyjścia PB4 (OC1B) zgodnie z wartościami wcześniej ustawionymi w bitach COM1B1 i COM1B0. Jeśli bity COM1B1 i COM1B0 są zapisywane w tym samym cyklu co bit FOC1B, to zostanie użyte nowe ustawienie. Bit wymuszonej zgodności porównania można wykorzystać do zmiany wartości końcówki wyjścia bez względu na wartość licznika. Automatyczne działanie zaprogramowane w bitach COM1B1 i COM1B0 zostanie wykonane tak, jakby wystąpiła zgodność porównania, lecz nie będzie generowane przerwanie. Bit FOC1B zawsze daje przy odczycie zero. Bit FOC1B nie jest używany, gdy został ustawiony bit PWM1B.
Zapis logicznej jedynki do tego bitu wymusza zmianę zgodności porównania na końcówce wyjścia PB1 (OC1A) zgodnie z wartościami wcześniej ustawionymi w bitach COM1A1 i COM1A0. Jeśli bity COM1A1 i COM1A0 są zapisywane w tym samym cyklu co bit FOC1A, to zostanie użyte nowe ustawienie. Bit wymuszonej zgodności porównania można wykorzystać do zmiany wartości końcówki wyjścia bez względu na wartość licznika. Automatyczne działanie zaprogramowane w bitach COM1A1 i COM1A0 zostanie wykonane tak, jakby wystąpiła zgodność porównania, lecz nie będzie generowane przerwanie. Bit FOC1A zawsze daje przy odczycie zero. Bit FOC1A nie jest używany, gdy został ustawiony bit PWM1A.
Gdy bit ten zostanie ustawiony, resetowany jest preskaler timera/licznika (TCNT1 nie jest zmieniane). Po wykonaniu tej operacji bit PSR1 jest zerowany sprzętowo. Zapis zera do tego bitu nie odnosi żadnego skutku. Bit przy odczycie zawsze daje wartość zero.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x2F | MSB | LSB | TCNT1 | ||||||
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Ten 8-bitowy rejestr zawiera wartość timera/licznika 1.
Timer/licznik 1 został zrealizowany jako licznik zliczający w górę z dostępem odczytu i zapisu. Z powodu synchronizacji z mikroprocesorem dane zapisywane do timera/licznika 1 są opóźnione o półtora cyklu zegara mikroprocesora w trybie synchronicznym i o co najwyżej jeden cykl zegara mikroprocesora w trybie asynchronicznym.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x2E | MSB | LSB | OCR1A | ||||||
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Rejestr A Output Compare jest 8-bitowwym rejestrem do zapisu/odczytu.
Rejestr A Output Compare timera/licznika 1 zawiera dane ciągle porównywane z wartością timera/licznika 1. Działania wykonywane przy wystąpieniu zgodności porównania są określone w rejestrze TCCR1. Zgodność porównania wystąpi tylko wtedy, jeśli timer/licznik 1 zliczy do wartości OCR1A. Programowy wpis, który ustawia TCNT1 i OCR1A na tę samą wartość nie generuje zgodności porównania.
Zgodność porównania ustawi znacznik porównania OCF1A po opóźnieniu synchronizującym występującym po zdarzeniu porównania.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x2B | MSB | LSB | OCR1B | ||||||
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Rejestr B Output Compare jest 8-bitowwym rejestrem do zapisu/odczytu.
Rejestr B Output Compare timera/licznika 1 zawiera dane ciągle porównywane z wartością timera/licznika 1. Działania wykonywane przy wystąpieniu zgodności porównania są określone w rejestrze TCCR1. Zgodność porównania wystąpi tylko wtedy, jeśli timer/licznik 1 zliczy do wartości OCR1B. Programowy wpis, który ustawia TCNT1 i OCR1B na tę samą wartość nie generuje zgodności porównania.
Zgodność porównania ustawi znacznik porównania OCF1A po opóźnieniu synchronizującym występującym po zdarzeniu porównania.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x2D | MSB | LSB | OCR1C | ||||||
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Rejestr C Output Compare jest 8-bitowwym rejestrem do zapisu/odczytu.
Rejestr C Output Compare timera/licznika 1 zawiera dane ciągle porównywane z wartością timera/licznika 1. Działania wykonywane przy wystąpieniu zgodności porównania są określone w rejestrze TCCR1. Zgodność porównania wystąpi tylko wtedy, jeśli timer/licznik 1 zliczy do wartości OCR1C. Programowy wpis, który ustawia TCNT1 i OCR1C na tę samą wartość nie generuje zgodności porównania.
Jeśli bit CTC1 w rejestrze TCCR1 jest ustawiony, to zgodność porównania wyzeruje rejestr TCNT1.
Rejestr ten posiada tę samą funkcję w trybie normalnym i w trybie PWM.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x39 | – | OCIE1A | OCIE1B | OCIE0A | OCIE0B | TOIE1 | TOIE0 | – | TIMSK |
Zapis/Odczyt | O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.
Gdy bit OCIE1A zostanie ustawiony na 1 i ustawiony jest bit I w rejestrze stanu SREG, to uaktywnione zostają przerwania przy zgodności porównania A w timerze liczniku 1. Odpowiadający mu wektor przerwania 0x003 zostanie wykonany, jeśli wystąpi zgodność porównania A. W takim przypadku ustawiony zostaje znacznik porównania dla timera/licznika 1 w rejestrze znaczników przerwań timera/licznika (ang. Timer/Counter Interrupt Flag Register).
Gdy bit OCIE1B zostanie ustawiony na 1 i ustawiony jest bit I w rejestrze stanu SREG, to uaktywnione zostają przerwania przy zgodności porównania B w timerze liczniku 1. Odpowiadający mu wektor przerwania 0x009 zostanie wykonany, jeśli wystąpi zgodność porównania B. W takim przypadku ustawiony zostaje znacznik porównania dla timera/licznika 1 w rejestrze znaczników przerwań timera/licznika (ang. Timer/Counter Interrupt Flag Register).
Gdy bit TOIE1 jest ustawiony i ustawiony jest bit I w rejestrze stanu SREG, uaktywnione zostaje przerwania przy przepełnieniu timera/licznika 1.
Odpowiednie przerwanie (pod wektorem 0x004) jest wykonywane, jeśli wystąpi przepełnienie w timerze/liczniku 1. Znacznik przepełnienia (Timer1) jest ustawiany w rejestrze znaczników przerwań timera/licznika (ang. Timer/Counter Interrupt Flag Register - TIFR).
Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x38 | – | OCF1A | OCF1B | OCF0A | OCF0B | TOV1 | TOV0 | – | TIFR |
Zapis/Odczyt | O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.
Bit OCF1A jest ustawiany, gdy wystąpi zgodność porównania pomiędzy timerem/licznikiem 1 a wartością danych w rejestrze OCR1A (ang. Output Compare Register 1A). Znacznik OCF1A jest zerowany sprzętowo przy wykonaniu odpowiedniego wektora obsługi przerwania. Alternatywnie znacznik OCF1A jest zerowany po cyklu synchronizacji zegara przez wpisanie logicznej jedynki do bitu znacznika. Gdy są ustawione na 1 bity I w rejestrze SREG, OCIE1A i OCF1A, zostaje wykonane przerwanie przy zgodności porównania A w timerze/liczniku 1.
Bit OCF1B jest ustawiany, gdy wystąpi zgodność porównania pomiędzy timerem/licznikiem 1 a wartością danych w rejestrze OCR1B (ang. Output Compare Register 1B). Znacznik OCF1B jest zerowany sprzętowo przy wykonaniu odpowiedniego wektora obsługi przerwania. Alternatywnie znacznik OCF1B jest zerowany po cyklu synchronizacji zegara przez wpisanie logicznej jedynki do bitu znacznika. Gdy są ustawione na 1 bity I w rejestrze SREG, OCIE1B i OCF1B, zostaje wykonane przerwanie przy zgodności porównania B w timerze/liczniku 1.
W trybie normalnym (PWM1A=0 i PWM1B=0) bit TOV1 jest ustawiany na 1, gdy wystąpi przepełnienie w timerze/liczniku 1.
Bit TOV1 jest zerowany sprzętowo przy wykonaniu odpowiedniego wektora obsługi przerwania. Alternatywnie znacznik TOV1 jest zerowany po cyklu synchronizacji zegara przez wpisanie logicznej jedynki do bitu znacznika.
W trybie PWM (albo PWM1A=1, albo PWM1B=1) bit TOV1 zostanie ustawiony przy wystąpieniu zgodności porównania pomiędzy timerem/licznikiem 1 a wartością danych w rejestrze OCR1C (ang. Output Compare Register 1C).
Gdy są ustawione na 1 bity I w rejestrze SREG, TOIE1 (ang. Timer/Counter1 Overflow Interrupt Enable – włączenie przerwań przy przepełnieniu w timerze/liczniku 1) i TOV1B, zostaje wykonane przerwanie przy przepełnieniu w timerze/liczniku 1
Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2024 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.