background image

Wbudowane układy timerów

Bartłomiejczyk Jarosław 131605

background image

Układy licznikowe T1,T0

Mikrokontrolery rodziny 51 są zwykle wyposażone  w co najmniej dwa 

układy licznikowe- liczniki T0 i T1. Każdy z tych liczników składa 

się z 8-bitowych połówek. Połówki te widziane są przez CPU jako 

rejestry TH0 (bardziej znacząca część) TL0 (mniej znacząca część) 
w przypadku T0 oraz odpowiednio TH1 i TL1 w przypadku licznika 

T1. Każdy z obu liczników może pracować jako licznik (zliczanie 

impulsów zewnętrznych) lub jako czasomierz (zliczanie cykli 
maszynowych mikrokontrolera). Przy pracy w trybie czasomierza 

inkrementacja licznika następuje w każdym kolejnym cyklu 

maszynowym, a zatem maksymalna częstotliwość zliczania jest 

równa 1/12 częstotliwości zegarowej mikrokontrolera.  Niezależnie 

od rodzaju funkcji (czasomierz/licznik), każdy z układów 

licznikowych może działać w jednym z czterech trybów pracy: 

background image

Tryb 0 (1)

Tryby pracy liczników T0 i T1,źródło sygnałów 

wejściowych oraz sposób  sterowania licznikiem ustala 
się przez wpisanie do rejestru TMOD odpowiedniego 
słowa. Rejestr TMOD znajduje się w obszarze SFR pod 
adresem niepodzielnym przez 8 i dlatego zmianę 
stanu jego znaczników należy dokonywać poprzez 
wpis całego bajtu.

background image

Obydwa liczniki mają takie same układy współpracujące. 

Rys.1. Schemat układów liczników T0 i T1 pracujących w trybie 0 i 1

background image

Przełącznik doprowadzający sygnał do wejściowy do 

liczników albo z wewnętrznego oscylatora poprzez 
dzielnik :12, albo z zewnątrz mikrokontrolera poprzez 
końcówki T0 i T1 portu P3. Przełącznik jest przełączany 
znacznikiem C/T. Gdy C/T=0, to taktowanie liczników 
odbywa się z układu wewnętrznego, a gdy C/T=1, to są 
zliczane impulsy zewnętrzne.

background image

Zespół bramek blokujących pracę liczników. Znacznik TRi

służy do programowego uruchamiania pracy licznika.

TRi= 0 licznik jest zatrzymany

TRi= 1 licznik pracuje
Praca licznika może być rónież uruchamiana sygnałem 

zewnętrznym . Przy ustawieniu znacznika GATE=1 
licznik pracuje gdy wejście INTi jest na wysokim 
poziomie, jest natomiast zatrzymany, gdy wejście to jest 
na poziomie niskim. Gdy znacznik GATE=0 praca 
licznika nie zależy od stanu wejścia INTi.

background image

Przerzutniki przepełnienia  liczników TFi, umieszczone w 

rejestrze TCON. Przepełnienie licznika Ti ( przejście ze 
stanu 1 do 0 na wszystkich bitach licznika) powoduje 
wpisanie stanu 1 do przerzutnika TFi. Jeżeli przerwanie 
od licznika jest aktywne, to nastąpi wywołanie procedury 
obsługi tego przerwania. 

Wejścia bramkujące liczników są wspólne z wejściami 

przerwań zewnętrznych dzięki czemu zewnętrzny sygnał 
zamykający bramkę licznika może uruchomić system 
przerwań. 

background image

Tryby pracy liczników wybiera się poprzez odpowiednie 

ustawienie znaczników M0 i M1:

-Tryb 0

M1=0, M0=0

Tryb 0 został wprowadzony dla zachowania 
kompatybilności z rodziną  mikrokontrolerów MCS-48, 
pierwowzorem rodziny ‘51. W trybie tym rejestr TL 
pracuje w układzie dzielnika wstępnego o podziale przez 
2

5  

lub 5-bitowego licznika, a rejestr TH jako licznik lub 

dzielnik 8-bitowy. Oba rejestry są połączone kaskadowo 
(rys.1).

background image

-

Tryb 1 

M1=0, M0=1

Jest taki sam jak tryb 0 z tą różnicą że rejestr TL pracuje 
jako licznik lub dzielnik 8-bitowy. Obydwa rejestry są 
połączone kaskadowo tworząc 16-bitowy dzielnik lub 
licznik (rys.1).

-

Tryb 2

M1=1, M0=0

W trybie 2 rejestry są połączone w konfiguracji dzielnika 
8-bitowego z autoładowaniem, tzn. z zadawaniem stanu 
początkowego po przepełnieniu rejestru(rys.2) .

background image

Rys.2. Układ połączeń liczników T0 i T1 pracujących w trybie 2

background image

Rejestr TL pracuje jako dzielnik właściwy, natomiast rejestr 

TH służy jako bufor, którego zawartość przepisywana jest 
do rejestru TL gdy nastąpi jego przepełnienie. Operacja ta 
umożliwia otrzymanie dzielnika o zmiennym podziale, 
przy czym należy pamiętać, że liczniki liczą w przód i 
dlatego do bufora trzeba wpisywać uzupełnienie do 0FFh 
liczby podziałowej. Licznik T1 pracujący w trybie 2 jest 
często stosowany do taktowania portu szeregowego 
mikrokontrolera.

background image

-

Tryb 3 

M1=1, M0=1

Tryb 3 występuje tylko dla licznika T0. W trybie tym rejestry 

TL0 i TH0 pracują jako dwa niezależnie 8-bitowe 
liczniki/dzielniki (rys.3.). Rejestr TL0 pracuje w strukturze 
licznika T0 (znaczniki TR0,GATE, C/T oraz przerzutnik TF0). 

Może więc być sterowany i testowany jak licznik T0 w trybie 0 

i 1. Natomiast rejestr TH0 jest połączony na stałe z wyjściem 

zegara wewnętrznego poprzez dzielnik :12 i jest bramkowany 
znacznikiem TR1.
Wyjście tego rejestru jest połączone z przerzutnikiem TF1. 

Dlatego gdy licznik T0 pracuje w trybie 3, to licznik T1 może 

pracować w pozostałych trybach ale bez możliwości  

bramkowania jego wejścia i testowania przepełnienia. W tej 

sytuacji licznik T1 nadaje się tylko do taktowania portu 
szeregowego. Wprowadzenie trybu 3 dla licznika T1 powoduje 
jego zatrzymanie.

background image

Rys.3. Układ połączeń licznika T0 pracującego w trybie 3

background image

Przy zliczaniu impulsów wewnętrznych (C/T=0) rejestr jest 

inkrementowany co jeden cykl maszynowy. Odpowiada to 
1/12 częstotliwości oscylatora. Natomiast przy zliczaniu 
impulsów zewnętrznych (C/T=1) stan odpowiedniego 
wejścia licznika jest taktowany podczas każdego cyklu 
maszynowego (rys.4).

background image

Rys.4. Testowanie poziomów sygnałów wejściowych liczników

background image

Jeżeli test wykaże stan wysoki wejścia w jednym cyklu 

maszynowym oraz stan niski w następnym cyklu 
maszynowym, to w kolejnym cyklu maszynowym nastąpi 
inkrementacja licznika. Dlatego maksymalna 
częstotliwość impulsów  zewnętrznych zliczanych przez 
liczniki T0 i T1 musi być mniejsza od 1/24 częstotliwości 
oscylatora. Natomiast częstotliwość minimalna nie jest 
niczym ograniczona.

background image

Timer T2

W mikrokontrolerze 80C52 występuje dodatkowy licznik 
nazywany T2. Podobnie jak licznik T0 i T1 jest on 16−bitowy. 
Posiada jednak kilka dodatkowych funkcji, które rozszerzają 
jego możliwości. 
Podobnie jak w licznikach opisanych wcześniej licznik T2 
składa się z dwóch bajtów TH2 (starszy) i TL2 (młodszy). 
Podobnie jak T0 i T1 licznik T2 może pełnić rolę czasomierza, 
czyli zliczać impulsy wewnętrzne pochodzące z zegara 
procesora, może także zliczać impulsy zewnętrzne dzięki 
alternatywnej funkcji jednego z pinów portu P1 a mianowicie 
P1.0 – nóżka 1 procesora 8052.

background image

Z licznikiem T2 w kostce 80C52 związany jest dodatkowy także 
alternatywnie wykorzystywany pin portu P1 (zwany T2EX) a 
mianowicie P1.1 – nóżka 2. Otóż jeżeli zachodzi potrzeba, 
programista może wykorzystać tę końcówkę do zewnętrznego 
bramkowania licznika T2, co bardzo często przydaje się 
podobnie jak przy bramkowaniu liczników T0 i T1 sygnałami 
INT0 i INT1.
I tak w przypadku gdy T2 pracuje jako licznik liczący zewnętrzne 
impulsy, opadające zbocze na końcówce T2EX spowoduje 
automatyczne natychmiastowe załadowanie licznika T2 – TH2 i 
TL2 wartością zdefiniowaną w rejestrach RLDH.RLDL.

background image
background image

Jeżeli zaś licznik T2 pracuje w roli czasomierza, to wejście T2EX można 
wykorzystać do automatycznego przepisania aktualnej wartości 
rejestrów TH2.TL2 do rejestrów RLDH.RLDL. Można powiedzieć że 
działanie w tym trybie (czasomierza) jest jakby odwrotne do sposobu w 
trybie licznika. Wartość zostaje przepisana do rejestrów RLDH.RLDL a 
nie odwrotnie jak to miało miejsce w przypadku pracy T2 w trybie 
licznika impulsów zewnętrznych. W praktyce takie działanie umożliwia 
np.  bardzo dokładny pomiar przebiegów wolnozmiennych bez 
konieczności stosowania dodatkowych układów scalonych.

background image
background image

Licznik T2, podobnie jak licznik T1, T2 może w zależności 
od potrzeb, taktować port transmisji szeregowej. 
W takim przypadku możliwe jest rozszerzenie zakresów 
prędkości transmisji o dodatkowe wartości niedostępne 
przy tradycyjnym taktowaniu portu poprzez licznik T1.