Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny25/45/85

8-bitowy timer/licznik 1

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Timer/licznik 1 jest 8-bitowym modułem licznikowym o ogólnym przeznaczeniu, który posiada osobną sekcję preskalera.

Preskaler timera/licznika 1

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).


Na początek:  podrozdziału   strony 

Licznik i moduły porównawcze

Poniższy rysunek pokazuje schemat blokowy rejestrów synchronizacyjnych timera/licznika 1 oraz opóźnień synchronizacji pomiędzy rejestrami. Na rysunku nie pokazano opóźnień w bramkowaniu sygnałów zegarowych. Wartości rejestrów timera/licznika 1 przechodzą przez wewnętrzne rejestry synchronizujące, które powodują opóźnienie synchronizacji wejścia przed wpłynięciem na działanie licznika. Rejestry TCCR1, GTCCR, OCR1A, OCR1B i OCR1C można odczytywać zaraz po zapisie. Odczytywane z powrotem wartości są opóźniane dla rejestru danych timera/licznika 1 (TCNT1) i znaczników (OCF1A, OCF1B i TOV1) z uwagi na synchronizację wejścia i wyjścia.

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.

Inicjalizacja timera/licznika 1 dla trybu asynchronicznego

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.

Timer/licznik 1 w trybie PWM

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

Na początek:  podrozdziału   strony 

Opis rejestrów

TCCR1 – Timer/Counter1 Control Register – Rejestr sterujący timera/licznika 1

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  

Bit 7 – CTC1 : Clear Timer/Counter on Compare Match – Zerowanie timera/licznika przy zgodności porównania

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.

Bit 6 – PWM1A: Pulse Width Modulator A Enable – Włączenie modulatora A PWM

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 5:4 – COM1A[1:0]: Comparator A Output Mode, Bits 1 and 0  – Tryb wyjścia komparatora A, nity 1 i 0

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 3:0 – CS1[3:0]: Clock Select Bits 3, 2, 1, and 0 – Bity wyboru zegara

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.


GTCCR – General Timer/Counter1 Control Register – Ogólny rejestr sterujący 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  

Bit 6 – PWM1B: Pulse Width Modulator B Enable – Włączenie modulatora B PWM

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.

Bits 5:4 – COM1B[1:0]: Comparator B Output Mode, Bits 1 and 0 – Tryb wyjścia komparatora B, bity 1 i 0

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.

Bit 3 – FOC1B: Force Output Compare Match 1B – Wymuszona zgodność porównania 1B

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.

Bit 2 – FOC1A: Force Output Compare Match 1A – Wymuszona zgodność porównania 1A

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.

Bit 1 – PSR1 : Prescaler Reset Timer/Counter1 – Reset preskalera timera/licznika 1

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.


TCNT1 – Timer/Counter1 – Timer/licznik 1

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.


OCR1A – Timer/Counter1 Output Compare Register A – Rejestr A Output Compare timera/licznika 1

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.


OCR1B – Timer/Counter1 Output Compare Register B – Rejestr B Output Compare timera/licznika 1

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.


OCR1C – Timer/Counter1 Output Compare Register C – Rejestr B Output Compare timera/licznika 1

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.


TIMSK – Timer/Counter Interrupt Mask Register – Rejestr masek przerwań timera/licznika

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  

Bit 7 – Zarezerwowany bit

Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.

Bit 6 – OCIE1A: Timer/Counter1 Output Compare Interrupt Enable – Włączenie przerwań dla Output Compare A w timerze/liczniku 1

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).

Bit 5 – OCIE1B: Timer/Counter1 Output Compare Interrupt Enable – Włączenie przerwań dla Output Compare B w timerze/liczniku 1

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).

Bit 2 – TOIE1: Timer/Counter1 Overflow Interrupt Enable – Włączenie przerwań przy przepełnieniu timera/licznika 1

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).

Bit 0 – Zarezerwowany bit

Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.


TIFR – Timer/Counter Interrupt Flag Register – Rejestr znaczników przerwań timera/licznika

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  

Bit 7 – Zarezerwowany bit

Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.

Bit 6 – OCF1A: Output Compare Flag 1A – Znacznik 1A Output Compare

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 5 – OCF1B: Output Compare Flag 1B – Znacznik 1B Output Compare

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.

Bit 2 – TOV1: Timer/Counter1 Overflow Flag – Znacznik przepełnienia timera/licznika 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

Bit 0 – Zarezerwowany bit

Ten bit jest zarezerwowany w ATtiny25/45/85 i zawsze daje przy odczycie zero.


Na początek:  podrozdziału   strony 

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: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.