Sunteți pe pagina 1din 11

PORTURI SPECIALIZATE Timer/Counter Ceasuri programabile no iuni generale

Func ionarea sistemelor cu microprocesor n aplica ii de proces necesit , n majoritatea cazurilor, realizarea unor temporiz ri precise ntre diversele ac iuni efectuate n sistem sau m surarea cu precizie a unor intervale de timp. n acest scop, se utilizeaz a a-numitele ceasuri de timp real (Real Time Clock RTC), circuite ce pemit ob inerea unor temporiz ri programate sau m sur ri de intervale, cu precizie ridicat . Aceste circuite au func ia de generare de semnale de l ime programat , m surare de intervale de timp sau de num rare de evenimente. n primele dou cazuri func ia se nume te TIMER, n cel de-al treilea caz, func ia se nume te COUNTER, de unde i denumirea circuitului de Timer/Counter. n cadrul func iei de Timer, circuitul folose te ca intrare un semnal de frecven fix ca Tact sau Ceas de referin , pentru m surare sau generare. n cadrul func iei Counter, circuitul folose te ca intrare un semnal extern pentru care se dore te m surarea num rului de tranzi ii. n acest capitol vor fi prezentate dou circuite Timer/Counter, o variant pentru un sistem cu microprocesor, ca circuit extern, i o variant de circuit inclus ntr-un microcontroler.
4.2. Circuitul de interfa 80C552 Timer/Counter al microcontrolerului

Preliminarii Microcontrolerul 80C552 con ine patru circuite Timer/Counter pe 16 bit denumite Timer 0 - T0 , Timer 1 - T1, Timer 2 - T2 Timer 3 Watchdog T3. Ele sunt grupate, dup func iile pe care le pot ndeplini astfel: T0 i T1 sunt timere cu posibilit i asem n toare i ndeplinesc func iile unui timer de uz general. T2 este un timer cu posibilit i foarte dezvoltate, este capabil de a m sura i genera semnale cu o precizie foarte mare. Timerul T3 poate fi folosit doar pentru a urm ri func ionarea corect a programului microcontrolerului. Timerele T0 i T1 Sunt circuite pe 16 bit ce pot fi programate s ndeplineasc urm toarele func ii: - m surare de intervale de timp sau de l ime de impuls - num rare de evenimente - generare de cerere de ntrerupere c tre unitatea central (CPU)

Acestor circuite le corespund urm torii regi tri ai microcontrolerului (SFR): TH0, TL0 TH1, TL1 TMOD TCON. Programarea lor i schimbul de date se face prin aceste SFR. Ambele circuite sunt formate din 2 regi tri de 8 bi i (THx, TLx cu x=0 sau x=1) care se incrementeaz la o tranzi ie 1- 0 a semnalului de la intrare. Cnd sunt configurate Timer (Temporizator), T0 i T1 sunt incrementate de semnalul de ceas sistem (quartz-ul sistemului divizat cu 12) la fiecare ciclu ma in (la o perioad de (1/frecven a sistem)/12, deci a 12 parte din perioada ceasului sistem, pentru un ceas de 12MHz, ciclul ma in este de 1 Qsec). Cnd sunt configurate Counter (Num r tor), T0 i T1 sunt incrementate la fiecare tranzi ie 1- 0 a semnalului de pe pinul corespunz tor celor dou timere. T0 i T1 pot opra n 4 moduri de lucru . Modurile 0, 1 i 2 sunt comune celor dou timere, pe cnd modul 3 este diferit. a) modurile de lucru 0 i 1 ale T0 i T1. n acest mod ele func ioneaz ca un num r tor (Counter) pe 8 bit cu un divizor de 1 la 32. (vezi fig.4.1.)

Fig.4.1. Structura T0 i T1 n modul de lucru 0 Indicele x poate fi 0 sau 1, deoarece ambele circuite au aceea i func ionare. Incrementarea poate fi generat de ceas sistem (C/~T=0, timer) sau de semnal extern (C/~T=1, counter). Validarea increment rii este dat de

bitul GATE (TMOD.7 sau TMOD.3) =0 sau semnalul extern ~INTx=1 i simultan bitul TRx (TCON.6)=1. La atingerea valorii de 1 pentru to i cei 13 bi i, impulsul urm tor va determina trecerea tuturor bi ilor pe 0 cu setarea (punerea pe 1) bitului TF1 (fanion de dep ire, sau Overflow care poate fi considerat i ca fanion de intrerupere). Pozi ionarea pe 1 poate nsemna i cerere de ntrerupere care va fi luat n considerare doar dac a fost validat prin programarea ntreruperilor. Modul de lucru 1 pentru ambele circuite este identic cu modul 0, cu diferen a c registrul de date este pe 16 bit, nu pe 13 bit. b) Modul de lucru 2 configureaz regi trii T0 renc rcare automat (vezi fig.4.2.) i T1 pe 8 bit (TLx) cu

Fig.4.2. Structura T0 i T1 n modul de lucru 2 O dep ire la TLx (Overflow) seteaz bitul TFx i comand renscrierea n TLx a aceluia i octet, p strat n THx. Renc rcarea las THx nemodificat. c)Modul de lucru 3 Acest mod de lucru este diferit pentru cele 2 timere. T1 men ine n acest mod con inutul s u nemodificat (acela i efect ca i cum validarea de la TR1=0). T0 este configurat ca dou num r toare separate de 8 bit ca n fig.4.3. TL0 folose te bi ii C/~T, GATE, TR0, ~INT0 i TF0. TH0 func ioneaz ca timer i utilizeaz bi ii TR1 i TF1 de la T1.

Fig.4.3. Structura T0 n modul de lucru 3


Regi tri cu func ii speciale (SFR) pentru T0 i T1.

SFR pentru T0 i T1 sunt TMOD i TCON. Ei au urm toarea configura ie:


TMOD

pentru timer T1 GATE C/T M1 MSB

M0

pentru timer T0 GATE C/T M1

M0 LSB

primii patru bi i se refera la T0 iar urm torii patru se refer la T1. GATE - daca GATE=1 si bitul de control TRx = 1, Tx este validat doar daca pinul /INTx=1 ( control hard ); daca GATE =0 numaratorul este validat doar daca TRx=1 ( control soft) C/~T\ - 0 - Tx functioneaz ca timer, 1- Tx func ioneaz ca numarator; M1 M0 - modul de operare; 0 0 - Modul 0 0 1 - Modul 1 1 0 - Modul 2 1 1 Modul 3

TCON TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TF1 - setat hard la depasire T1 ; resetat hard la saltul in rutina de tratare intrerupere TR1 - setat/resetat prin program pentru a porni/opri pe T1 TF0 - setat hard la depasire T0 ; resetat hard la saltul in rutina de tratare intrerupere TR0 - setat/resetat prin program pentru a porni/opri pe T0 IE1 - setat hard la detectie intrerupere externa 1; resetat hard cind intreruperea este tratata IT1 - setat/resetat prin program pentru a stabili semnalul activ la INT1: front negativ/nivel 0 IE0 - setat hard la detectie intrerupere externa 0 ; resetat hard cind intreruperea este tratata IT0 - setat/resetat prin program pentru a stabili semnalul activ la INT0: front negativ/nivel 0
Timer T2

Timer-ul T2 este un num r tor pe 16 bit (TMH2 i TML2) care poate num ra impulsuri de ceas (cnd este configurat ca Timer) sau semnale externe de la pinul T2 (cnd este configurat ca num r tor), printr-un circuit divizor programabil cu 1, 2, 4 sau 8. Timer-ul T2 poate fi doar citit, nu poate fi nscris, iar resetarea se poate face de la semnalul RESET extern sau de la semnalul RT2 extern (dac acesta este validat prin bitul TM2ER din TM2CON). Oprirea se face din registrul TM2CON bi ii T2MS1 T2MS0. La dep ire (Overflow) pe 8 sau 16 bit, se poate genera, dac este validat , o cerere de ntrerupere. Adresa rutinei de tratare a ntreruperii este aceea i, selec ia tipului de ntrerupere (pe 8 sau 16 bit) se face din TM2CON, cu bi ii T2IS0 respectiv T2IS1. La ntrerupere, se mai seteaz dou fanioane, ce trebuie resetate prin software, T2B0 i T2OV din TM2CON respectiv T2IR. Setarea ntreruperii se face din registrul de ntreruperi IEN1 bit 7. Registrul de control a Timerului T2, TM2CON:

TM2CON T2IS1 T2IS0

T2ER

T2BO

T2P1

T2P0

T2MS1

T2MS0

T2IS1 - valideaza generare ntrerupere la dep ire capacitate T2 ( pe 16 biti ) T2IS0 - valideaza generare ntrerupere la dep ire capacitate T2 ( pe 8 biti - octetul inferior ) T2ER - validare reset extern pentru T2; T2B0 - fanion intrerupere dep ire capacitate T2, pe octet; T2P1 T2P0 - stabilesc con inutul registrului de divizare; 0 0 - factor de divizare 1 1 0 - factor de divizare 4 0 1 - factor de divizare 2 1 1 - factor de divizare 8 T2MS1 T2MS0 - selectare mod de lucru pentru T2; 0 0 - T2 este oprit; 1 0 mod test ( nu se folose te) 0 1 - se foloseste tact intern 1 1 semnalul de tact este extern la pinul T2. Structura timerului T2 este prezentat n fig.4.4.

Fig.4.4. Structura timerului T2

Logica de capturare la Timerul T2

Timerul T2 este conectat la 4 regi tri de capturare, CT0, CT1, CT2, CT3. Ace ti regi tri sunt nc rca i cu con inutul timerului T2 (TMH2 i TML2) atunci cnd microcontrolerul prime te semnalele externe CT0I, CT1I, CT2I, respectiv CT3I pe front pozitiv sau negativ. n momentul capturii, se seteaz fanioane (flag) din TM2IR i se poate genera de asemenea i ntrerupere. Registrul care configureaz T2 pentru procesul de capturare este CTCON:
CTCON CTN3

CTP3

CTN2

CTP2

CTN1

CTP1

CTN0

CTP0

CTN3 - capturare pe frontul negativ (pentru CT3I) CTP3 - capturare pe frontul pozitiv (pentru CT3I) CTN2 - capturare pe frontul negativ (pentru CT2I) CTP2 - capturare pe frontul pozitiv (pentru CT2I) CTN1 - capturare pe frontul negativ (pentru CT1I) CTP1 - capturare pe frontul pozitiv (pentru CT1I) CTN0 - capturare pe frontul negativ (pentru CT0I) CTP0 - capturare pe frontul pozitiv (pentru CT0I) Registrul fanioanelor de ntrerupere este TM2IR:
TM2IR T20V

CMI2

CMI1

CMI0

CTI3

CTI2

CTI1

CTI0

T20V - fanion de ntrerupere la dep ire pe 16 biti CMI2 - fanion de ntrerupere corespunz tor lui CM2 CMI1 - fanion de ntrerupere corespunz tor lui CM1 CMI0 - fanion de intrerupere corespunz tor lui CM0 CTI3 - fanion de ntrerupere corespunz tor lui CT3 CTI2 - fanion de ntrerupere corespunz tor lui CT2 CTI1 - fanion de ntrerupere corespunz tor lui CT1 CTI0 - fanion de ntrerupere corespunz tor lui CT0 Structura T2 n regim de captur este prezentat n fig.4.5

Fig.4.5. T2 n regim de captur


Exemplu de utilizare a facilit ii de capturare a T2 Dac se dore te m surarea l imii unui impuls Tx, acesta este adus la una dintre intr rile de captur (de ex. CT0I). Registrul este setat s captureze att pe frontul pozitiv, ct i pe cel negativ. Se seteaz i ntrerupere. Cnd apare primul front al semnalului, registrul de captur CT0 se ncarc cu valoarea curent a timerului T2 i se genereaz un semnal de ntrerupere. n rutina de tratare a ntreruperii, valoarea din CT0 se salveaz ntr-o variabil N1. La apari ia celui de-al doilea front, din nou con inutul lui T2 este capturat n CT0, iar n rutina de tratare a ntreruperii se salveaz i aceast valoare n N2. Prin diferen a cu valoarea anterioar se determin durata impulsului. Trebuie s se in seama i de eventuala dep ire pe 16 bit a T2, contorizat de variabila k. n acest caz durata impulsului este :

Tx=N2+k*65535-N1.

Logica de comparare la Timerul T2

La fiecare incrementare a T2, con inutul a trei regi tri CM0, CM1 i CM2 este comparat cu noua valoare a T2. Cnd se sesizeaz o coinciden (match), se seteaz fanionul corespunz tor din TM2IR, se modific bi ii portului 4 de ie ire conform set rii regi trilor STE i RTE, i se poate de aemenea genera ntrerupere dac este setat aceast op iune.
STE TG47

TG46

SP45

SP44

SP43

SP42

SP41

SP40

TG47- fanion, daca este 1, P4.7 este setat la urmatoarea comutare; daca este 0, P4.7 este resetat la urmatoarea comutare TG46- fanion, daca este 1, P4.6 este setat la urmatoarea comutare; daca este 0, P4.6 este resetat la urmatoarea comutare SP45 - dac este setat "1", P4.5 este setat dac CM0 si T2 coincid SP44 - dac este setat "1", P4.4 este setat dac CM0 si T2 coincid SP43 - dac este setat "1", P4.3 este setat dac CM0 si T2 coincid SP42 - dac este setat "1", P4.2 este setat dac CM0 si T2 coincid SP41 - dac este setat "1", P4.1 este setat dac CM0 si T2 coincid SP40 - dac este setat "1", P4.0 este setat dac CM0 si T2 coincid Daca STE.i sunt 0, atunci P4.i nu este afectat de coincidenta CM0 si T2 ( i = 0, 1, 2, 3, 4, 5 )
RTE

TP47

TP46

RP45

RP44

RP43

RP42

RP41

RP40

TP47 - dac este setat "1", P4.7 basculeaz (toggle) dac CM2 si T2 coincid TP46 - dac este setat "1", P4.6 basculeaz (toggle) dac CM2 si T2 coincid RP45 - dac este setat "1", P4.5 este resetat dac CM1 si T2 coincid RP44 - dac este setat "1", P4.4 este resetat dac CM1 si T2 coincid RP43 - dac este setat "1", P4.3 este resetat dac CM1 si T2 coincid RP42 - dac este setat "1", P4.2 este resetat dac CM1 si T2 coincid RP41 - dac este setat "1", P4.1 este resetat dac CM1 si T2 coincid RP40 - dac este setat "1", P4.0 este resetat dac CM1 si T2 coincid Daca RTE.i este 0, atunci P4.i nu este afectat de coinciden a CM1 si T2 sau CM2 si T2 Structura T2 n regim de comp arare este prezentat n fig.4.6.

Fig.4.6. Structura T2 n regim de comparare


Setarea ntreruperilor pentru timerul T2

Regi tri care permit selectarea ntreruperilor sunt IEN0 i IEN1. Bitul EA valideaz posibilitatea de a selecta o ntrerupere. Dac este pe 0, toate ntreruperile sunt invalidate. Dac bitul EN este pe 1, fiecare ntrerupere poate fi selectat individual.
IEN0

EA

EAD

ES1

ES0

ET1

EX1

ET0

EX0

EA - setat valideaza generarea de intreruperi, iar resetat invalideaza toate intreruperile EAD - setat valideaz ntreruperea de la ADC ES1 - setat valideaz ntreruperea de la interfata I2C ES0 - setat valideaz ntreruperea de la interfata UART ET1 - setat valideaz ntreruperea de la Timer T1 EX1 - setat valideaz ntreruperea externa 1 ET0 - setat valideaz ntreruperea de la Timer 0 EX0 - setat valideaz ntreruperea externa 0

IEN1 ET2

ECM2

ECM1

ECM0

ECT3

EXT2

ECT1

ECT0

ET2 - valideaza ntreruperea data de depasirea capacitatii lui T2 ECM2 - valideaz ntreruperea de la comparatorul 2 al T2 ECM1 - valideaz ntreruperea de la comparatorul 1 al T2 ECM0 - valideaz ntreruperea de la comparatorul 0 al T2 ECT3 - valideaz ntreruperea de capturare 3 de la T2 ECT2 - valideaz ntreruperea de capturare 2 de la T2 ECT1 - valideaz ntreruperea de capturare 1 de la T2 ECT0 - valideaz ntreruperea de capturare 0 de la T2 Fiecare ntrerupere are o adres tabelului. fix a rutinei de tratare a ei, conform

S-ar putea să vă placă și