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

Rodzina podstawowa PIC

PIC10F200/202/204/206

Moduł timera 0 w PIC10F200/202

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 0 i rejestr TMR0

Moduł Timera 0 posiada następujące cechy:

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.

Rejestry współpracujące z Timerem 0 w PIC10F200/202
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
Legenda   Zacieniowane bity nie są używane przez Timer 0; – = niezaimplementowany, odczyt daje ‘0’; x = nieznany; u = niezmieniany.
Uwaga: 1. Bit TRIS powiązany z końcówką T0CKI zostaje przechwycony, gdy bit T0CS = 1.

Na początek:  podrozdziału   strony 

Używanie Timera 0 z zegarem zewnętrznym

Gdy Timer 0 jest taktowany zegarem zewnętrznym, to zegar ten musi spełniać pewne wymagania z powodu synchronizacji z wewnętrznym zegarem fazowym (TOSC). Występuje również pewne opóźnienie w zwiększaniu stanu Timera 0 po synchronizacji.

Synchronizacja zegara zewnętrznego

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.

Opóźnienie przy zwiększaniu wartości Timera 0

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.

Na początek:  podrozdziału   strony 

Preskaler

8-bitowy licznik jest dostępny odpowiednio jako preskaler dla modułu Timera 0 lub jako preskaler dla timera licznika zegarowego (ang. Watchdog Timer, WDT)(zobacz do rozdziału  “Timer Licznika Zegarowego”). Dla uproszczenia licznik ten będzie w tej instrukcji nazywany preskalerem.
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.

Przełączanie przypisania preskalera

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:

Zmiana Preskalera (TIMER 0 → 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
Aby zmienić przydział preskalera z timera licznika zegarowego WDT na moduł Timera 0, użyj sekwencji pokazanej poniżej. Należy ją stosować, nawet jeśli WDT jest wyłączony. Instrukcja CLRWDT powinna być wykonana przed przełączeniem preskalera.

Zmiana Preskalera (WDT → TIMER 0)

	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.

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.