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 uproszczony schemat blokowy modułu Timera 0.
Uwagi: | 1. | Bity T0CS, T0SE, PSA, PS2, PS1 i PS0 znajdują się w rejestrze OPTION. |
2. | Preskaler jest używany również przez licznik zegarowy. |
Tryb timera jest wybierany przez wyzerowanie bitu T0CS (OPTION[5]). W trybie timera moduł Timera 0 zwiększa zawartość rejestru TMR0 z każdym cyklem rozkazowym (bez preskalera). Jeśli zostaje zapisany rejestr TMR0, zwiększanie jest zatrzymane na następne dwa cykle rozkazowe (zobacz na rysunki poniżej). Użytkownik może to obejść wpisując odpowiednio poprawioną wartość do rejestru TMR0.
Wewnętrzny zegar timera bez
preskalera
Wewnętrzny zegar timera z
preskalerem 1:2
Tryb licznika jest wybierany przez ustawienie bitu T0CS (OPTION[5]). W tym trybie Timer 0 będzie zwiększał o 1 swoją zawartość przy każdym narastającym lub opadającym zboczu sygnału na końcówce T0CKI. Bit T0SE (OPTION[4]) określa zbocze źródła. Wyzerowanie bitu T0SE wybiera zbocze narastające. Ograniczenia nałożone na zegar zewnętrzny są szczegółowo przedyskutowane w następnym podrozdziale.
Preskaler może być używany albo przez moduł Timera 0, albo przez timer licznika zegarowego, lecz nie przez oba naraz. Przydział preskalera jest kontrolowany programowo przez bit sterujący PSA (OPTION[3]). Wyzerowanie bitu PSA przypisze preskaler do Timera 0. Preskalera nie można odczytywać, ani zapisywać. Gdy preskaler jest przypisany do modułu Timera 0, to są dostępne następujące współczynniki podziału: 1:2, 1:4, 1:256. Podrozdział "Preskaler" opisuje szczegółowo działanie preskalera.
Poniższa tabelka podsumowuje rejestry związane z modułem Timera 0.
Adres | Nazwa | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Wartość
przy resecie przy włączeniu |
Wartość
przy pozostałych resetach |
01h | TMR0 | 8-bitowy zegar/licznik czasu rzeczywistego | xxxx xxxx |
uuuu uuuu |
|||||||
N/A | OPTION | GPWU | GPPU | T0CS | T0SE | PSA | PS2 | PS1 | PS0 | 1111 1111 |
1111 1111 |
N/A | TRISGPIO(1) | — | — | — | — | Rejestr sterujący we/wy | ---- 1111 |
---- 1111 |
Gdy preskaler nie jest używany, to wejście zegara zewnętrznego jest takie samo jak wyjście preskalera. Synchronizacja sygnału T0CKI z wewnętrznymi zegarami fazowymi jest dokonywana przez próbkowanie wyjścia preskalera w taktach Q2 i Q4 wewnętrznych zegarów fazowych (zobacz na rysunek poniżej). Dlatego konieczne jest, aby sygnał na końcówce T0CKI był w stanie wysokim i w stanie niskim przez co najmniej dwa takty TOSC (plus małe opóźnienie RC o wartości 2 Tt0H).
Jeśli preskaler jest używany, sygnał wejściowy zegara zewnętrznego jest dzielony w szeregowym liczniku asynchronicznym preskalera, aby sygnał wyjściowy preskalera był symetryczny. Aby zegar zewnętrzny spełniał wymagania próbkowania, należy rozważyć licznik szeregowy. Konieczne jest, aby sygnał na końcówce T0CKI miał okres przynajmniej 4 TOSC (plus małe opóźnienie RC o wartości 2Tt0H) podzielone przez wartość preskalera. Jedynym wymaganiem na okresy wysokie i niskie w sygnale T0CKI jest, aby nie naruszały wymagań co do minimalnej szerokości impulsu Tt0H. Zobacz do parametrów elektrycznych pożądanego układu.
Ponieważ wyjście preskalera jest zsynchronizowane z wewnętrznymi zegarami, to występuje pewne małe opóźnienie pomiędzy momentem pojawienia się zbocza w sygnale zegara zewnętrznego a momentem, w którym moduł Timera 0 faktycznie zwiększa wartość zliczaną. Rysunek poniżej pokazuje to opóźnienie od zbocza zegara zewnętrznego do momentu inkrementacji Timera 0.
Uwagi: | 1. | Opóźnienie od zmiany na wejściu zegarowym do zwiększenia Timera 0 ma wartość od 3 TOSC do 7 TOSC (czas trwania taktu Q = TOSC). Stąd błąd w pomiarze interwału pomiędzy dwoma zboczami na wejściu Timera 0 wynosi maksymalnie ±4 TOSC. |
2. | Zegar zewnętrzny, jeśli nie wybrano preskalera; w przeciwnym razie wyjście preskalera. | |
3. | Strzałki oznaczają momenty próbkowania. |
Uwaga: | Preskaler może być używany albo przez moduł Timera 0, albo przez WDT, lecz nie przez oba naraz. Stąd przypisanie preskalera do modułu Timera 0 oznacza, iż nie ma preskalera dla WDT i na odwrót. |
Bity PSA i PS[2:0] (OPTION[3:0]) określają przypisanie preskalera oraz współczynnik jego podziału.
Gdy preskaler został przydzielony do modułu Timera 0, wszystkie instrukcje zapisujące do rejestru TMR0 (np. CLRF 1, MOVWF 1, BSF 1,x, itp.) wyzerowują preskaler. Gdy preskaler zostanie przypisany do WDT, to instrukcja CLRWDT zeruje preskaler wraz z WDT. Preskalera nie można bezpośrednio odczytywać ani zapisywać. Przy resecie preskaler zawiera same zera.
Przypisanie preskalera jest w pełni pod kontrolą oprogramowania (tj. może być zmieniane "w locie" podczas wykonywania programu). Aby uniknąć niezamierzonego resetu mikrokontrolera, należy wykonać następujący ciąg instrukcji, gdy zmienia się przypisanie preskalera z Timera 0 na WDT:
CLRWDT ;Wyzeruj WDT CLRF TMR0 ;Wyzeruj TMR0 i preskaler MOVLW ‘00xx1111’b ;Te trzy wiersze (5, 6, 7) OPTION ;są wymagane tylko w razie potrzeby CLRWDT ;PS[2:0] jest równe 000 lub 001 MOVLW ‘00xx1xxx’b ;Ustaw preskaler na OPTION ;pożądany okres WDT |
CLRWDT ;Wyzeruj WDT i preskaler MOVLW ‘xxxx0xxx’ ;Wybierz TMR0, nową wartość preskalera ;oraz źródło zegarowe OPTION |
Schemat blokowy preskalera Timera 0
i WDT
Uwagi: | 1. | T0CS, T0SE, PSA i PS[2:0] to bity w rejestrze OPTION. |
2. | T0CKI dzieli wspólną końcówkę z GP2 w mikrokontrolerach PIC10F200/202/204/206. |
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.