Sistemul de intreruperi al microcontrolerului Intreruperile =semnale asincrone ale sist hardware (intreruperi hardware) kre solicit atentia unit centrale de prel(CPU)sau evenim sincrone software(intrer. software), care indica schimbar in execut prog. Rolul intreruperilor e d optimizare a UCP in rap cu dipsozit periferice(I/O), maresc vit CPU. De exep avem asigurare sincroniz k vit dintre calculator & imprimanta. Aparitia unei intreruperi det salvarea starii de executie a prog &executia unei subrutine de tratare a intrer,dupa kre se revine in prg ppal,in pctul in kre a fost parasit.Intreruperile hardware,sunt gen de evenim ext uC,d interfe d in/iesire sau d disp perif interne ale acestuia.Intreruperile software sunt implem cu instruc speciale de intrer,incluse in set de instr ale uC.Uneori, intreruperile softw sunt utiliz pt a implem apeluri de sist(System Call),prin care prog de aplic solicita servicii sist de operare. Explic figura:Pp surse de intrer(locurile d unde sunt gen intrer):int0,int1-intrer ext-timer0,timer1,timer2,port serial(prin Ri,Ti),CAN etc. Intrer se mem in bistabile &li se atas fanioane.Pt a semnala o intrer citim bistab.Pt intrer gen l int0, int1 pot fi active pe niv jos(comutator situat pe partea cu inversor sau pe front d cadere fctie d starea bit IT0 sau IT1 din reg special TCON.Flagurile care gen intrer sunt bitii IE0 si IE1 din TCON(timer CONtrol). In mome aparitiei unei intrer ext,flagul e sters hard in mom tratarii vector d intrer doar dc intrer a fo asctiva p front.Dc intrer a fost activa pe nivel sursa ext de intrer e cea care control starea lui IE &nu hardul intern.Intrer coresp timerelor 0&1 sunt gen prin TF0 si TF1,setate de o depasire a reg de numarare. Knd o intrer d timer e gen flagul kre a gen e sters in mom tratarii vectorului.Pt intrer d l port serial:2tip intrer de rec &transm,dar se gen un sg tip de intrer,p kre o putem detecta citind latchul kre latch e p 1 aceea intrer e gen. Intrer coresp portului serial e gen de SAU logic intre RI(rec interrupt) &TI(transm interupt)& e gen o sg intrer-ori rec ori transm;ne uitam la bistabil RI &Ti -vedem kre e pe 1. Nici unul din aceste flaguri nu e sters in mom vectorizarii intreri.Intrer coresp timer 2 e gen d SAU intreTF2 &EXF2.Nici 1din |
flag nu e sters hard in mom tratar intrer,rutina d tratare tre sa det sursa si sa stearga bitul.Toti bit (flaguri) kare gen intrer pr-zise pot fi setati /stersi soft ca si cum i-am fi sters hard.Reg specia IE(Interrupt Enable)-bloc cu comutat kre valideaza /mascheaza intrer ftie de starea comutat. ->sursele d intrer pot fi activate/dezact prin setarea/stergerea unui bit din reg. in acest reg se gaseste un bit de activare/dez globala a inrerEA -enable all.Fiec intrer-4 niv d priorit,p fiec niv d priorit mai exista alte niv d prior.Dc many intrer ac niv d prio at deservirea intrer se face dupa secventa Pooling(viziteaza tot de sus in jos&verif sa vad unde s-a cerut o intrer,Kre arata prio pt diverse tipuri de intrer. Intrer mascab ->knd apar nu au efect pt CPU,sunt practic mascate. Intrer nemascabile-pe kre CPU le obs.(ex: intrer Ualim.) Evenimente care pot genera o intrer :1)Depasirea capacitatii N/T T0 ,N/TT1, NT T2 (Timer0/1/2 Overflow), 2)Receptia/transm seriala a unui car3)Ev extern la in nINTO 4)Ev ext la in nINT1 5)Ev leg de PCA. Reguli privind executia intreruperilor:1)exe unei intrer nu poate fi sistata d apar unei intrer cu ac prior,2)O intrer cu prior ridicate poate intrerupe exe intrer cu prio scazuta,3)O intrer cu prio scaz poate fi exe doar dc nici o alta intrer nu e i curs d exe 4)Dc 2 intrer apar in ac timp,-exe 1 intr cu prio ridic.Dc ambele intreri ac prio,-exe 1 prima intrer din de secv de "pooling". ce intimpla la aparitia unei intreruperi?1E salvat in stiva continut (Program Counter PC),2.Sunt blocate intrer cu ac prio resp prio< 3.In caz intrer( ext,temporiz)sunt sterse fanioanele aferente,Se transf exec prog la subrut d tratare a intrer,Se exe subrutina de tratare a intreruperii, apoi se revine in progr pp.( RETI).ORG 0000H- directiva pt prog asamblor;cauta instruc in mem de la 0H JMP START-rol de ocolire a subruti de tratare a intrer( 50h)Serial Interrupt-subrut tratare a intrerCSEG AT 23H-segem de cod-progr se gaseste la 23HPUSH PSW-pune in stiva contin Program Status WordJB RI, L1-Jump if bit-salt dc RI=1 la label1(subrut de trat rec)POP PSW-scoate din stiva contin PSW sub 10.2 |
11.Portul (paralel) de intrare/iesire (I/O) Portul e locul unde uC face schim de inf cu exteriorul.Portul -circ d interfata paralela,care permite conec unui dispozitiv (periferic)extern l uC.Paralel datele sunt transferate (I/O) in format paralel (mai multi biti simultan).uC 80.51 este un uC pe 8 biti..Un uC are,tipic,4 porturi;nr acestora poate fi > (8 sau mai mult)sau pot lipsi cu desavirsire..Unele porturi pot fi utiliz doar ca in/iesiri de uz gen,adi pot avea ftii divers altele asigura& ftii alternative.la un uC tipic,cu 4porturi, P0 si P2 pot fi utiliz atit k int/iesiri de uz gen I/O si pt conect la uC a unor mem ext(realiz in ext magistrala d date(P0)&d adrese (P0, octetul inf A7-A0 si P2 octet sup A15-A8).Fctii alternative pentru portul P0.General purpose input/ output- avem port0 cu 16 linii (pt un uC pe 16 biti) -de a introd date.Avem un uC pe 16 bit -parte high P0H&parte low POL. General purpouse -port cinstit ex P0. Fct alternative.8-bit Demux Bus-(mag nemux pe 8 biti) se scoate numai octetul low de date partea high lipsind. 16-bit Demux-Bus-(magistrala nemultiplexata pe 16 biti) se scot datele atat octetul low cat si cel high 8-bit Mux Bus-mag p 8 biti care mux datele&adr in partea low,iar in partea high apar doar adresele high.16-bit Mux Bus-mag pe 16 biti care mux datele&adr p 16 biti.scoatem date&adrese pe 16biti. Portul paralel (de intrare/iesire - I/O).Portul P1 e utiliz ca intrari/iesiri de uz gen.Uneori, liniile sale repr in/iesiri pr circuitele periferice interne sub11.1 |
(CAN,CNA, temporizatoare, registri de captate/ comparare).Portul P3 dedicat, ftii alternative(semnalele nRD si nWR pentru comanda mem ext,in pt intrer extnINT0 si nINT1, in /iesiri pt interfete seriale (SPI, I2C, CAN, UART)). Comportamentul liniilor de port,ca in/iesire e progamabil.Regi kre pastreaza temporar info transferata sevesc la programarea comportamentului portului sunt plasati in memoria RAM interna (zona SFR). Linia de port in mod iesire: in contratimp (push-pull)&drena in gol (open drain)Cand un port este setat in mod iesire,at linia poate fi in config push pull (contratimp)sau cu drena in gol -open drain-(se pot realiza functii Si cablat-leg la drena mai mult iesiri&o rez de pullup).uC stie sa aleaga iesirea de tip push pull sau open drain printr-un bit.Avem 1tranz sup &1 inf care poate sa faca linia activa sus asau jos.In open drain tranz sup e intodeauna blocat iar linia poate fi activa numai jos Dc Q=1 at tranz inf e blocat iar linia se afla in inalta imepedanta.Niv inalt e suplinit in open drain de un dispozitiv extern de pull-up,care trage linia la Ualim.Open-drain poate fi implementat pt port P2,P3,P6,P7,P8 &e controlata prin regis Open Drain Control ODPx Acesti reg permit prin selectarea unui bit a optiunii open-drain pt fiec linie d port .Dc ODPx=0 at ealeasa linia d port in mod iesire in contratimp,iar pt ODPx=1 e aleasa open-drain. Toti acesti reg se gasesc in zona SFR.Caracteristica de transfer cu histeresis a unei linii de port-ref la in.Hist-rol in insensibilizarea iesirii,dc Uin variaza intre anum lim. Se obs in desen existenta a 2lim pt care are loc comutarea. |
12. Structura liniilor portului paralel (P0 si P2) Struct valabile pt un sg port dar fiind un port paralel vom avea 8 astfel de struct identice.Portul P0-port I/O pe 8 biti bidir cu iesirile de tip drena in gol.E port de date si adr pt mem ext.Pinii coresp unor val de 1 scrie in latcul portului 0 sunt flotanti putand fi utiliz ca in d Hiz.Ca iesire poate absorbi curentul corsp a 8 sarcini.P0 poate fi utiliz ca intrari/ies de uz gen resp, ca fctie alternativa, schimbul de date cu o mem ext (A7-A0 si D7-D0, mux in timp-mux octetul inf de adr &d date-poate fi magistrala mux de adrese si date),Struct include un bistabil D (latch),etaj de iesire(driver)form din tranz T2(p)& T1(n)& un etaj separator la in(buffer). P0.x latch inseamna ca avem x bistabile, in cazul nostru vor fi x=7.Un tranz cu canal n trebuie polar in G pozitiv fata de S (-)k sa conduca.la cel cu canal p aplic tens neg pe G fata de S k sa conduca.De ex dc aplic G=1, S=1 avem dif de pot 0 deci T2 nu conduce;dc S=1;G=0 T2 conduce.Este un etaj in contratimp deci daca T2 conduce T1 blocat si invers.T2 e blocat iesire drena in gol. T2 accelereaza comutarea iesirii la tranzitia "0" "1"si asigura "1" logic la out .Avem nevoie de MUX pt a comuta la iesire intre linii de intr in fctie d niv logic al unui semnal de comanda.E necesar pt ca un port are fct alternativa.Acest semnal de comanda este Control -e dat de tipul instruct ce se exe & tot ea stab & tipul portului, dc e fol ca si In/iesiri de uz gen(control="0")iar dc este fol ca &magistrala de ex atunci Control=1.Cu ajutorul mux putem aduce odata inf de la iesirea bistabilului sau inf de la adress data.Pt a utiliz linia ca in,ca si pin, se inscrie "1" in latch. Fiind un bistabil D dc D=1 Q=1.Ca out Q=1 logic T2 conduce si T1 |
blocat(aplicam 0 de la bistabil).Daca Control=o, out S1=0 G=0,S=1,ugs negativ si tranz conduce.Exixta instruc care citesc pinul si altele care citesc latch-ul.Instruct kre citesc starea iesirii latchului sunt acelea care citesc val,e posibil sa o modifice si apoi o rescriu in latch.Aceste instruc sunt de tip Read/Modiffy /Write.Fctia portului de iesire este de a introduce date -circula de la pin buffer IN (e cu posibil starii a 3-a si transmite starea pin la magistrala(internal bus)& doar dc e validat semnalul read pin).Semnalul read latch valideaza out bistabilului &read pin valideaza starea pinului.Dc nu ar fi cele 2 buffere ar trebui sa ne legam direct la magistrala cu pinul ceea ce nu e bine pt ca pe magistrala sunt conectate mai multe iesiri.La fel si iesirea bistabil e legata print-un buffer.Iesirea e in contratimp. Portul P2 e asem cu P0 diferenta fiind ca T2 este inlocuit cu un circ el cu rol de rezistenta "pull-up". (de val 10k de obicei).O rez pull -up e o rez la care se aplica +Vdd ca si potential.Liniei de intrare ii legam o rez pull up pt a avea potential +Vdd. Dezavantaj rez pull up e k dc o legam la masa,circ care face legarea la masa trebuie sa asigure si crt care circula pe rez.Uneori destul de mare.O putem inlocui cu un generator de curent constant (ex crt 100uA .D facem scurt va trece un crt maxim. Gen genereaza un crt ct si daca legam o rez mareste potentialul pana U/R=I=const .Daca avem o rez infinita va mari U pana ajunge la un potential Vdd.Avantaj -d fac scurt va trece un crt const.La accesarea memoriei externe curentul de iesire asigurat este mult mai mare decit in regimul intrari/iesiri de uz general. |
13.Structura linilor porturilor P1, P3.Port P1 si P3 sunt porturi I/O bidir d 8 biti iesirile fiind prevazute cu sarc activa interioara.Struct include un bistabil D (latch),1etaj de iesire (driver)&un etaj separator la in(buffer). P3.x latch inseamna ca avem x bistabile.Liniei de intrare ii legam o rez pull up pt a avea potential +Vdd. Dezav rez pull up e k dc o legam la masa,circ care face legarea l masa tre sa asigure& crt care circula pe rez. Uneori destul de mare.O putem inlocui cu un generator d crt cst(ex crt 100uA).Exixta instruct kre citesc pinul &altele kre cites latch-ul.Instruct kre citesc starea out latchului sunt acelea care citesc val,e posibil sa o modif &apoi o rescriu in latch.Ac instruc sunt de tipul Read/Modiffy /Write.Semnalul read latch valideaza iesirea bistabilului&read pin valideaza starea pinului.Dc nu ar fi cele 2 buffere ar trebui sa ne legam direct l magistrala cu pinul (nu e bine pt k pe magistrala sunt conectate mai multe out) diferente fata de P2. Nu mai apare MUX. Avem si la ele fct alternative.Alternate input function -pot citi pinul sau altcv. Pt fct alternativa tre inscris "1" in latch. Dupa reset 1 e automa inscris.Rez de "pull-up" asigura un crt mare doar in cazul fct alternative,pe durata tranzitiei "0" "1", Ca in de uz general, crt de iesire furnizat de circ de "pull-up" e drastic diminuat => Cuasi-bidirectional.Struc rez de pull up are rol de a asig acea comanda selec a crt dat de sursa de crt cst.Adica la incep pe durata frontului crt trebuie sa fie mare k sa incarc capacitatile rapid ;dupa ce e trecut frontul,in reg static crt tre sa fie mic. |
14Circuite de numarare/temporizare. Functii .Temporizator=> Marcarea cu precizie, prin intrer, a unor interv de timp cu durate programabile.Numarator => Numararea unor evenim ext(tranzitii aplicate la un pin extern)Functi e programabila prin interm unor regi SFR (TMOD si TCON) .Sunt disponibile 3 circ temporizator/ numarator: T0, T1, T2. Explicare figura:avem 1numarator p 16 biti(THX/TLX).TFX e bistabil ce memoreaza intrer,knd s-a depasit capacit de mem se gen overflow& se scrie un 1 in bistabil.TRx permite trecerea sau opreste semnalul,pornind sau oprind numaratorul.Xtal este iesirea unui osc cu cuart, impulsul d la oscilator e divizat cu 12 pt ca frecv clockului e de 12 Mhz &prin divizare=>val rezonabile pt intervalele de timp, =>o perioada de 1mS.Pinul Tx pin pt numararea evenimente ext,acesta se gaseste la portul P3 care are ftii alternative.In temporizator intra semnalul de la Xtal, iar in numarator vin semnalele de la Tx. Alegerea functionarii ca temporizator sau numarator se face cu ajut mux,prin selectie cu bitul C/Tx#. La 80.51 avem temporizatoarele T0,T1,T2 dintre care primele 2sunt mai des utilizate decat ultimul. Primele 2 au 3 regimuri de lucru. Temporizatoarele T0 si T1 in modurile de lucru 0 si |
Explicatiile anterioare sunt valabile. In mod 0 d lucru, numarat e p 13 biti,pt k se doreste pastrarea compatibilit cu uC Intel, avdn 13 biti folosim doar primii 8+5 biti. In modul 1 de lucru funct e p 16 biti. Sch difera de prima prin adaug unui circ in loc de pinul TRx.Ca sa fie valabila sch punem tot timpul Trx=1 &at iesire portii SI depinde doar de cealalta intrare.Dc punem Gatexpe 0,ati Intx# permite inchiderea si deschiderea portii. Temporizatoarele T0 si T1 in modurile de lucru 2 (cu autoincarcare) Obs similare k pt schema anterioara. TLx este numarator, iar THx poate fi oricat. Numararea se face de la cat se incarca, cand se deshide bufferul,incarcarea continutului lui TLx cu continutul lui THx se face ori de cate ori se atinge capacit max d memorare a lui TLx.Temporizatoarl T0 in modul de lucru 3 (doua temporizatoare cu 8 biti) avem 2 temporizatoare pe 8 biti separate. Registrii aferenti temporizatoarelor se gasesc in zona SFR. Pt a stabili care regim de lucru dorim sa utiliz 2 biti. TF0& TF1 sunt bistabile ce retin intreruperile.Registrii SFR pentru programarea functonarii temporizatoarelor T0 si T1 Acestia sunt TMOD si TCON. Pt a comanda niste periferice efectiv trebuie sa stim cum sa punem niste biti. |
|