![]() |
Microcontrolere PIC on-line GRATIS! |
![]() |
|||||
|
|||||||
|
2.7 Timer-ul liber TMR0 Timer-ele (temporizatoarele) sunt de obicei cele mai complicate părţi ale unui microcontroler, aşa că este necesar să rezervăm mai mult timp pentru a le explica. Odată cu aplicarea lor este posibil să se creeze relaţii īntre o dimensiune reală ca "timp" şi o variabilă ce reprezintă starea timer-ului īntr-un microcontroler. Fizic, timer-ul este un registru a cărui valoare creşte continuu pānă la 255, şi apoi porneşte de la capăt: 0, 1, 2, 3, 4...255....0,1, 2, 3......etc.
Această
incrementare se face īn fundalul a tot ceea ce face un microcontroler.
Depinde de programator "să găsească o cale" de cum să profite de această
caracteristică pentru nevoile lui. Una din căi este să crească o variabilă
la fiecare depăşire a timer-ului. Dacă ştim cāt timp are nevoie timer-ul
să facă o rundă completă, atunci īnmulţind valoarea variabilei cu acel
timp obţinem timpul total scurs.
După fiecare numărătoare pānă la 255, timer-ul īşi resetează valoarea la zero şi īncepe cu un nou ciclu de contorizare pānă la 255. Īn timpul fiecărei tranziţii de la 255 la zero, bitul TOIF īn registrul INTCON este setat. Dacă se permit īntreruperi, de aceasta se poate profita īn generarea şi īn procesarea rutinei de īntrerupere. Depinde de programator să reseteze bitul TOIF īn rutina de īntrerupere, aşa ca noua īntrerupere, sau noua depăşire să fie detectate. Īn afară de ceasul oscilator intern, starea timer-ului poate de asemenea să crească prin ceasul extern la pinul RA4/TOCKI. Alegerea uneia din aceste două opţiuni se face īn registrul OPTION prin bitul TOCS. Dacă a fost aleasă această opţiune de ceas extern, va fi posibil să se definească frontul unui semnal (crescător sau descrescător), la care timer-ul să-şi crească valoarea.
Īn
practică, unul din exemplele tipice ce este rezolvat prin ceas extern şi
unde timer-ul contorizează rotaţiile complete ale unui ax al unei maşini
de producţie, ca bobinatorul de transformator de exemplu. Să rotim patru
şuruburi de metal pe axul unui bobinator. Aceste patru şuruburi vor
reprezenta convexitatea metalică. Să plasăm acum un senzor inductiv la o
distanţă de 5 mm de capătul unui şurub. Senzorul inductiv va genera
semnalul descrescător de fiecare dată cānd capul şurubului este paralel cu
capul senzorului. Fiecare semnal va reprezenta o pătrime dintr-o rotaţie,
şi suma tuturor rotaţiilor se va găsi īn timer-ul TMRO. Programul poate
uşor citi aceste date din timer printr-un bus de date.
Prescalerul poate fi asignat fie de timer-ul TMRO fie de watchdog.
Watchdogul este un mecanism pe care microcontrolerul īl foloseşte să se
apere īmpotriva blocării programelor. Ca orice alt circuit electric, la
fel şi cu microcontrolerul se pot īntāmpla defectări, sau unele
stricăciuni. Din nefericire microcontrolerul are de asemenea un program
unde se pot īntāmpla probleme. Cānd se īntāmplă aceasta, microcontrolerul
se va opri din funcţionare şi va rămāne īn acea stare pānă ce cineva īl
resetează. Din cauza aceasta, a fost introdus mecanismul watchdog. După o
anumită perioadă de timp, watchdogul resetează microcontrolerul (de fapt
microcontrolerul se resetează singur). Watchdogul lucează pe baza unui
principiu simplu: dacă se īntāmplă depăşirea timer-ului, microcontrolerul
este resetat, şi īncepe executarea programului mereu din nou. Astfel, se
va īntāmpla un reset atāt īn cazul unei funcţionări corecte cāt şi
incorecte. Următorul pas este prevenirea resetului īn cazul unei
funcţionări corecte, ce se face prin scrierea unui zero īn registrul WDT
(instrucţiunea CLRWDT) de fiecare dată cānd se apropie de depăşire. Astfel
programul va preveni un reset cāt timp este executat corect. De īndată ce
s-a blocat, nu se va scrie zero, va avea loc depăşirea timer-ului WDT şi
un reset ce va duce microcontrolerul īnapoi la funcţionarea corectă din
nou.
Registrul control OPTION
Bit 0:2
PS0, PS1, PS2 (Prescaler Rate Select bit-bit Selectare Rată
Prescaler)
bit 3
PSA (Prescaler Assignment bit-bit Asignare Prescaler)
|
|
© Copyright 2003. mikroElektronika. All Rights Reserved. For any comments contact webmaster.
|