Sunteți pe pagina 1din 20

Capitolul 2.

Arhitectura microcontrollerelor
2.1. Procesorul
Elementul de baz[ din structura unui microcontroller (sau microprocesor) este procesorul. Procesorul este un sistem format dintr-o unitate aritmetic[ logic[ =i registre (RALU Registers and Aritmethic Logic Unit) =i o unitate de comand[ (UC) [A.2]. RALU este un automat aritmetic ac\ionat de o succesiune de comenzi sosite din exterior care transform[ un =ir de date de intrare ]ntr-un alt =ir de date de ie=ire. Prelucr[rile suferite de date se numesc opera\ii elementare =i se efectueaz[ asupra unor cuvinte binare cu lungimea de n bi\i.

DI

RALU
F A CK C

FL DO

Figura 2.1. RALU Registre =i unitatea aritmetic[ logic[: DI date intrare, DO date ie=ire; FL indicatori (flag-uri), F comanda func\iei; A adrese pentru selec\ia operanzilor interni =i a destina\iei rezultatului CK semnal de tact, C comenzi.. Comenzile necesare ac\ion[rii RALU sunt furnizate de unitatea de comad[ (UC). Func\iile UC pot fi realizate ]n hardware sau pot fi realizate cu un subsistem microprogramat (procesor ]n procesor).

DO A

AD AP AA

RALU

C F

UC
I SO SI

Procesor

DI

Figura 2.2. Procesorul: DI date intrare, DO date ie=ire; A adrese registre, C comenzi; F indicatori (flag-uri); AD adrese date, AP adrese program (instruc\iuni); AA automat de adresare. I instruc\iuni; SI, SO sincronizare (comenzi). At`t operanzii c`t =i rezultatul unei opera\iei (DO) pot fi interni RALU (]n registre) sau externi (]n memoria de date - MD). Sincronizarea procesorului cu lumea exterioar[ se realizeaz[ prin intr[rile de sincronizare SI =i ie=irile de sincronizare SO.

2.1

Capitolul 2. Arhitectura microcontrollerelor Instruc\iunile sunt ]ntodeauna memorate extern (]n memoria program - MP). Este sarcina UC de a genera adresele (prin automatul de adresare - AA) =i semnalele de comand[, at`t pentru memoria de date, c`t =i pentru memoria program. Durata execu\iei unei instruc\iuni de c[tre procesorul din figura 2.2 se nume=te ciclu-instruc\iune. Ea cuprinde minimum 3 faze: Faza 1: UC cite=te instruc\iunea curent[ I, printr-un ciclu de acces (fetch) la memoria program (MP); Faza 2: UC decodific[ instruc\iunea =i genereaz[ secven\a de comenzi, asociate lui I, c[tre RALU; Faza 3: RALU execut[ comenzile iar UC, ]n paralel, ]=i modific[ (eventual) secven\a de comenzi generate, ]n func\ie de starea indicatorilor FL, furniza\i de RALU; ]n cazul ]n care instruc\iunea implic[ transferuri de date cu exteriorul, se comand[, la momentele necesare, citirea datelor pe DI sau de scrierea datelor de pe DO. Modul de implementare a structurii generale din figura 2.2 depinde de mai mul\i factori, cei mai importan\i fiind: gradul de specializare dorit pentru anumite aplica\ii; flexibilitatea propus[; constr`ngeri tehnologice diverse. }n majoritatea implement[rilor, procesoarele au o singur[ magistral[ de date, bidirec\ional[, ob\inut[ prin unificarea DI =i DO. Arhitectura cu magistrale separate pentru date =i instruc\iuni (figura 2.3) este cunoscut[ sub numele de arhitectur[ Harvard.

2.2. Arhitectura Harvard


Arhitectura Harvard a fost practic ignorat[ p`n[ la sf`r=itul anilor 70, ]n principal din cauza constr`ngerilor tehnologice.

MD

AD D C

Procesor

AP I C

MP

Figura 2.3. Arhitectura Harvard: D date, C comenzi, I instruc\iuni; AD adrese memorie de date, AP adrese memorie program. Principalul avantaj al arhitecturii Harvard este acela c[ permite un grad mare de paralelism ]n execu\ia instruc\iunilor, prin suprapunerea fazei de execu\ie a instruc\iunii curente cu faza de aducere a instruc\iunii urm[toare (figura 2.4). Acest fapt conduce la realizarea unor procesoare teoretic mai rapide.
Tn

Fetch I n

Decode In

Exec I n Fetch I n+1 Decode In+1 Exec I n+1


Tn+1

Figura 2.4. Execu\ia paralel[ a instruc\iunilor: In, In+1 instruc\iuni, Tn, Tn+1 cicluri-instruc\iune. 2.2

Capitolul 2. Arhitectura microcontrollerelor Un alt avantaj al arhitecturii Harvard, derivat din paralelismul ]n execu\ia instruc\iunilor este acela c[ durata de execu\ie a majorit[\ii instruc\iunilor este aceea=i. Aceast[ caracteristic[ prezint[ interes ]n special ]n realizarea sistemelor ]n timp real.

2.3. Arhitectura von Neumann


O alt[ modificare posibil[ a structurii din figura 2.2 este unificarea magistralelor de date =i instruc\iuni ]ntr-o singur[ magistral[ bidirec\ional[ numit[, impropriu, tot magistral[ de date. Arhitectura este cunoscut[ sub numele de arhitectur[ Princeton sau von Neumann.

Procesor

A D,I C

MEM

Figura 2.5. Arhitectura von Neumann (Princeton): A adrese, C comenzi; D,I date =i instruc\iuni Simplitatea acestei arhitecturi (o singur[ magistral[ de adrese, o singur[ magistral[ pentru date =i instruc\iuni, o singur[ memorie) a determinat utilizarea ei ]n majoritatea microprocesoarelor de uz general. Principalul avantaj al arhitecturii von Neumann const[ ]n posibilitatea utiliz[rii rezultatelor RALU ca instruc\iuni (reac\ie prin structura informa\ional[). Din acest motiv, sistemele cu arhitectur[ Princeton sunt considerate mai flexibile dec`t cele cu arhitectur[ Harvard.

2.4. Memoria
Memoria de date a microcontrollerelor este, ]n general, de tip RAM. Exist[ ]ns[ =i microcontrollere, ]n special cele moderne, care posed[ memorie de date suplimentar[, de tip EEPROM. Celulele memoriei de date de tip RAM sunt numite registre. Lungimea lor (num[rul de bi\i) corespunde, ]n general, lungimii magistralei de date (DI/DO din RALU) =i constituie un criteriu major de clasificare a microcontrollerelor. Anumite registre controleaz[ periferice incorporate sau circuite suport, caz ]n care sunt denumite registre cu func\ii speciale (Special Function Registers SFR). Unele clase de microcontrollere ofer[ posibilitatea extinderii memoriei de date prin expunerea magistralei interne de date. Memoria program sau memoria de instruc\iuni poate fi de tip ROM, PROM, EPROM sau EEPROM (FLASH). Exist[ microcontrollere cu memoria program incorporat[ pe chip (intern[), cu sau f[r[ posibilitatea extinderii ei, a=a cum exist[ =i microcontrollere f[r[ memorie program intern[. Acestea din urm[ sunt considerate microcontrollere care lucreaz[ ]n regim de microprocesor. Adresa curent[ din memoria program este p[strat[ ]ntr-un registru special numit contor de program (Program Counter PC). Lungimea unei instruc\iuni (num[rul de bi\i) este un element cu implica\ii majore ]n arhitectura intern[, constituind un alt criteriu ]n clasificarea microcontrollerelor.

2.5. CISC versus RISC


}n general, procesoarele pot fi cu set complet de instruc\iuni (Complete Instruction Set Computers CISC), sau cu set redus de instruc\iuni (Reduced Instruction Set Computers RISC) =i exist[ percep\ia, nu ]ntotdeauna fondat[, c[ procesoarele RISC sunt mai rapide dec`t cele CISC. 2.3

Capitolul 2. Arhitectura microcontrollerelor Aceast[ clasificare poate fi uneori confuz[, exist`nd procesoare de tip RISC care, ]n fapt, sunt CISC iar ]n unele aplica\ii, procesoarele de tip CISC execut[ programul mai rapid dec`t cele RISC. Procesoarele CISC posed[ un num[r relativ mare de instruc\iuni, multe dintre ele reprezent`nd permut[ri ale aceleia=i opera\ii cu diverse moduri de acces la date (mod de adresare direct, indirect, indexat, implicit etc.). Setul de instruc\iuni reprezint[, de cele mai multe ori, viziunea proiectantului procesorului asupra conceptului de instruc\iune util[. }n cazul procesoarelor RISC, num[rul de instruc\iuni este redus la minim, utilizatorul av`nd posibilitatea de a-=i construi propriile opera\ii. Simpla reducere a num[rului de instruc\iuni nu garanteaz[ succesul unei solu\ii RISC. Ea este ]nso\it[ de o arhitectur[ specific[ a procesorului care urm[re=te cre=terea flexibilit[\ii astfel ]nc`t, cu un num[r extrem de redus de instruc\iuni, care se execut[ ]ntr-un num[r foarte redus de cicluri, s[ se poat[ realiza func\ii complexe ]ntr-o manier[ eficient[. Posibilitatea scrierii ]n oricare din registrele procesorului, numit[ ortogonalitate sau simetrie a setului de instruc\iuni, faciliteaz[ realizarea unor opera\ii deosebit de flexibile =i puternice. De exemplu, ]ntr-un sistem CISC, saltul condi\ionat se realizeaz[ uzual numai pe baza indicatorilor RALU, grupa\i ]ntr-un registru special, numit registru de stare (Program Status Word PSW). }n cazul sistemelor RISC, saltul condi\ionat poate fi bazat pe starea unui bit situat oriunde ]n memoria de date.

2.6. Subprograme
O tehnic[ de programare foarte folosit[ este cea a subprogramelor sau subrutinelor. Subprogramul este o secven\[ de instruc\iuni care poate fi tratat[ ca un program de sine st[t[tor (are propriile date de intrare =i de ie=ire). Implementarea acestui mecanism de programare se bazeaz[ pe: existen\a unui suport hardware adecvat (stiva); existen\a a dou[ instruc\iuni speciale: instruc\iunea de apel a subprogramului =i instruc\iunea de revenire din subprogram. Stiva este un tip special de memorie care stocheaz[, ]n principal, adresele de revenire din subprograme. Adresa loca\iei curente din stiv[ este memorat[ ]ntr-un registru special numit indicator de stiv[ (Stack Pointer SP). Programul care utilizeaz[ subprograme, numit program principal (sau program apelant), activeaz[ subprogramul prin intermediul instruc\iunii de apel (CALL). La execu\ia acestei instruc\iuni, se declan=eaz[ urm[toarea secven\[ de evenimente: adresa instruc\iunii urm[toare instruc\iunii de apel (adresa de revenire) este memorat[ ]n stiv[ iar indicatorul de stiva este modificat corespunz[tor (PUSH); contorul de program este ]nc[rcat cu adresa de start a subprogramului. }n acest fel, urm[toarea instruc\iune citit[ va fi prima instruc\iune din subprogram (controlul fluxului de instruc\iuni apar\ine subprogramului).

2.4

Capitolul 2. Arhitectura microcontrollerelor

PC

PP apel SR PC k k+1

n-1 n n+1

CALL revenire RETURN

Figura 2.6. Apelarea unui subprogram: PP programul principal, SR subprogram (subrutin[); PC contor program; n adres[ instruc\iune apel; k adresa de start subprogram. La sf`r=itul seven\ei de instruc\iuni din cadrul suprogramului se g[se=te o instruc\iune de revenire din subprogram (RETURN). Execu\ia acesteia genereaz[ urm[toarea secven\[: adresa de revenire din subprogram este extras[ din stiv[ =i indicatorul de stiv[ este modificat corespunz[tor (POP); contorul de program este ]nc[rcat cu adresa de revenire. Astfel, controlul fluxului de instruc\iuni revine programului principal, cu prima instruc\iune de dup[ instruc\iunea de apel a subprogramului. Anumite microcontrollere ofer[ posibilitatea modific[rii con\inutului stivei prin instruc\iuni de tip PUSH =i POP. }n acest fel se ob\ine o flexibilitate sporit[, stiva put`nd fi utilizat[, de exemplu, pentru transmiterea parametrilor c[tre subprogram (date de intrare pentru subprogram) sau pentru extragerea rezultatelor (date de ie=ire din subprogram). Aceast[ tehnic[ este utilizat[, ]n special, ]n cazul limbajelor de nivel ]nalt. Execu\ia unui subprogram poate fi declan=at[ nu numai prin execu\ia instruc\iunilor de apel ci =i ca urmare a producerii unui eveniment special, numit ]ntrerupere. Mecanismul ]ntreruperilor va fi prezentat ]n paragraful urm[tor (vezi Sistemul de ]ntreruperi).

2.7. Circuite suport


Sub denumirea de circuite suport sunt ]nt`lnite acele circuite care asigur[ func\ionarea corect[ a procesorului. }n acest paragraf sunt trecute ]n revist[ principalele circuite suport ]nt`lnite ]n arhitectura microcontrollerelor. 2.7.1. Oscilatorul Oscilatorul furnizeaz[ semnalul principal de sincronizare pentru procesor (ceasul sistem). Majoritatea microcontrollerelor incorporeaz[ circuite care permit, cu un mum[r minim de componente, generarea semnalului de ceas sistem. Aceste circuite pot fi configurate s[ lucreze ]n trei moduri: oscilator cu cuar\ sau rezonator piezoceramic; oscilator RC ( intern sau extern); ceas extern. Oscilatorul cu cuar\ (figura 2.7.) ofer[ solu\ia cu cea mai mare stabilitare (50100 ppm parts per milion), principalele dezavantaje ale acestei solu\ii fiind costul ridicat =i fragilitatea cristalului de cuar\. Rezonatorul piezoceramic este mai robust =i mai ieftin, stabilitatea fiind ]ns[ redus[ cu aproximativ trei ordine de m[rime (0.51 %).

2.5

Capitolul 2. Arhitectura microcontrollerelor

C1 Q C2 RS RF

Clock In

Clock Out

Microcontroller
Figura 2.7. Oscilator cu cuar\ sau rezonator piezoceramic.

Vcc R
Clock In

Microcontroller
Figura 2.8. Oscilator RC. Oscilatorul RC (figura 2.8) reprezint[ cea mai ieftin[ dar =i cea mai pu\in stabil[ solu\ie (1020%). Valorile componentelor din figurile 2.7 =i 2.8 depind de tipul microcontrollerului =i de tipul de cuar\ sau rezonator. Anumite microcontrollere incorporeaz[ oscilatoare de tip RC (care nu necesit[ componente externe). Solu\ia cu ceas extern se utilizeaz[ ]n situa\iile ]n care semnalul este disponibil din alte surse ale sistemului cu microcontroller. Trebuie f[cut[ distinc\ie ]ntre ciclul instruc\iune (TCY) =i ciclul de ceas sistem (TCLK). Durata unui ciclu instruc\iune cuprinde mai multe cicluri ale ceasului sistem (412 TCLK) =i este ]mp[r\it[ ]n mai multe segmente (numite faze sau st[ri) care eviden\iaz[ diverse etape ale execu\iei instruc\iunii. }n figura 2.9 se prezint[, spre exemplificare, structura unui ciclu instruc\iune ]n cazul microcontrollerelor din familia Intel 8051.
TCLK

P1 S1

P2

P1 S2

P2

P1 S3

P2

P1 S4

P2

P1 S5

P2

P1 S6

P2

P1 S1

P2

TCY

Figura 2.9. Ciclu instruc\iune 8051. P1,P2 - faze, S1S4 st[ri.

2.6

Capitolul 2. Arhitectura microcontrollerelor 2.7.2. Circuitul de ini\ializare Circuitul de ini\ializare (circuitul de RESET) permite aducerea microcontrollerului ]ntr-o stare bine definit[ (stare ini\ial[). Principalele evenimente produse ]n secven\a de ini\ializare sunt: ]nc[rcarea anumitor SFR-uri cu valori predeterminate; ]nc[rcarea contorului program cu o adres[ predefinit[ (uzual adresa 0). Secven\a de ini\ializare poate fi declan=at[ de unul din urm[toarele evenimente: alimentarea microcontrollerului (Power On Reset POR); sc[derea tensiunii de alimentare sub o anumit[ valoare (Brown-Out Reset BOR); modificarea st[rii unui pin dedicat al microcontrollerului - pinul de RESET (RESET extern); dep[=irea unui anumit interval de timp (Watch-Dog Reset). Comanda de RESET la alimentare trebuie men\inut[ suficient timp pentru a permite stabilizarea oscilatorului sistem. }n acest scop, se utilizeaz[ un circuit RC, ata=at pinului de RESET extern.
Vcc Buton RESET Vcc R RESET R Microcontroller Buton RESET C Microcontroller RESET

Figura 2.10. Circuite de RESET. 2.7.3. Circuitul de supraveghere Circuitul de supraveghere (watch-dog) utilizeaz[ un num[r[tor dedicat (Watch-Dog Timer WDT) care, la dep[=ire, genereaz[ semnalul de RESET. Programul utilizator trebuie s[ ini\ializeze periodic num[r[torul, pentru a preveni resetarea microcontrollerului. }n acest mod, se realizeaz[ o cale de recuperare din st[rile de blocaj, cu pre\ul ini\ializ[rii sistemului. La anumite microcontrollere, sursa de ceas a circuitului de supraveghere este diferit[ de oscilatorul sistem, fapt care m[re=te siguran\a circuitului. 2.7.4. Sistemul de ]ntreruperi Un instrument deosebit de puternic de programare a microcontrollerelor este sistemul de ]ntreruperi, esen\ial ]n realizarea sistemelor ]n timp real sau multitasking. }n principiu, ]ntreruperile permit sincronizarea microcontrollerului cu cu diverse periferice incorporate sau externe. Circuitul suport care implementeaz[ sistemul de ]ntreruperi se nume=te controller de ]ntreruperi. Sistemul func\ioneaz[ ]n felul urm[tor: la producerea unui eveniment legat de periferic, se seteaz[ un semafor numit semafor de ]ntrerupere (Interrupt Flag IF). Ca urmare, controllerul de ]ntreruperi genereaz[ o comand[ special[ c[tre procesor numit[ cerere de ]ntrerupere (Interrupt Request). Ca r[spuns la cerea de ]ntrerupere, procesorul apeleaz[ un subprogram numit subprogram de servire a ]ntreruperii (Interrupt Service Routine ISR). }n acest fel, execu\ia programului este ]ntrerupt[ =i va fi reluat[ la revenirea din rutina se servire a ]ntreruperii. Adresa la care se afl[ rutina de tratare a ]ntreruperii se nume=te vector de ]ntrerupere. Unele microcontrollere au un singur vector pentru mai multe surse de ]ntrerupere. }n aceste cazuri, sursa ]ntreruperii se determin[ prin examinarea semafoarelor de ]ntrerupere.

2.7

Capitolul 2. Arhitectura microcontrollerelor Pentru ca programul s[ se reia exact ]n condi\iile ]n care a fost ]ntrerupt, registrele modificate ]n rutina de servire a ]ntreruperii trebuie s[ fie salvate la apel =i restaurate la revenirea din rutin[. La unele tipuri de microcontrollere, salvarea =i restaurarea registrelor mai importante (registrul de stare, registrul acumulator sau registrul de lucru, etc.), se face automat, utiliz`nd fie stiva, fie registre special destinate acestui scop. De remarcat c[ servirea unei ]ntreruperi poate fi am`nat[, cel pu\in p`n[ la sf`r=itul instruc\iunii curente (]n execu\ie). Perioada de timp dintre momentul gener[rii unei cereri de ]ntrerupere =i servirea ei poart[ numele de laten\[ a ]ntreruperii. Evenimentele care se utilizeaz[ frecvent pentru generarea de ]ntreruperi, numite surse de ]ntreruperi, sunt: dep[=irea capacit[\ii unui num[r[tor, modificarea st[rii unui pin, recep\ia unei date de c[tre un dispozitiv de intrare, sf`r=itul transmiterii unei date de c[tre un dispozitiv de ie=ire, etc. Semafoarele de ]ntrerupere pot fi ]nso\ite de semafoare de validare (Interrupt Enable IE flags). Valoarea 0 a semaforului de validare inhib[ cererea de ]ntrerupere corespunz[toare. }ntreruperile dotate cu semafoare de validare se numesc mascabile. }n cazul sistemelor cu mai multe surse de ]ntrerupere, exist[ posibilitatea gener[rii simultane a dou[ sau mai multe cereri de ]ntrerupere. Ordinea ]n care vor fi servite ]ntreruperile ]n acest caz este stabilit[ pe baza unor semafoare de prioritate (Interrupt Priority IP flags).

2.8. Dispozitive periferice incorporate


Dispozitivele periferice incorporate, numite =i dispozitive de intrare-ie=ire, pemit implementarea unor func\ii de baz[, care se ]nt`lnesc frecvent ]n aplica\iile sistemelor cu microcontroller: m[surarea precis[ a timpului sau ceasul ]n timp real (Real Time Clock RTC); num[rarea tranzi\iilor unui semnal extern (num[r[tor - counter); m[surarea precis[ a duratei unui impuls de intrare (timer); comunica\ia cu exteriorul (interfe\e seriale sau paralele); monitorizarea evenimentelor asincrone externe; conversia analog-numeric[ sau numeric analogic[. Fiecare periferic are asociat cel pu\in un registru cu func\ii speciale (SFR) prin care sunt manevrate datele de intrare-ie=ire. Alte SFR-uri asociate perifericului permit configurarea acestuia. 2.8.1. PORT-urile de intrare-ie=ire PORT-ul de intrare-ie=ire (I/O PORT) este cel mai simplu periferic, el contituind o interfa\[ ]ntre magistrala intern[ de date a microcontrollerului =i pinii de intrare-ie=ire.

Citire Latch

Func\ie alternativ[ Control ie=ire

Data Bus Scriere PORT

D Data Latch Q C Buffer intrare Citire PORT

Buffer ie=ire

Pin de intrare-ie=ire

Figura 2.11. Structura general[ a unui PORT de intrare-ie=ire.

2.8

Capitolul 2. Arhitectura microcontrollerelor Din considerente tehnologice (reducerea num[rului de pini), dar =i din motive de flexibilitate (posibilitatea modific[rii func\iei PORT-ului), pinii asocia\i unui PORT sunt bidirec\ionali, ei put`nd fi configura\i individual, fie ca pini de intrare, fie ca pini de ie=ire. }n afara func\iei de baz[ de intrare-ie=ire (General Purpose Input-Output GPIO), anumi\i pini pot avea func\ii alternative, corespunz[toare altor periferice incorporate (interfa\a serial[, convertorul analog-numeric, etc.). }n acest caz, controlul bufferelor de intrare =i de ie=ire este realizat de periferic. }n figura 2.11 este prezentat[ schema de principiu a unui PORT de intrare-ie=ire (un bit). Bistabilii de date (Data Latch) sunt grupa\i ]n SFR-ul de date asociat PORT-ului =i memoreaz[ datele de ie=ire. Opera\ia de scriere ]n PORT ]nseamn[ de fapt scrierea ]n data latch. Amplificatorul-tampon de ie=ire (buffer ie=ire) controleaz[ efectiv starea pinului de ie=ire. Principial, exist[ dou[ moduri de implementare a amplificatorului de ie=ire: ie=ire CMOS standard (push-pull) (fig. 2.12a); ie=ire cu drena ]n gol (open drain), cu sau f[r[ rezistor de sarcin[ (pull-up resistor) (fig. 2.12b).
Vcc Vcc Vcc

Intrare
P

Rs Ie=ire Intrare Ie=ire Intrare


N

Ie=ire
N

Control ie=ire a) b) c)

Figura 2.12. Amplificatorul (inversor) de ie=ire. Amplificatorul de ie=ire poate fi trecut, cu ajutorul semnalelor control ie=ire, ]n starea de mare impedan\[ (HiZ). Acest lucru permite utilizarea pinului fie ca intrare, fie ca ie=ire (pin bidirec\ional). Varianta de amplificator de ie=ire din figura 2.12b prezint[, ]n afara simplit[\ii, un alt avantaj: nu mai este necesar blocul de trecere ]n starea de ]nalt[ impedan\[ pentru utilizarea pinului ca pin de intrare. Este suficient s[ se ]nscrie 1 ]n data latch (amplificatorul fiind inversor, tranzistorul MOS-N va fi blocat) pentru a izola ie=irea amplificatorului de pin. O alt[ variant[ de amplificator de ie=ire este prezentat[ ]n figura 1.12c. Tranzistorul MOS de tip P este modificat astfel ]nc`t curentul debitat (source current) s[ fie mult mai mic dec`t cel absorbit (sink current). Pinul cu o astfel de configura\ie se nume=te semi-bidirec\ional. Amplificatorul-tampon de intrare (buffer intrare) realizeaz[ conversia de nivel a semnalului de intrare, TTL sau CMOS. Caracteristica de transfer poate fi normal[ (f[r[ histerezis) sau de tip trigger Schmitt. }n func\ie de microcontroller, anumite instruc\iuni citesc starea pinului, altele citesc valoarea din data latch. Principalele aplica\ii ale PORT-urilor de intrare-ie=ire sunt: comanda LED-urilor; comanda releelor; comanda motoarelor de curent continuu; citirea contactelor unei tastaturi. Comanda LED-urilor poate fi f[cut[ ]n mai multe moduri, ]n func\ie de tipul pinului de ie=ire utilizat pentru comand[ (figura 2.13).

2.9

Capitolul 2. Arhitectura microcontrollerelor


Vcc Vcc

Pin ie=ire R LED Pin ie=ire RB a)


Figura 2.13. Comanda LED-urilor.

R LED b)

Pin ie=ire LED c)

}n figura 2.14a este prezentat modul de comand[ al unui releu, iar ]n figura 2.14b, a unui micromotor de curent continuu.
Vcc Vcc

Rel Pin ie=ire RB a)


Figura 2.14. Comand[ releu =i motor.

Mot

Pin ie=ire RB b)

}n figura 2.15 este prezentat[ schema de principiu a unei tastaturi simple, utilizabil[ ]n cazul unui num[r redus de taste. Pinii de intrare corespunz[tori tastelor neap[sate vor fi ]n 1 iar cel corespunz[tor tastei ap[sate va fi ]n 0.
Vcc Vcc Vcc Vcc

Pini de intrare

Figura 2.15. Tastatur[ simpl[. }n cazul unui num[r mai mare de taste, se poate utiliza schema de tastatur[ matriceal[, prezentat[ ]n figura 2.16. Pe pinii de ie=ire se transmit succesiv combina\ii de bi\i ]n care doar un bit este 1, restul fiind 0. Pe pinii de intrare vor putea fi citite st[rile tastelor situate pe coloana selectat[, o tast[ ap[sat[ gener`nd un 1 pe pinul de intrare corespunz[tor.

2.10

Capitolul 2. Arhitectura microcontrollerelor

Pini de ie=ire

Pini de intrare

Figura 2.16. Tastatur[ matriceal[. 2.8.2. Num[r[toare Num[r[torul este un alt dispozitiv incorporat, prezent ]n toate variantele de microcontroller. Configura\ia de baz[ din figura 2.17 permite at`t num[rarea impulsurilor (modul num[r[tor counter), c`t =i m[surarea intervalelor de timp (modul cronometru timer).
TCY Mux Ext Sel Poart[ Divizor Num[r[tor Dep[=ire

Figura 2.17. Schema de principiu a unui num[r[tor. }n figura 2.18 este prezentat[ schema unui num[r[tor cu auto-]nc[rcare (auto reload). La dep[=irea capacit[\ii num[r[torului, con\inutul registrului PR este ]nc[rcat ]n num[r[tor (reload). Semanlul de dep[=ire poate fi conectat la un pin de ie=ire sau poate genera o ]ntrerupere. Se ob\ine ]n acest fel un divizor al semnalului de ceas controlat prin intermediul registrului PR.

Ceas

Num[r[tor

Dep[=ire

Pin ie=ire

}ntrerupere PR
Figura 2.18. Num[r[tor cu auto-]nc[rcare. Prezen\a unor registre suplimentare permite realizarea unor func\ii complexe, cum ar fi: captur[, comparator sau generator de impulsuri modulate ]n durat[ (Puls Wide Modulation PWM). Schema de principiu a unui circuit de captur[, care permite m[surarea duratei unui semnal de intrare, este prezentat[ ]n figura 2.19. La detec\ia unui front al semnalului de intrare, con\inutul num[r[torului este memorat (capturat) ]n registrul de captur[ REGCAP =i se genereaz[ un semnal de ]ntrerupere.

2.11

Capitolul 2. Arhitectura microcontrollerelor Semnalul selec\ie front permite alegerea tipului de tranzi\ie (10 sau 01) care va declan=a captura.
Ceas Pin intrare Divizor Num[r[tor

Captur[

Selec\ie front }ntrerupere

REGCAP

Figura 2.19. Circuit de captur[. }n figura 2.20 este prezentat[ schema unui circuit comparator. Atunci c`nd con\inutul num[r[torului coincide cu cel al registrului comparator REGCOMP, se modific[ starea pinului de ie=ire =i se genereaz[ un semnal de ]ntrerupere. Semnalul control ie=ire permite selec\ia modului de modificare a st[rii pinului de ie=ire la apari\ia semnalului de egalitate (1 - set,0 - reset sau basculare toggle).

Ceas

Num[r[tor

Pin ie=ire Logic[ ie=ire

Egalitate

Comparator

Control ie=ire }ntrerupere

REGCOMP

Figura 2.20. Circuit comparator. Schema unui generator de impuls modulat ]n durat[ (PWM) este prezentat[ ]n figura 2.21.

Reg. durat[ Comparator 1 Pin ie=ire Ceas Num[r[tor Reset Comparator 2 Reg. perioad[
Figura 2.21. Generator de impuls modulat ]n durat[ (PWM). Registrul perioad[ controleaz[ perioada impulsului de ie=ire iar registrul durat[ controleaz[ durata impulsului de ie=ire (duty cycle). Atunci c`nd con\inutul num[r[torului coincide cu con\inutul registrului perioad[ (ie=ire comparator 2), bistabilul de ie=ire este pus ]n starea 1 =i num[r[torul este resetat. C`nd con\inutul num[r[torului coincide cu con\inutul registrului durat[, bistabilul de ie=ire este pus ]n starea 0. }n acest fel, durata activ[ a impulsului de ie=ire este propor\ional[ cu valoarea ]nscris[ ]n registrul durat[ (figura 2.22). 2.12

R S

Capitolul 2. Arhitectura microcontrollerelor

Perioad[ t

Durat[ (Duty Cycle)


Principala aplica\ie a generatorului PWM este comanda motoarelor.

Figura 2.22. Forma semnalului de ie=ire PWM. O alt[ aplica\ie interesant[ este convertorul numeric-analogic. }n figura 2.23 este prezentat[ schema unui convertor PWM tensiune. Circuitul RC integreaz[ semnalul PWM, tensiunea de ie=ire fiind propor\ional[ cu factorul de umplere al semnalului PWM.

Intrare PWM

Ie=ire tensiune C

Figura 2.23. Convertor PWM tensiune. 2.8.3. Interfe\e seriale Interfa\a UART Circuitul UART (Universal Asynchronous Receiver/Transmitter) este un periferic ce implementeaz[ o interfa\[ serial[ asincron[ (asem[n[toare conexiunii standard RS-232C din PC-uri). Ea poate fi folosit[ pentru comunica\ia cu un PC, cu un terminal sau cu un alt sistem cu microcontroller. Transmisia utilizeaz[ dou[ linii de semnal (TXD transmisie date =i RXD recep\ie date) =i poate fi de tip simplex (numai ]ntr-un sens), semi-duplex (fie ]ntr-un sens, fie ]n altul) sau full-duplex (simultan ]n ambele sensuri). Pentru codificarea datelor se utilizeaz[ standardul NRZ (Non Return to Zero). Bi\ii de date sunt ]ncadra\i ]ntre un bit de start, cu valoarea 0 =i unul sau doi bi\i de stop, cu valoarea 1. Majoritatea circuitelor UART permit transmisia a 5 p`n[ la 8 bi\i de date, cu sau f[r[ bit de paritate.

Celul[-bit 1 0 1

Start

Bi\i de date
Figura 2.24. Codificarea NRZ.

Stop

Transmisia fiind asincron[ (nu con\ine informa\ie de sincronizare), este necesar[ relizarea unei durate a celulei-bit suficient de precis[ pentru a ob\ine o transmisie corect[. Viteza de transmisie a bi\ilor (inversul duratei unei celule-bit), se nume=te rat[ Baud =i se m[soar[ ]n bi\i pe secund[ (bits per second - bps). Cele mai utilizate viteze de transmisie sunt: 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 =i 115000 bps.

2.13

Capitolul 2. Arhitectura microcontrollerelor }n figura 2.25 este prezentat[ schema de principiu a unui circuit UART capabil de transmisie fullduplex. Generatorul ratei de transmisie/recep\ie (rata Baud) este realizat fie cu un timer de uz general, fie cu un timer special destinat acestui scop.

Generator rat[ Baud

Buffer transmisie Registru deplasare Registru deplasare Buffer recep\ie TXD RXD

Figura 2.25. Schema de principiu a unui circuit UART. Circuitul UART poate fi folosit direct ]n cazul transmisiei ]ntre subsisteme situate la distan\e mici (pe aceea=i plac[).

UART

TXD RXD

RXD TXD

UART

Figura 2.26. Comunica\ie serial[ utiliz`nd UART. Pentru distan\e mai mari (care nu dep[=esc ]ns[ 17 m.), se poate utiliza standardul RS-232C. Standardul a fost introdus, la ]nceputul anilor 1960, de EIA (Electronic Industries Association) =i define=te o interfa\[ standard ]ntre un echipament terminal, numit DTE (Data Terminal Equipment) =i un echipament de comunica\ie a datelor, numit DCE (Data Circuit-terminating Equipment).

UART DTE

Interfa\[ RS-232C Cablu serial Protocol RS-232C Interfa\[ RS-232C DCE

UART

Figura 2.27. Comunica\ie RS-232C ]ntre DTE =i DCE. Principalele specifica\ii mecanice ale standardului sunt: conector tip D cu 25 sau 9 pini, tat[ la DTE =i mam[ la DCE; lungimea maxim[ a cablului este de aproximativ 17m. Cablul de leg[tur[ DTE-DCE (cablul serial) este de tip pin la pin (pinul 1 DTE este conectat cu pinul 1 DCE, etc). Standardul RS-232C utilizeaz[, ]n afar[ de semnalele pentru transmisia/recep\ia datelor (TX =i RX), un num[r de alte semnale, destinate controlului fluxului de date dintre DTE =i DCE. Multe dintre aceste 2.14

Capitolul 2. Arhitectura microcontrollerelor semnale de control sunt specifice cazului ]n care echipamentul DCE este un MODEM (MODulatorDEModulator). MODEM-ul este un echipament de comunica\ie care utilizeaz[ o linie telefonic[ obi=nuit[ pentru transmisia datelor la distan\[. Semnalul analogic din linie este modulat de c[tre MODEM-ul emi\[tor =i demodulat de cel receptor. }n tabelul 2.1 sunt prezentate principalele semnale utilizate de protocolul RS-232C. Pin D-25 2 3 4 5 6 7 8 20 22 Pin D-9 3 2 7 8 6 5 1 4 9 Semnal TX RX RTS CTS DSR SG CD DTR RI Direc\ie DTEDCE DCEDTE DTEDCE DCEDTE DCEDTE DCEDTE DTEDCE DCEDTE

Tabelul 2.1. Principalele semnale ale protocolului de comunica\ie RS-232C. Semnifica\ia acestor semnale este: TX (Transmitted Data) semnal activ atunci c`nd datele sunt transmise de la DTE c[tre DCE. RX (Received Data) - semnal activ atunci c`nd datele sunt transmise de la DCE c[tre DTE. RTS (Request To Send) semnal generat de DTE care cere echipamentului DCE s[ se preg[teasc[ pentru tramsmisia datelor. C`nd DCE este preg[tit, el va activa semnalul CTS. CTS (Clear To Send) semnal generat de DCE care indic[ faptul c[ acesta este preg[tit pentru transmisia datelor. DSR (DCE Ready sau Data Set Ready) semnal generat de DCE. }n cazul ]n care echipamentul DCE este un MODEM, semnalul DSR arat[ c[ MODEM-ul este conectat. DTR (DTE Ready) semnal generat de DTE atunci c`nd dore=te s[ stabileasc[ un canal de comunica\ie. }n cazul ]n care dispozitivul DCE este un MODEM, semnalul DTR prepar[ MODEM-ul pentru conectare la linia telefonic[. Dezactivarea semnalului DTR determin[ ca MODEM-ul s[ ]nchid[ conexiunea. CD (Received Line Signal Detector sau Carrier Detect) semnal generat de MODEM care indic[ prezen\a purt[toarei ]n linia telefonic[. RI (Ring Indicator) semnal generat de modem la recep\ia unui apel pe linia telefonic[. SG (Signal Ground) mas[ semnal. Principalele specifica\ii electrice sunt: semnalele sunt active pe 0; codificarea datelor utilizeaz[ logica negativ[ =i se face astfel: nivelul logic 0 corespunde unei tensiuni cuprinse ]ntre +3 =i +25 V (starea Space) iar nivelul logic 1 corespunde unei tensiuni cuprinse ]ntre 3 =i 25 V(starea Mark) (figura 2.28); zona cuprins[ ]ntre 3 V =i +3 V este considerat[ regiune de tranzi\ie. Conversia semnalelor de la nivelele TTL/CMOS la nivelele RS-232C este realizat[ de circuite specializate cum ar fi MAX232.

2.15

Capitolul 2. Arhitectura microcontrollerelor

+25

U[V] 0

"0" logic (Space)

Regiune de tranzi\ie 0
-3

+3

"1" logic (Mark)


-25

Figura 2.28. Codificarea datelor ]n standardul RS-232C. Cu ajutorul MODEM-ului se pot realiza transmisii de date la distan\[ foarte mare, utiliz`nd linii telefonice at`t analogice c`t =i digitale. }n figura 2.29 este prezentat[ schema unei conexiuni la distan\[ ]ntre dou[ calculatoare.

PC (DTE)

RS-232C

MODEM (DCE)

Linie telefonic[ PC (DTE) RS-232C MODEM (DCE)

Figura 2.29. Conexiune la distan\[ prin MODEM. }n figura 2.30 este prezentat[ schema unei conexiuni null MODEM ]ntre dou[ echipamente DTE.

TD RD SG DTR DSR CD RTS CTS DTE

TD RD SG DTR DSR CD RTS CTS DTE

Figura 2.30. Conexiune null MODEM. Conexiunea null MODEM este utilizat[ frecvent =i pentru conectarea unui sistem cu microcontroller cu un PC. 2.16

Capitolul 2. Arhitectura microcontrollerelor Interfa\a I2C Standardul I2C (Inter IC IIC sau I2C), dezvoltat de firma Philips, define=te o magistral[ simpl[, bidirec\ional[, care utilizeaz[ doar dou[ linii de comunica\ie. Exist[ o mare varietate de circuite dotate cu o astfel de interfa\[, cum ar fi: microcontrollere; circuite de uz general cum ar fi: drivere LCD, expandoare I/O, memorii RAM sau EEPROM, circuite de conversie a datelor, etc.; circuite specializate, cum ar fi: circuite de acord digital =i procesoare de semnal pentru sistemele audio-video, generatoare DTMF pentru telefonie, etc. Principalele caracteristici ale magistralei I2C sunt: necesit[ doar dou[ linii: o linie serial[ de date (Serial Data Line - SDA) =i o linie serial[ de ceas (Serial Clock Line - SCL); fiecare dispozitiv conectat la magistral[ este unic identificat printr-o adres[ de 7 bi\i; ]ntre dispozitive exist[ permanent o rela\ie simpl[ de tip master-slave; dispozitivele de tip master opereaz[ fie ca emi\[toare (master transmitters), fie ca receptoare (master receivers); magistrala poate lucra ]n regim multi-master prin includerea unor mecanisme de detec\ie a coliziunilor =i de arbitraj al magistralei pentru a preveni deformarea datelor ]n cazul ]n care mai multe circuite master ]ncep simultan transmisia; transferul de date este serial, orientat pe octet =i se poate realiza cu viteze de p`n[ la 100 Kbps ]n modul standard sau p`n[ la 400 Kbps ]n modul rapid. Liniile SDA =i SCL sunt bidirec\ionale =i sunt conectate la plusul tensiunii de alimentare prin rezistoare pull-up (figura 2.31). Etajele de ie=ire ale dispozitivelor conectate la magistral[ trebuie s[ fie de tip colector ]n gol sau dren[ ]n gol pentru a permite realizarea func\iei +I cablat (wired-AND).
Vdd

SDA SCL

RP

RP

SCL SDA Dispozitiv I2C

SCL SDA Dispozitiv I2C

Figura 2.31. Topologia magistralei I2C. C`nd magistrala este liber[ (nu se efectueaz[ nici o transmisie), liniile SDA =i SCL sunt ]n starea 1. Semnalul de pe linia de date SDA trebuie s[ fie stabil pe perioada c`t semnalul de ceas SCL este ]n 1. Datele se pot modifica numai ]n perioada ]n care SCL este ]n 0 (figura 2.32).

Date stabile SDA SCL

Datele se pot modifica

Figura 2.32. Transmisia unui bit pe magistrala I2C. Transmisia pe magistrala I2C este ]ncadrat[ ]ntre dou[ st[ri unice: condi\ia de START =i condi\ia de STOP. O tranzi\ie 10 pe linia SDA c`t timp linia SCL este ]n 1 define=te condi\ia de START S, iar o tranzi\ie 01 pe SDA c`nd SCL este ]n 1, define=te condi\ia de STOP P (figura 2.33). 2.17

Capitolul 2. Arhitectura microcontrollerelor

SDA SCL S START


Figura 2.33. Condi\iile de START =i STOP. Transmisia datelor se face pe octe\i (8 bi\i), bitul cel mai semnificativ fiind transmis primul. Num[rul de octe\i transfera\i nu este limitat, fiecare transfer de octet fiind ]nso\it obligatoriu de o confirmare (acknowledgement ACK). Impulsul de ceas asociat secven\ei de confirmare este generat de master. Emi\[torul elibereaz[ linia de date (SDA=1) pe durata impulsului de ceas corespunz[tor secven\ei de confirmare iar receptorul, poate s[ genereze un 0 pe SDA pe durata acestui impuls pentru a confirma recep\ia octetului (ACK), sau poate elibera linia (SDA=1) pentru a nu confirma transmisia (Not ACK - NAK) (figura 2.34).

P STOP

SDA emi\[tor SDA receptor SCL master 8

NAK ACK 9

Figura 2.34. Secven\a de confirmare (acknowledgement). }n figura 2.35 este prezentat un transfer complet de date pe magistrala I2C. Dispozitivul I2C-master controleaz[ linia SCL, gener`nd impulsurile de ceas pentru bi\ii de date =i pentru secven\ele de confirmare.
NAK SDA MSB ACK receptor ACK receptor

SCL S

9 ACK

9 ACK P

Figura 3.35. Transferul datelor pe magistrala I2C. Transmisia poate fi divizat[ ]n dou[ secven\e: cea de adresare =i cea de transfer date. Secven\a de adresare const[ ]n transmisia de c[tre master, dup[ secven\a de start, a unui octet care con\ine adresa pe 7 bi\i a dispozitivului slave (bi\ii 71) =i bitul de direc\ie RW (bitul 0). Dac[ RW=1, transmisia de date se va face de la slave c[tre master (citire Read), iar dac[ RW=0, transmisia se face de master c[tre slave (scriere Write). Aceast[ schem[ de adresare permite conectarea la magistrala I2C a cel mult 127 de dispzitive. }n practic[, num[rul de dispozitive este mai redus deoarece anumite adrese sunt rezervate. Anumite dispozitive utilizeaz[ un sistem de adresare pe 10 bi\i care permite conectarea la magistrala I2C a unui num[r de 1024 de dispozitive. }n acest caz, secven\a de adresare presupune transmisia de c[tre master a doi octe\i: un octet care reprezint[ o adres[ rezervat[ (general call address) ce include 3 bi\i ai adresei slave =i un octet care cuprinde restul de 7 bi\i ai adresei slave. Pe durata secven\ei de confirmare, circuitul selectat (cel a c[rui adres[ coincide cu adresa transmis[ de master) va r[spunde cu ACK=0. 2.18

Capitolul 2. Arhitectura microcontrollerelor Dup[ adresare, urmeaz[ secven\a de transfer de date, sensul transferului fiind precizat de valoarea bitului RW. }n figurile 3.36 =i 3.37 sunt prezentate transferurile de date de la master la slave (scriere), respectiv de la slave la master (citire), utiliz`nd schema de adresare pe 7 bi\i.

Adresare S Adres[ RW ACK Data 1

Transmisie date ACK Data n ACK P Stop

RW=0 scriere Adres[ SLAVE Start

Linia SDA este controlat[ de MASTER Linia SDA este controlat[ de SLAVE
Figura 3.36. Transfer de date de la master la slave.

Adresare S Adres[ RW ACK Data 1

Transmisie date ACK Data n ACK P Stop

RW=1 citire Adres[ SLAVE Start

Linia SDA este controlat[ de MASTER Linia SDA este controlat[ de SLAVE
Figura 3.37. Transfer de date de la slave la master. }n cazul transferului de la master la slave (figura 3.36), dispozitivul slave receptor poate ini\ia oprirea transferului ]n orice moment, prin generarea unei secven\e NAK dup[ ultimul octet pe care ]l mai poate recep\iona. Dispozitivul master va genera secven\a de stop, termin`nd transmisia. Interfa\a SPI Standardul SPI define=te o interfa\[ sincron[ de comunica\ie ]ntre un circuit master (microcontroller ]n majoritatea cazurilor) =i un dispozitiv slave. Interfa\a cuprinde urm[toarele linii de semnal: linia de selec\ie dispozitiv slave (Chip Select CS); este controlat[ de master (ie=ire master, intrare slave) =i selecteaz[ dispozitivul slave cu care se va face transferul de date; linia de ceas (Serial ClocK SCK); este controlat[ de master (ie=ire master, intrare slave) =i con\ine semnalul de sincronizare a transferului; linia de date intrare (Serial Data In - SDI); este controlat[ de master (ie=ire master, intrare slave) =i permite transferul datelor de la master c[tre slave; linia de date ie=ire (Serial Data Out - SDO); este controlat[ de slave (ie=ire slave, intrare master) =i permite transferul datelor de la master c[tre slave. }n figura 3.38 este prezentat[ schema unei interfe\e SPI cu un singur dispozitiv slave. Schema poate fi extins[ la mai multe dispozitive SPI-slave prin utilizarea unor linii CS suplimentare.

2.19

Capitolul 2. Arhitectura microcontrollerelor

CS SCK SDO SDI

SS SCK MOSI MISO

CS SCK SDI SDO

Master SPI Slave SPI SS - Slave Select MISO - Master In, Slave Out MOSI - Master Out, Slave In
Figura 2.38. Interfa\a SPI. }n figura 3.39 sunt prezentate formele de und[ pe liniile de interfa\[ SPI.

CS SCK SDI SDO HiZ


Figura 2.39. Formele de und[ pe magistrala SPI. Interfa\a SPI permite viteze de transfer de p`n[ la 20 Mbps, num[rul de bi\i dintr-un transfer fiind de obicei multiplu de 8. Num[rul liniilor de interfa\[ poate fi redus prin conectarea ]mpreun[ a liniilor SDI =i SDO (figura 2.40). Aceast[ configura\ie este posibil[ deoarece, atunci c`nd linia SDI este activ[ (transfer de la master c[tre slave), linia SDO este ]n starea de mare impedan\[. Circuitul master SPI poate utiliza o singur[ linie bidirec\ional[ pentru transferul de date.

CS SCK I/O Data Master SPI R

CS SCK SDI SDO Slave SPI

Figura 2.40. Interfa\[ SPI cu 3 linii.

2.20