MCS-51
Architektura

Licznik T2

W niektórych wersjach1 mikrokontrolery rodziny MCS-51 posiadają dodatkowy licznik T2. Tak jak liczniki T0 i T1 może on pracować w funkcji czasomierza, jak również licznika zdarzeń zewnętrznych w zależności od ustawienia bitu C/T2 znajdującego się w rejestrze T2CON.

Rejestr T2CON
Adres bitu CFh CEh CDh CCh CBh CAh C9h C8h
Numer bitu 7 6 5 4 3 2 1 0
Oznaczenie bitu TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2

Znaczenie pozostałych bitów omówiono poniżej oraz przy omawianiu poszczególnych trybów pracy licznika.

Bit Symbol Funkcja
T2CON.7 TF2 Znacznik przepełnienia licznika T2.
Ustawiany sprzętowo przy przepełnieniu licznika. Zerowanie musi być realizowane programowo. W przypadku aktywnego przerwania od licznika T2 powoduje przejście do wektora przerwania związanego z tym licznikiem.
T2CON.6 EXF2 Znacznik ustawiany sprzętowo i określający wystąpienie przeładowania nową wartością lub zapamiętania rejestrów roboczych TL2 i TH2 licznika T2 (w zależności od stanu bitu CP/RL2) spowodowanego wystąpieniem zbocza opadającego na wejściu T2EX przy ustawionym bicie EXEN2. W przypadku aktywnego przerwania od licznika T2 powoduje przejście do wektora przerwania związanego z tym licznikiem. Znacznik ten musi być zerowany programowo.
T2CON.5 RCLK Bit sterujący taktowaniem odbiornika portu szeregowego (dotyczy tylko trybu 1 i 3 pracy portu szeregowego):
0 - odbiornik portu szeregowego taktowany sygnałem przepełnienia licznika T1,
1 - odbiornik portu szeregowego taktowany przepełnieniem licznika T2.
T2CON.4 TCLK Bit sterujący taktowaniem nadajnika portu szeregowego (dotyczy tylko trybu 1 i 3 pracy portu szeregowego):
0 - nadajnik portu szeregowego taktowany sygnałem przepełnienia licznika T1,
1 - nadajnik portu szeregowego taktowany przepełnieniem licznika T2.
T2CON.3 EXEN2 Ustawienie tego bitu powoduje, że przy każdorazowym wystąpieniu zbocza opadającego na wejściu T2EX następuje przeładowanie rejestrów roboczych TH2 i TL2 licznika nową wartością odpowiednio z rejestrów RCAP2H i RCAP2L lub zapamiętanie wartości z rejestrów roboczych w rejestrach RCAP2H i RCAP2L (w zależności od stanu bitu CP/RL2) pod warunkiem, że licznik T2 nie jest używany do generowania prędkości transmisji portu szeregowego. Zerowy stan tego bitu nakazuje ignorowanie zdarzeń występujących na wejściu T2EX.
T2CON.2 TR2 Bit sterujący pracą licznika T2:
0 - licznik zatrzymany,
1 - licznik pracuje.
T2CON.1 C/T2 Wybór funkcji dla licznika T2:
0 - czasomierz taktowany wewnętrznym sygnałem zegarowym,
1 - licznik zdarzeń zewnętrznych.
T2CON.0 CP/RL2 Określa jeden z dwóch trybów pracy licznika T2:
0 - w przypadku wystąpienia przepełnienia licznika T2 lub zbocza opadającego na wejściu T2EX (jeśli również EXEN2=1) rejestry robocze TL2 i TH2 są przeładowywane odpowiednio zawartością rejestrów RCAP2L i RCAP2H,
1 - zawartość rejestrów TL2 i TH2 jest przepisywana odpowiednio do rejestrów RCAP2L i RCAP2H przy każdorazowym wystąpieniu zbocza opadającego na wejściu T2EX (jeśli również EXEN2=1). Kiedy co najmniej jeden z bitów RCLK lub TCLK jest ustawiony, stan tego bitu jest ignorowany, a licznik T2 jest automatycznie przeładowywany nową wartością pobieraną z rejestrów RCAP2L i RCAP2H przy każdorazowym wystąpieniu jego przepełnienia.

Licznik T2 może pracować w jednym z trzech przedstawionych poniżej trybów pracy. W każdym z nich, w zależności od ustawienia bitu C/T2, układ może pracować jako czasomierz taktowany wewnętrznym sygnałem zegarowym (C/T2=0) lub licznik zdarzeń zewnętrznych zwiększający swoją wartość przy każdorazowym wykryciu zbocza opadającego na wejściu T2 (C/T2=1). W każdym z wymienionych przypadków taktowania licznika T2 pracuje on jako licznik 16-bitowy.

Tryb zapamietania rejestrów licznika

W trybie zapamiętania rejestrów licznika (ang. capture mode) każdorazowe przepełnienie licznika T2 powoduje ustawienie bitu TF2. W przypadku uaktywnienia przerwań od licznika T2 ustawienie bitu TF2 powoduje przekierowanie wykonywania programu pod adres wektora przerwania związanego z tym licznikiem.

Jeśli dodatkowo bit EXEN2=1, to każdorazowe pojawienie się zbocza opadającego na wejściu T2EX powoduje, że bieżąca zawartość rejestrów licznika, tj. rejestrów TL2 i TH2, jest przepisywana odpowiednio do rejestrów RCAP2L i RCAP2H. Dodatkowo wspomniana zmiana stanu na wejściu T2EX powoduje ustawienie bitu EXF2, który podobnie jak bit TF2 może generować przerwanie od licznika T2. Budowę licznika w opisanym trybie przedstawiono na poniższym rysunku.

Budowa licznika T2 w trybie zapamietania rejestrów roboczych.
Uwaga Należy pamiętać, iż o ile bity TF2 oraz EXF2 są ustawiane sprzętowo, to ich zerowanie musi odbywać się programowo. Ma to szczególne znaczenie w przypadku aktywacji przerwania od licznika T2. Brak wyzerowania wspomnianych bitów w programie obsługi przerwania spowoduje ponowne jego wykonanie pomimo braku odpowiednich zdarzeń ustawiających bity TF2 lub EXF2.

Brak sprzętowego zerowania bitów TF2 i EXF2 umożliwia ich odczyt i określenie zdarzenia, które spowodowało przejście do obsługi przerwania. Mianowicie, jeśli TF2=1, to nastapiło przepełnienie licznika T2. Jeśli natomiast EXF2=1, to nastapiło pojawienie się zbocza opadającego na wejściu T2EX, a zatem również przepisanie zawartości rejestrów roboczych licznika do rejestrów RCAP2L i RCAP2H.

Tryb przeładowania rejestrów licznika

W trybie automatycznego przeładowania rejestrów licznika (ang. auto-reload mode) bit EXEN2 również umożliwia wybór jednej z dwóch opcji. Jeśli bit EXEN2=0, to przy przepełnieniu licznika T2 ustawiany jest bit TF2, a jednocześnie następuje przeładowanie rejestrów TL2 i TH2 licznika odpowiednio wartościami z rejestrów RCAP2L i RCAP2H, które wcześniej mogą być zapisane programowo.

Jeśli EXEN2=1, to licznik T2 pracuje w taki sam sposób, ale przepisanie wartości z rejestrów RCAP2L i RCAP2H występuje również w przypadku pojawienia się zbocza opadającego na wejściu T2EX, które jednocześnie powoduje ustawienie bitu EXF2. Budowę licznika w tym trybie przedstawiono na poniższym rysunku.

Budowa licznika T2 w trybie przeładowania rejestrów roboczych.

Identycznie jak we wcześniej omawianym trybie pracy licznika T2, również tutaj bity TF2 oraz EXF2 są znacznikami zgłoszenia przerwania.

Generator prędkości transmisji portu szeregowego

Ustawienie bitów TCLK i/lub RCLK w rejestrze T2CON powoduje, że licznik T2 pracuje jako generator prędkości transmisji (ang. baud rate generator) portu szeregowego (dotyczy tylko trybu 1 i 3 portu szeregowego). Obydwa bity mogą być włączane niezależnie, dlatego możliwe jest ustawienie różnych prędkości transmisji dla nadajnika i odbiornika portu szeregowego (np. nadajnik będzie taktowany sygnałem przepełnienia licznika T2, a odbiornik - sygnałem przepełnienia licznika T1).

Budowa licznika T2 jako generatora prędkości transmisji portu szeregowego.

Praca licznika T2 w trybie generowania prędkości transmisji portu szeregowego jest podobna do pracy tego licznika w trybie przeładowania rejestrów licznika, gdyż tutaj również przepełnienie licznika T2 powoduje przepisanie do rejestrów roboczych TL2 i TH2 wartości zapisanej wcześniej odpowiednio w rejestrach RCAP2L i RCAP2H. Prędkość transmisji BR, podobnie jak w przypadku licznika T1, jest również określana częstotliwością fOVRFL przepełniania się licznika T2 zgodnie z poniższym równaniem.

Prędkość transmisji.

Również w tym trybie licznik może być skonfigurowany jako czasomierz (co ma najczęściej miejsce) lub licznik zdarzeń zewnętrznych. W każdym z dwóch powyższych trybów pracy zawartość rejestrów licznika jest inkrementowana co każdy cykl maszynowy, a zatem co 1/12 częstotliwości oscylatora. Jednak w tym trybie rejestry licznika są inkrementowane co 1/2 częstotliwości oscylatora, zatem prędkość transmisji jest określona następującą zależnością

Prędkość transmisji.

gdzie RCAP2 jest zawartością rejestrów RCAP2H i RCAP2L. Przekształcenie powyższego wzoru względem RCAP2 pozwala na uzyskanie praktyczniejszej zależności

Zawartość rejestrów RCAP2H i RCAP2L określająca pożądaną prędkość transmisji BR.

Starszy bajt uzyskanego wyniku określa wartość jaka powinna być wpisana do rejestru RCAP2H, zaś młodszy - wartość, jaka powinna być zapisana do rejestru RCAP2L, aby uzyskać pożądaną prędkość transmisji BR.

Przepełnienie licznika w tym trybie pracy nie ustawia bitu TF2, a zatem nie powoduje generowania przerwań. Jednak, gdy EXEN2=1, to zmiana stanu z 1 na 0 na wejściu T2EX ustawia bit EXF2, nie powodując jednak przeładowania rejestrów roboczych TH2 i TL2 wartościami z rejestrów RCAP2H i RCAP2L. Zatem, jeśli licznik T2 pracuje jako generator prędkości transmisji portu szeregowego, to wejście T2EX może być używane jako dodatkowe źródło przerwania zewnętrznego.


1 Biorąc pod uwagę historyczne oznaczenie wprowadzone przez firmę Intel, dotyczy to układów oznaczonych numerami 8xx2.