Lucrarea 3 Timer

4
1 CIRCUITUL TIMER Circuitul timer 82C54 este versiunea CHMOS a circuitului standard I8254. El este destinat rezolvării problemelor de natură temporală care apar în sistemele cu microprocesor [1]. Circuitul conţine trei numărătoare independente de 16 biţi şi este considerat de către microprocesor drept un tablou de porturi I/O succesive, putînd fi utilizat ca numărător de evenimente externe, generator programabil de semnale dreptunghiulare, monostabil redeclanşabil, circuit de întîrziere, etc. [2] Cu ajutorul timer-ului este rezolvată una dintre cele mai des întîlnite probleme în sistemele cu microprocesor: generarea unor întîrzieri precise sub control software. Astfel, în locul generării buclelor de întîrziere prin program, este suficientă configurarea unuia dintre numărătoare pentru generarea întîrzierii dorite. La terminarea numărării circuitul generează o înterupere. Structura circuitului 82C54 În Figura 1 este reprezentată structura internă a circuitului 82C54, în care se remarcă următoarele blocuri constitutive: Figura 1. Schema bloc a circuitului 82C54 [1]. Buffer-ul magistralei de date – realizează interfaţarea circuitului timer cu magistrala de date a sistemului.

description

sisteme cu microprocesoare lab 3

Transcript of Lucrarea 3 Timer

  • 1

    CIRCUITUL TIMER

    Circuitul timer 82C54 este versiunea CHMOS a circuitului standard I8254. El este destinat rezolvrii problemelor de natur temporal care apar n sistemele cu microprocesor [1]. Circuitul conine trei numrtoare independente de 16 bii i este considerat de ctre microprocesor drept un tablou de porturi I/O succesive, putnd fi utilizat ca numrtor de evenimente externe, generator programabil de semnale dreptunghiulare, monostabil redeclanabil, circuit de ntrziere, etc. [2]

    Cu ajutorul timer-ului este rezolvat una dintre cele mai des ntlnite probleme n sistemele cu microprocesor: generarea unor ntrzieri precise sub control software. Astfel, n locul generrii buclelor de ntrziere prin program, este suficient configurarea unuia dintre numrtoare pentru generarea ntrzierii dorite. La terminarea numrrii circuitul genereaz o nterupere. Structura circuitului 82C54

    n Figura 1 este reprezentat structura intern a circuitului 82C54, n care se remarc urmtoarele blocuri constitutive:

    Figura 1. Schema bloc a circuitului 82C54 [1].

    Buffer-ul magistralei de date realizeaz interfaarea circuitului timer cu magistrala de date a sistemului.

  • 2

    Logica de citire/scriere permite selecia i comanda circuitului. Circuitul este selectat prin aducerea semnalului /CS n starea low. Intrrile A0 i A1 selecteaz unul dintre cele trei numrtoare n vederea citirii sau scrierii. De asemenea, ambele intrri A n starea high, combinate cu un semnal high pe intrarea /RD i un semnal low pe intrarea /WR, determin ncrcarea registrului de comand. Registrul cuvntului de comand (control) stocheaz informaiile referitoare la programarea circuitului. Numrtoarele sunt identice, fiecare dintre ele coninnd un numrtor descresctor de 16 bii. Pot fi setate s numere n format BCD sau binar, independent unul de altul. CLKi intrri de ceas pentru numrtoare, frecvena maxim admis fiind de 10 MHz. GATEi pot aciona ca i pori de validare ale intrrilor de ceas sau ca impuls de declanare a numrrii n funcie de modul de funcionare selectat. OUTi ieirile celor trei numrtoare.

    Programarea circuitului timer

    La iniializarea sistemului starea circuitului 82C54 este nedefinit. nainte de a fi folosit, fiecare numrtor trebuie programat. Programarea se face cu ajutorul unui cuvnt de comand, al crui format poate fi vzut n Figura 2.

    D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RW1 RW0 M2 M1 M0 BCD

    SC selecteaz numrtor (Select Counter):

    SC1 SC0 0 0 selecteaz numrtor 0 0 1 selecteaz numrtor 1 1 0 selecteaz numrtor 2 1 1 comand ilegal

    RW citire/scriere (Read/Write):

    RW1 RW0 0 0 citete numrtor 0 1 citete/scrie octetul low 1 0 citete/scrie octetul

    high 1 1 citete/scrie octetul low

    i apoi octetul high

    M mod de lucru (Mode):

    M2 M1 M0 0 0 0 mod 0 0 0 1 mod 1 X 1 0 mod 2 X 1 1 mod 3 1 0 0 mod 4 1 0 1 mod 5

    BCD numrare:

    BCD 0 numrare binar 1 numrare BCD

    Figura 2. Structura cuvntului de comand a circuitului timer.

  • 3

    Dup cum se poate vedea i din Figura 2 exist ase moduri de lucru: Modul 0 ntrerupere la terminarea numrrii. Dup scrierea cuvntului de comand,

    ieirea OUT a numrtorului este forat n starea low, n care va rmne pn cnd numrtorul va ajunge la zero. n acel moment semnalul OUT trece n starea high, n care rmne pn la o nou ncrcare a numrtorului. Numrarea este posibil doar dac semnalul GATE este activat.

    Modul 1 monostabil programabil. Dup scrierea cuvntului de comand, ieirea OUT a

    numrtorului va fi forat n starea high. Trecerea n starea low se va face abia dup ce va fi ncrcat i numrtorul, iar semnalul pe intrarea GATE va fi pozitiv. La sfritul numrrii OUT trece n starea 0. O nou activare a semnalului GATE are drept efect renceperea numrrii. Dac n timpul numrrii se ncarc o nou valoare n numrtor aceasta nu va afecta decrementarea acestuia, pn n momentul n care pe intrarea GATE se va nregistra un front pozitiv. n acest caz, numrarea se reia cu ultima valoare nscris n contor.

    Modul 2 generator de impulsuri. Factorul de umplere n este dat de valoarea nscris n

    contor. Ieirea va fi n starea high timp de n-1 perioade de ceas i va trece n starea low n a n-a perioad, dup care procesul se reia. Dac intrarea GATE trece n 0 n timpul numrrii procesul este inhibat, fiind reluat de la valoarea iniial n momentul n care GATE trece din nou n starea 1. Dac n timpul numrrii se ncarc o nou valoare n numrtor aceasta nu va afecta decrementarea acestuia, ea fiind luat n considerare de-abia n ciclul urmtor.

    Modul 3 generator de semnal dreptunghiular. Factorul de umplere al semnalului generat

    este 1/2. Funcionarea n acest mod este similar cu cea din modul anterior, cu excepia comportamentului ieirii OUT. Astfel, aceasta va fi iniial n starea high i va trece n starea low cnd numrarea va ajunge la jumtatea valorii nscrise iniial n contor. Pentru o discuie privind modul n care paritatea valorii iniiale nscris n contor afecteaz numrarea, consultai referina [1].

    Modul 4 monostabil declanat prin program. i acest mod de funcionare este ntr-un fel

    similar cu modul 2. Diferena ar fi c n acest caz numrtorul ajunge la 0, spre deosebire de modul 2, unde numrtorul ajungea la valoarea 1, dup care procesul era reluat, valoarea 0 nefiind atins niciodat. A doua diferen e dat de faptul c dup trecerea ieirii n starea low la sfritul numrrii i generarea impulsului, procesul nu se reia. Semnalul OUT trece n starea high i rmne acolo, numrtorul continundu-i decrementarea. ncrcarea unei noi valori n contor pe timpul numrrii determin renceperea procesului cu aceast valoare pe urmtoarea perioad de ceas.

    Modul 5 monostabil comandat prin hardware. Numrtoarea ncepe la activarea

    semnalului GATE dup ce n prealabil numrtorul a fost iniializat cu constanta dorit. La terminarea numrrii semnalul OUT trece n starea low pentru o perioad, procesul fiind reluat la un nou front pozitiv pe intrarea GATE.

    Pentru mai multe detalii privind funcionarea circuitului timer consultai referina [1]. Utilizarea circuitului timer n PC Cele trei numrtoare ale circuitului timer se gsesc la adresele 40h 42h, n timp ce registrul

    cuvntului de comand se gsete la adresa 43h. Intrrile de ceas ale celor trei numrtoare au frecvena de 1,193 MHz.

    n calculatoarele compatibile IBM, cele trei numrtoare ndeplinesc diferite funcii. Astfel, numrtorul 0 furnizeaz impulsuri cu perioada de 55 ms, care genereaz ntreruperi hard pe intrarea IRQ0 a controller-ului de ntreruperi. De ce 55 ms? Valoarea maxim cu care poate fi iniializat

    contorul este 0FFFFh, adic 65535. Asta nseamn c frecvena corespunztoare este:

  • 4

    HzMHzf 20648,18655356

    19318,1 == ,

    iar perioada

    msHz

    T 9255,5420648,18

    1 == .

    Aceast proprietate a circuitului timer este folosit pentru a menine timpul i data sistemului. Celelalte dou canale ale circuitului au urmtoarele roluri: numrtorul 1 comand intrarea

    DRQ0 a circuitului DMAC I8237A, iar numrtorul 2 comand difuzorul calculatorului. Controlul difuzorului se face cu cei doi bii mai puin semnificativi ai portului 61h. Astfel, ambii bii setai pornesc difuzorul, n timp ce o valoare nul nscris pe cele dou poziii determin oprirea sa.

    Bibliografie:

    1. *** - Intel 82C54 CHMOS Programmable Interval Timer. 2. Eugen Lupu, Sisteme cu microprocesoare resurse hardware, prezentare, programare i

    aplicaii, Editura Albastr, Cluj-Napoca, 2003.