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 – R egisters egisters 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
FL
RALU
F
DO
A CK C
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
RALU
DI
AD AP A C F
AA
UC I
Procesor
SO SI
Figura 2.2. Procesorul: DI – date intrare, DO – date ie=ire; A – adrese registre, C – comenzi; F – indicatori i ndicatori (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 f apt 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 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 (S pecial Function R egisters egisters – 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 (R educed educed 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[ 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
n-1 n n+1
SR
CALL revenire
PC k k+1
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 (50 ÷100 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.5 ÷1 %). 2.5
Capitolul 2. Arhitectura microcontrollerelor
C1
Clock In
R F
Q
Clock Out
R S
C2
Microcontroller
Figura 2.7. Oscilator cu cuar\ sau rezonator piezoceramic.
Vcc R Clock In
C
Microcontroller
Figura 2.8. Oscilator RC. Oscilatorul RC (figura 2.8) reprezint[ cea mai ieftin[ dar =i cea mai pu\in stabil[ solu\ie (10 ÷20%).
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 (4 ÷12 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
P2 S1
P1
P2 S2
P1
P2
P1
S3
P2 S4
P1
P2 S5
TCY
Figura 2.9. Ciclu instruc\iune 8051. P1,P2 - faze, S1÷S4 – st[ri.
2.6
P1 S6
P2
P1 S1
P2
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 Pri ncipalele 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: eset eset – POR ); ); • alimentarea microcontrollerului (Power On R • sc[derea tensiunii de alimentare sub o anumit[ valoare ( Brown-Out R eset eset – 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
C RESET
RESET Buton RESET
R Microcontroller
C Microcontroller
Figura 2.10. Circuite de RESET. 2.7.3. Circuitul de supraveghere 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, ]n timp real sau multitasking . esen\ial ]n realizarea sistemelor ]n }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 R equest). equest). Ca r[spuns la cerea de ]ntrerupere, procesorul apeleaz[ un subprogram numit subprogram de servire a ]ntreruperii (Interrupt Service R outine outine – 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 ( R eal eal 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
Data Bus Scriere PORT
D Data Latch Q C
Func\ie alternativ[ Control ie=ire
Buffer ie=ire
Pin de intrare-ie=ire
Buffer intrare Citire PORT 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) r esistor) (fig. 2.12b). Vcc
Vcc Vcc
Intrare
R s
P
Ie=ire N
Vcc Vcc
P
Intrare Ie=ire Intrare
Ie=ire
N
N
b)
c)
Control ie=ire a)
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
Pin ie=ire R
R
Vcc
LED b)
LED Pin ie=ire Pin ie=ire
R B
R LED c)
a)
Figura 2.13. Comanda LED-urilor. }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
Mot Mot
Rel Pin ie=ire
Pin ie=ire R B
R B
a) b) Figura 2.14. Comand[ releu =i motor. }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
Divizor
Num[r[tor
Ext Sel
Dep[=ire
Po art[
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 (1 →0 sau 0→1) care va declan=a captura. Ceas Pin intrare
Num[r[tor
Captur[
Divizor
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 Pin ie=ire Logic[ ie=ire
Egalitate
Control ie=ire }ntrerupere
Num[r[tor
Comparator
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 Ceas
R Q S
Num[r[tor
Pin ie=ire
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
Capitolul 2. Arhitectura microcontrollerelor
U
Perioad[
t Durat[ (Duty Cycle) Figura 2.22. Forma semnalului de ie=ire PWM. Principala aplica\ie a generatorului PWM este comanda motoarelor. 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
R
C
Figura 2.23. Convertor PWM – tensiune. 2.8.3. Interfe\e seriale Interfa\a UART
Circuitul UART (Universal Asynchronous R eceiver/ eceiver/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 R eturn eturn 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.
U
0
Start
Celul[-bit 1 1 0 1
0
Bi\i de date
0
1
0
1
Stop
t
Figura 2.24. Codificarea NRZ. 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
TXD
Registru deplasare
RXD
Buffer recep\ie 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
R XD UART TXD
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
Interfa\[ RS-232C DTE
UART
Cablu serial Protocol RS-232C Interfa\[ RS-232C
DCE 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 Pin D-9 Semnal Direc\ie 2 3 TX DTE→DCE 3
2
RX
DCE→DTE
4
7
RTS
DTE→DCE
5
8
CTS
DCE→DTE
6
6
DSR
7 8
5 1
SG CD
DCE→DTE -
20
4
DTR
22
9
RI
DCE→DTE DTE→DCE
DCE→DTE 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 (R eceived eceived Data) - semnal activ atunci c`nd datele sunt transmise de la DCE c[tre DTE. RTS (R equest equest 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. eady) – semnal generat de DCE. }n cazul ]n care echipamentul DCE DSR (DCE Ready sau Data Set R eady) este un MODEM, semnalul DSR arat[ c[ MODEM-ul este conectat. DTR (DTE R eady) eady) – 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[. t elefonic[. ing Indicator) – semnal generat de modem la recep\ia unui apel pe linia telefonic[. RI (R ing 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
U[V]
0
1
1
0
1
0
0
1
0
1
+25
"0" logic
(Space) +3
Regiune de tranzi\ie 0
t
-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 Vdd
SDA SCL
R P
R P
SCL SDA
SCL SDA
Dispozitiv I2C
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
Datele se pot modifica
SDA SCL 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 “1”→”0” pe linia SDA c`t timp linia SCL este ]n “1” define=te condi\ia de START “S”, iar o tranzi\ie “0”→”1” 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
P STOP
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 (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).
SDA emi\[tor SDA receptor SCL master
NAK ACK 8
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
ACK recep to r
MSB 1
SCL S
2
8
9 ACK
ACK recepto r 1
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 7 ÷1) =i bitul de direc\ie RW (bitul 0). Dac[ RW=1, transmisia de date se va face de la l a slave c[tre master (citire – R ead), ead), 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 util iz`nd schema de adresare pe 7 bi\i.
Adresare S
Adres[
Transmisie date
RW AC A CK
Data 1
ACK
Data n
ACK P
RW=0 scriere
Adres[ SLAVE Start Linia SDA este controlat[ de MASTER
Stop
Linia SDA este controlat[ de SLAVE Figura 3.36. Transfer de date de la master la slave.
Adresare S
Adres[
Transmisie date
RW AC ACK
Data 1
ACK
Data n
ACK P
RW=1 citire
Adres[ SLAVE Start Linia SDA este controlat[ de MASTER
Stop
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
SS CS CS SCK SCK SCK MOSI SDO SDI MISO 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