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.](images/licznik2_tryb0.gif)
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.](images/licznik2_tryb1.gif)
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.](images/licznik2_tryb2.gif)
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.](images/wzor04.gif)
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.](images/wzor05.gif)
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.](images/wzor06.gif)
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.