Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AeronauticaComunicatiiElectronica electricitateMerceologieTehnica mecanica


PORTURI SPECIALIZATE - Timer/Counter

Electronica electricitate



+ Font mai mare | - Font mai mic



PORTURI SPECIALIZATE - Timer/Counter

4.1 Ceasuri programabile - notiuni generale

Functionarea sistemelor cu microprocesor in aplicatii de proces necesita, in majoritatea cazurilor, realizarea unor temporizari precise intre diversele actiuni efectuate in sistem sau masurarea cu precizie a unor intervale de timp. In acest scop, se utilizeaza asa-numitele ceasuri de timp real (Real Time Clock - RTC), circuite ce pemit obtinerea unor temporizari programate sau masurari de intervale, cu precizie ridicata.



Aceste circuite au functia de generare de semnale de latime programata, masurare de intervale de timp sau de numarare de evenimente. In primele doua cazuri functia se numeste TIMER, in cel de-al treilea caz, functia se numeste COUNTER, de unde si denumirea circuitului de Timer/Counter.

In cadrul functiei de Timer, circuitul foloseste ca intrare un semnal de frecventa fixa ca Tact sau Ceas de referinta, pentru masurare sau generare. In cadrul functiei Counter, circuitul foloseste ca intrare un semnal extern pentru care se doreste masurarea numarului de tranzitii.

In acest capitol vor fi prezentate doua circuite Timer/Counter o varianta pentru un sistem cu microprocesor, ca circuit extern, si o varianta de circuit inclus intr-un microcontroler.

Circuitul de interfata Timer/Counter al microcontrolerului 80C552

Preliminarii

Microcontrolerul 80C552 contine trei circuite Timer/Counter pe 16 bit denumite Timer 0 - T0 , Timer 1 - T1, Timer 2 - T2 Timer 3 Watchdog - T3. Ele sunt grupate, dupa functiile pe care le pot indeplini astfel: T0 si T1 sunt timere cu posibilitati asemanatoare si indeplinesc functiile unui timer de uz general. T2 este un timer cu posibilitati foarte dezvoltate, este capabil de a masura si genera semnale cu o precizie foarte mare. Timerul T3 poate fi folosit doar pentru a urmari functionarea corecta a programului microcontrolerului.

Timerele T0 si T1

Sunt circuite pe 16 bit ce pot fi programate sa indeplineasca urmatoarele functii:

masurare de intervale de timp sau de latime de impuls

numarare de evenimente

generare de cerere de intrerupere catre unitatea centrala (CPU)

Acestor circuite le corespund urmatorii registri ai microcontrolerului (SFR):

TH0, TL0

TH1, TL1

TMOD

TCON.

Programarea lor si schimbul de date se face prin aceste SFR.

Ambele circuite sunt formate din 2 registri de 8 biti (THx, TLx cu x=0 sau x=1) care se incrementeaza la o tranzitie "1"- "0" a semnalului de la intrare.

Cand sunt configurate "Timer" (Temporizator), T0 si T1 sunt incrementate de semnalul de ceas sistem (quartz-ul sistemului divizat cu 12) la fiecare ciclu masina (la o perioada de (1/frecventa sistem)/12, deci a 12 parte din perioada ceasului sistem, pentru un ceas de 12MHz, ciclul masina este de 1 msec).

Cand sunt configurate "Counter" (Numarator), T0 si T1 sunt incrementate la fiecare tranzitie "1"- "0" a semnalului de pe pinul corespunzator celor doua timere.

T0 si T1 pot opra in 4 moduri de lucru . Modurile 0, 1 si 2 sunt comune celor doua timere, pe cand modul 3 este diferit.

a)     modurile de lucru 0 si 1 ale T0 si T1.

In acest mod ele functioneaza ca un numarator (Counter) pe 8 bit cu un divizor de 1 la    32. (vezi fig.4.1.)


Fig.4.1. Structura T0 si T1 in modul de lucru 0

Indicele x poate fi 0 sau 1, deoarece ambele circuite au aceeasi functionare.

Incrementarea poate fi generata de ceas sistem (C/~T=0, timer) sau de semnal extern (C/~T=1, counter). Validarea incrementarii este data de bitul GATE (TMOD.7 sau TMOD.3) =0 sau semnalul extern ~INTx=1 si simultan bitul TRx (TCON.6)=1.

La atingerea valorii de "1" pentru toti cei 13 biti, impulsul urmator va determina trecerea tuturor bitilor pe "0" cu setarea (punerea pe "1") bitului TF1 (fanion de depasire, sau Overflow care poate fi considerat si ca fanion de intrerupere). Pozitionarea pe "1" poate insemna si cerere de intrerupere care va fi luata in considerare doar daca a fost validata prin programarea intreruperilor.

Modul de lucru 1 pentru ambele circuite este identic cu modul 0, cu diferenta ca registrul de date este pe 16 bit, nu pe 13 bit.


b) Modul de lucru 2 configureaza registrii T0 si T1 pe 8 bit (TLx) cu reincarcare automata (vezi fig.4.2.)

Fig.4.2. Structura T0 si T1 in modul de lucru 2

O depasire la TLx (Overflow) seteaza bitul TFx si comanda reinscrierea in TLx a aceluiasi octet, psstrat in THx. Reincarcarea lasa THx nemodificat.

c)Modul de lucru 3

Acest mod de lucru este diferit pentru cele 2 timere.

T1 mentine in acest mod continutul sau nemodificat (acelasi efect ca si cum validarea de la TR1=0).

T0 este configurat ca doua numaratoare separate de 8 bit ca in fig.4.3. TL0 foloseste bitii C/~T, GATE, TR0, ~INT0 si TF0. TH0 functioneaza ca timer si utilizeaza bitii TR1 si TF1 de la T1.


Fig.4.3. Structura T0 in modul de    lucru 3

Registri cu functii speciale (SFR) pentru T0 si T1.

SFR pentru T0 si T1 sunt TMOD si TCON. Ei au urmatoarea configuratie:

TMOD

pentru timer T1 pentru timer T0

GATE

C/T

M1

M0

GATE

C/T

M1

M0

MSB LSB

primii patru biti se refera la T0 iar urmatorii patru se refera 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 functioneaza ca timer,

"1"- Tx functioneaza 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 numarator pe 16 bit (TMH2 si TML2) care poate numara impulsuri de ceas (cand este configurat ca Timer) sau semnale externe de la pinul T2 (cand este configurat ca numarator), printr-un circuit divizor programabil cu 1, 2, 4 sau 8.

Timer-ul T2 poate fi doar citit, nu poate fi inscris, iar resetarea se poate face de la semnalul RESET extern sau de la semnalul RT2 extern (daca acesta este validat prin bitul TM2ER din TM2CON). Oprirea se face din registrul TM2CON bitii T2MS1 T2MS0.

La depasire (Overflow) pe 8 sau 16 bit, se poate genera, daca este validata, o cerere de intrerupere. Adresa rutinei de tratare a intreruperii este aceeasi, selectia tipului de intrerupere (pe 8 sau 16 bit) se face din TM2CON, cu bitii T2IS0 respectiv T2IS1. La intrerupere, se mai seteaza doua fanioane, ce trebuie resetate prin software, T2B0 si T2OV din TM2CON respectiv T2IR. Setarea intreruperii se face din registrul de intreruperi IEN1 bit 7.

Registrul de control a Timerului T2, TM2CON:

TM2CON

T2IS1

T2IS0

T2ER

T2BO

T2P1

T2P0

T2MS1

T2MS0

T2IS1 - valideaza generare intrerupere la depasire capacitate T2 ( pe 16 biti )

T2IS0 - valideaza generare intrerupere la depasire capacitate T2 ( pe 8 biti - octetul inferior )

T2ER - validare reset extern pentru T2;

T2B0 - fanion intrerupere depasire capacitate T2, pe octet;

T2P1 T2P0 - stabilesc continutul 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 foloseste)

0 1 - se foloseste tact intern 1 1 semnalul de tact este extern la pinul T2.

Structura timerului T2 este prezentata in fig.4.4.


Fig.4.4. Structura timerului T2

Logica de capturare la Timerul T2

Timerul T2 este conectat la 4 registri de capturare, CT0, CT1, CT2, CT3. Acesti registri sunt incarcati cu continutul timerului T2 (TMH2 si TML2) atunci cand microcontrolerul primeste semnalele externe CT0I, CT1I, CT2I, respectiv CT3I pe front pozitiv sau negativ. In momentul capturii, se seteaza fanioane (flag) din TM2IR si se poate genera de asemenea si intrerupere.

Registrul care configureaza 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 intrerupere este TM2IR:

TM2IR

T20V

CMI2

CMI1

CMI0

CTI3

CTI2

CTI1

CTI0

T20V - fanion de intrerupere la depasire pe 16 biti

CMI2 - fanion de intrerupere corespunzator lui CM2

CMI1 - fanion de intrerupere corespunzator lui CM1

CMI0 - fanion de intrerupere corespunzator lui CM0

CTI3 - fanion de intrerupere corespunzator lui CT3

CTI2 - fanion de intrerupere corespunzator lui CT2

CTI1 - fanion de intrerupere corespunzator lui CT1

CTI0 - fanion de intrerupere corespunzator lui CT0

Structura T2 in regim de captura este prezentata in fig.4.5


Fig.4.5. T2 in regim de captura

Exemplu de utilizare a facilitatii de capturare a T2

Daca se doreste masurarea latimii unui impuls Tx, acesta este adus la una dintre intrarile de captura (de ex. CT0I). Registrul este setat sa captureze atat pe frontul pozitiv, cat si pe cel negativ. Se seteaza si intrerupere.

Cind apare primul front al semnalului, registrul de captura CT0 se incarca cu valoarea curenta a timerului T2 si se genereaza un semnal de intrerupere. In rutina de tratare a intreruperii, valoarea din CT0 se salveaza intr-o variabila N1. La aparitia celui de-al doilea front, din nou continutul lui T2 este capturat in CT0, iar in rutina de tratare a intreruperii se salveaza si aceasta valoare in N2. Prin diferenta cu valoarea anterioara se determina durata impulsului. Trebuie sa se tina seama si de eventuala depasire pe 16 bit a T2, contorizata de variabila k.

In acest caz durata impulsului este :

Tx=N2+k*65535-N1.

Logica de comparare la Timerul T2

La fiecare incrementare a T2, continutul a trei registri CM0, CM1 si CM2 este comparat cu noua valoare a T2. Cand se sesizeaza o coincidenta (match), se seteaza fanionul corespunzator din TM2IR, se modifica bitii portului 4 de iesire conform setarii registrilor STE si RTE, si se poate de aemenea genera intrerupere daca este setata aceasta optiune.

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 - daca este setat '1', P4.5 este setat daca CM0 si T2 coincid

SP44 - daca este setat '1', P4.4 este setat daca CM0 si T2 coincid

SP43 - daca este setat '1', P4.3 este setat daca CM0 si T2 coincid

SP42 - daca este setat '1', P4.2 este setat daca CM0 si T2 coincid

SP41 - daca este setat '1', P4.1 este setat daca CM0 si T2 coincid

SP40 - daca este setat '1', P4.0 este setat daca 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 - daca este setat '1', P4.7 basculeaza (toggle) daca CM2 si T2 coincid

TP46 - daca este setat '1', P4.6 basculeaza (toggle) daca CM2 si T2 coincid

RP45 - daca este setat '1', P4.5 este resetat daca CM1 si T2 coincid

RP44 - daca este setat '1', P4.4 este resetat daca CM1 si T2 coincid

RP43 - daca este setat '1', P4.3 este resetat daca CM1 si T2 coincid

RP42 - daca este setat '1', P4.2 este resetat daca CM1 si T2 coincid

RP41 - daca este setat '1', P4.1 este resetat daca CM1 si T2 coincid

RP40 - daca este setat '1', P4.0 este resetat daca CM1 si T2 coincid

Daca RTE.i este "0", atunci P4.i nu este afectat de coincidenta CM1 si T2 sau CM2 si T2

Structura T2 in regim de compaarare este prezentata in fig.4.6.


Fig.4.6. Structura T2 in regim de comparare

Setarea intreruperilor pentru timerul T2

Registri care permit selectarea intreruperilor sunt IEN0 si IEN1. Bitul EA valideaza posibilitatea de a selecta o intrerupere. Daca este pe "0", toate intreruperile sunt invalidate. Daca bitul EN este pe 1, fiecare intrerupere poate fi selectata individual.

IEN0

EA

EAD

ES1

ES0

ET1

EX1

ET0

EX0

EA - setat valideaza generarea de intreruperi, iar resetat invalideaza toate

intreruperile

EAD - setat valideaza intreruperea de la ADC

ES1 - setat valideaza intreruperea de la interfata I2C

ES0 - setat valideaza intreruperea de la interfata UART

ET1 - setat valideaza intreruperea de la Timer T1

EX1 - setat valideaza intreruperea externa 1

ET0 - setat valideaza intreruperea de la Timer 0

EX0 - setat valideaza intreruperea externa 0

IEN1

ET2

ECM2

ECM1

ECM0

ECT3

EXT2

ECT1

ECT0

ET2 - valideaza intreruperea data de depasirea capacitatii lui T2

ECM2 - valideaza intreruperea de la comparatorul 2 al T2

ECM1 - valideaza intreruperea de la comparatorul 1 al T2

ECM0 - valideaza intreruperea de la comparatorul 0 al T2

ECT3 - valideaza intreruperea de capturare 3 de la T2

ECT2 - valideaza intreruperea de capturare 2 de la T2

ECT1 - valideaza intreruperea de capturare 1 de la T2

ECT0 - valideaza intreruperea de capturare 0 de la T2


Fiecare intrerupere are o adresa fixa a rutinei de tratare a ei, conform tabelului.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1566
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved