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

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).

AD AP

DO
A

RALU

DI

AA

UC

Procesor

SO SI

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

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 (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

Clock In

RF

Clock Out

RS

C2

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

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, S1S4 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 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

Vcc
Buton RESET

C
RESET

RESET
Buton RESET

R
Microcontroller

C
Microcontroller

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

Data Bus

Func\ie alternativ[
Control ie=ire

D
Data Latch Q

Scriere PORT

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) (fig. 2.12b).
Vcc

Vcc

Intrare

Rs

Ie=ire
N

Vcc

Intrare
Ie=ire
Intrare

Ie=ire

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

Vcc

Pin ie=ire
R

LED
b)

LED
Pin ie=ire

Pin ie=ire

RB

LED

a)

c)

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

Rel
Pin ie=ire

Pin ie=ire
RB

RB
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

Poart[

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

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
Pin ie=ire
Ceas

R
S

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

Capitolul 2. Arhitectura microcontrollerelor

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

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.

Start

Celul[-bit
1 0 1

Bi\i de date

Stop

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

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

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

TX

DTEDCE

RX

DCEDTE

RTS

DTEDCE

CTS

DCEDTE

DSR

DCEDTE

SG

CD

DCEDTE

20

DTR

DTEDCE

22

RI

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)
+3

Regiune de
tranzi\ie 0

-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

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 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

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 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

NAK

SDA
receptor
SCL
master

ACK
8

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
ACK
receptor

SDA
MSB

SCL

9
ACK

ACK
receptor

9
ACK

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[

Transmisie date

RW ACK

Data 1

ACK

Data n

RW=0 scriere
Adres[ SLAVE
Start

ACK P
Stop

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[

Transmisie date

RW ACK

Data 1

ACK

Data n

RW=1 citire
Adres[ SLAVE
Start

ACK P
Stop

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

CS
SCK
SDI
SDO
Slave SPI

Figura 2.40. Interfa\[ SPI cu 3 linii.

2.20

S-ar putea să vă placă și