You are on page 1of 5

Circuite periferice externe

Circuitele periferice externe sporesc facilităţile care în mod normal lipsesc micro-
controlerului. Aceste circuite sunt disponibile cu interfeţe externe paralel sau seriale.
Cele mai răspândite interfeţe paralel sunt pe 8 biţi şi au fost dezvoltate de Intel (şi oferite şi de
Tundra sau OKI) şi Motorola (oferite şi de SGS Thomson). Variantele NMOS ale acestor
circuite au un consum ridicat, de aceea sunt recomandate variantele CMOS. Calculatorul IBM
PC original a fost dezvoltat pe o magistrală Intel, aceste circuite fiind disponibile şi azi şi
funcţionând foarte bine cu microcontrolere pe 8 biţi.
Perifericele care utilizează o interfaţă serială se pot conecta practic la orice
microcontroler, fie că acesta are suportul hardware pentru respectiva interfaţă sau nu, deoarece o
serie de rutine de comunicare sunt oferite gratuit de producător sau sunt disponibile pe Internet.
• Timer (magistrală paralel): conţine în cazul tipic până la 3 timere pe 16 biţi care pot fi
utilizate independent sau în diverse combinaţii. Intel 8253 şi 8254 sunt exemple tipice de astfel
de timere.
• UART (magistrală paralel): conţine unul sau două UART independente. Aceste circuite
externe oferă liniile de handshaking specifice portului serial şi care nu sunt prezente la
implementările UART interne. Există UART cvadruple sau octale cu rate de transfer de până la 3
Mb/s pentru aplicaţii de viteză. Intel 8251 şi derivatele sale sunt astfel de exemple.
• Extensie de port paralel (magistrală paralel sau mai nou serie) denumită de exemplu PPI
- Parallel Port Interface - măreşte numărul de linii I / O digitale. Exemplul tipic este Intel 8255
care oferă 24 de linii I / O suplimentare la o capsulă de 40 de pini (interfaţă paralel). Dacă este
posibil, este recomandabilă utilizarea variantei CMOS faţă de cea clasică NMOS (notată de Intel
8255A) deoarece consumul este semnificativ redus.
• ADC Convertor analog-digital - Analog-digital converter (interfaţă paralel sau serie):
Oferă facilităţi care deocamdată nu sunt tipice convertoarelor interne: rezoluţie pe 12 biţi sau mai
mult, zgomot redus şi viteză mai mare de operare.
• RTC Ceas de timp real (interfaţă serie): un circuit cu oscilatorul cu cuarţ şi baterie
proprie, care memorează data şi ora curentă.
• Memorii nevolatile - Non-Volatile RAM (magistrală paralelă sau serie): Memorii
FLASH sau EEPROM care menţin informaţia şi când nu sunt alimentate. Interfaţa paralel oferă
viteză de operare mult mai mare, dar variantele seriale sunt mai ieftine şi se potrivesc cu
microcontrolerele de dimensiuni reduse.
• O serie de circuite TTL, mai ales din familiiele 74HC, HCT, pot fi utilizate direct cu
microcontrolerul pentru a rezolva probleme I / O - de obicei se constată că microcontrolerul
dispune de prea puţini pini I / O, iar un microcontroler "mai mare" este prea scump. Aceste
circuite sunt în cazul tipic, tipic latch-uri, multiplexoare, registre de deplasare, decodificatoare şi
codificatoare. De exemplu circuitul 74HCT574 poate oferi 8 ieşiri numerice suplimentare, iar
registrul de deplasare 74HCT595 poate fi folosit pentru comanda prin doar trei fire a unui mare
număr de ieşiri digitale (deşi mai lent decât utilizând ieşiri directe, paralel).

Arhitecturi de microcontrolere

Există două tipuri de arhitecturi pentru microprocesoare şi microcontrolere: Conform
arhitecturii von Neumann (figura 1.18), memoria de date şi cea de prpgram folosesc aceeaşi
magistrală, deci orice locaţie de memorie trebuie să fie definită de o adresă unică. Deşi oferă un
model mai simplu de înţeles şi posibilităţi interesante, arhitectura von Neumann are o eficienţă
mai scăzută. Un PC utilizând procesoare din familia x86 este un exemplu tipic de sistem cu
arhitectură von Neumann, la care locaţiile I / O sunt accesate prin instrucţiuni de tip IN şi OUT.
Dintre microcontrolere, Motorola HC05 este un exemplu de arhitectură von Neumann pe 8 biţi.
Conform arhitecturii Harvard (figura 1.19), memoria de date şi cea de cod sunt accesate
prin magistrale separate, ceea ce permite unităţii centrale să opereze cu ambele memorii
simultan, sporind eficienţa prelucrării. Unicul dezavantaj al acestei abordări este dificultatea
implementării de tabele de date în memoria de program (lookup tables) - o instrucţiune specială
este utilizată în acest caz. într-un procesor Harvard, adresa OH pentru memoria de program şi
adresa OH din memoria de date pot coexista fară probleme. Majoritatea microcontrolerelor
utilizează,arhitectura Harvard datorită eficienţei sporite.

Magistrale externe

O magistrală externă permite conectarea la controler a unui număr practic nelimitat de
circuite periferice, limitările provenind mai ales de la dimensiunea plăcii," mărimea şi numărul
circuitelor decât de la caracteristicile electrice ale magistralei. Există microcontrolere cu şi fară
magistrală externă disponibilă.
Avantajele magistralei externe:
• flexibilitatea - numărul, tipul şi performanţele perifericelor pot fi alese de utilizator;
• preţul unui microcontroler fară memorie program este extrem de redus;
• programarea şi reprogramarea se face prin intermediul unei memorii EPROM. în
consecinţă nu este necesar un echipament dedicat (şi uneori scump) de programare.
Dezavantajele magistralei externe:
• costul final al plăcii este ridicat a o producţie de masă datorită numărului relativ mare
de circuite;
• programarea EPROM este greoaie (necesită un soclu, un programator, ştergere 30 de
minute la ultraviolete);
• ciclul editare cod sursă - simulare - programare - testare este relativ lung, de aceea
companiile medii şi mari s-au orientat în special pe soluţii cu memorii FLASH în microcontroler
şi programare în proiectul final folosind pini dedicaţi şi o interfaţă cât mai simplă (JTAG, BDM,
sau câţiva pini ai portului paralel de la un PC).

Stocarea programului (codului)

Un microcontroler cu magistrală externă poate stoca programul (denumit şi cod code)
într-o memorie EPROM sau pentru punerea în funcţiune şi testarea aplicaţiei într-un SRAM care
simulează un EPROM.
Varianta OTP (One-Time Programmable) se poate programa o singură dată (o greşeală
în program implică aruncarea cipului). Opţiunea OTP este atractivă pentru serii de fabricaţie
medii-mari deoarece preţul lor este în continuă scădere. OTP se obţine din varianta EPROM
înlocuind capsula ceramică şi geamul de cuarţ extrem de scumpe cu o capsulă ieftină din plastic.
Varianta programabilă prin mască este folosită doar la producţia de masă-programarea
se face prin mască la producător pe baza codului furnizat de utilizator. Deşi sunt mai ieftine
decât în varianta OTP, proiectarea unei măşti costă cel puţin 1.000 USD, iar cantitatea minimă la
o comandă este de 1.000 bucăţi.
Varianta cu memorie FLASH este steaua momentului actual. Un microcontroler cu
memorie FLASH se poate reprograma de cel puţin 1000 de ori (tipic 100.000 de ori), deci codul
poate fi modificat fară a arunca vreun circuit. Preţul lor este în continuă scădere.
Atât varianta fară ROM, cât mai ales cea FLASH oferă avantajul că microcontrolerul nu
trebuie îndepărtat de pe placa de circuit imprimat la modificarea codului, aspect util mai ales în
cazul controlerelor cu mulţi pini care nu pot fi montate pe socluri (soluţie scumpă).

Structură CISC şi RISC

Un procesor CISC (Complex Instruction Set Computer) utilizează un set de complex de
instrucţiuni (de ordinul sutelor). Familia Intel Pentium este cel mai cunoscut exemplu de
procesoare CISC. In contrast, un procesor RISC (Reduced Instruction Set Computer) oferă
câteva zeci de instrucţiuni simple, codificate tipic pe un singur cuvânt de 12, 14 sau 16 biţi (este
utilizată evident arhitectura Harvard dacă magistrala de date are altă lăţime decât cea de cod). Un
procesor CISC codifică instrucţiunile pe 1, 2, 3 sau 4 octeţi.
în general microcontrolerele RISC sunt proiectate pentru viteza mare de prelucrare şi mai puţin
pentru uşurinţa exploatării, dar un set de instrucţiuni redus sau mai greu de înţeles este un preţ
modest pentru eficienţa obţinută (microcontrolere Microchip PIC sau Atmel AVR).

Acumulatorul

Atunci când sunt comparate seturile de instrucţiuni ale microcontrolerelor, una din
diferenţele majore constă în abilitatea unităţii centrale de a executa operaţiile numerice şi logice
într-un singur registru, numit acumulator (accumulator), respectiv de a putea folosi orice registru
sau cuvânt din RAM pentru aceste operaţii.
Avantajul utilizării acumulatorului (figura 1.20) constă în eficienţa codării programului - sunt
posibile instrucţiuni scurte, pe 8 biţi, pe când în celălalt caz sunt necesare instrucţiuni codificate
pe mai mulţi octeţi. Trebuie totuşi subliniat că în cazul acumulatorului pe 8 biţi operaţiile pe 16
sau 32 de biţi se execută mai dificil, iar codul rezultat este mai greu de descifrat (citit).
Tendinţa spre microcontrolere cu arhitectură Harvard şi structură RISC se va completa probabil
în viitor cu cea de diminuare sau chiar desfiinţare a rolului acumulatorului. Microcontrolerele
Atmel AVR şi Zilog Z8 sunt astfel de exemple.

Stiva

Toate microcontrolerele (şi microprocesoarele) au o stivă (stack) - o zonă de memorie
RAM unde sunt memorate adresele de întoarcere din subrutinele apelate prin adresele de
revenire din rutinele de tratare a întreruperilor şi din care sunt extrase aceste adrese la încheierea
rutinelor deja menţionate (figura 1.21). Anumite microcontrolere mici cu RAM redus
implemetează o stivă miniaturală de minim 2 locaţii (numită de obicei hardware stack) şi care
limiteză sever numărul de rutine imbricate care pot fi executate. Majoritatea procesoarelor
necesită iniţializarea unui indicator de stivă la pornire, care este apoi actualizat în funcţie de
introducerea datelor în stivă (Push), respectiv extragerea datelor din stivă (Pop).

OBSERVAŢIE: Atenţie, stiva se poate dezvolta în sus sau în jos !
Dacă memoria RAM este redusă, estimarea dimensiunii maxime a stivei este esenţială.
Rezervarea unui spaţiu corespunzător pentru stivă este următorul pas. Există deja
microcontrolere care semnalizează depăşirea superioară sau inferioară a stivei (PIC18F452 este
un asemenea exemplu, deşi aici stiva este organizată separat, este o stivă hardware şi nu în
memoria RAM). Dacă stiva şe găseşte în RAM şi nu sunt luate măsuri de prevedere
corespunzătoare, ea poate fi alterată de variabilele din RAM sau mai probabil poate ajunge să
altereze ea zone utilizate din RAM.
Majoritatea procesoarelor permit accesul direct la stivă prin instrucţiuni de tip Push
(introducere/memorare în stivă) şi Pop (extragere din stivă). Aceasta este o modalitate extrem de
comodă de salvare temporară a datelor dacă nu sunt disponibile registre. O serie de
microcontrolere salvează în stivă automat la apariţia unei întreruperi starea curentă (acumulatorul
şi indicatorii de condiţie, cel puţin).

Vectori

Un vector (vector) este o secvenţă specială de program executată de microcontroler după
Reset sau o întrerupere. Prin aceasta se asigură execuţia predictibilă, repetabilă dar şi flexibilă a
codului. Un vector se poate prezenta în una din următoarele forme:
• o secvenţă de cod, care în majoritatea cazurilor este un salt (jump, branch, goto), a cărui
adresă este clar precizată în memoria program a procesorului. Această instrucţiune determină
execuţia rutinei de tratare a evenimentului (Reset sau întrerupere).
• o adresă conţinută într-o locaţie predefmită care indică rutina de tratare a întreruperii.
La apariţia evenimentului, procesorul va încărca în PC adresa respectivă şi va rula rutina de
tratare corespunzătoare.
Toţi vectorii sunt de obicei memoraţi într-o zonă compactă, denumită tabela vectorilor de
întrerupere. Adresa tabelei se specifică în codul sursă prin intermediul directivei ORG.

Alegerea microcontrolerului potrivit
Alegerea microcontrolerului potrivit pentru o aplicaţie dată nu este o sarcină uşoară.
Criteriile de selecţie sunt diferite de cele referitoare la dezvoltarea unei aplicaţii software pe PC,
setul de instrucţiuni al microcontrolerului fiind mult mai puţin important decât alţi factori.

Următoarele criterii trebuie analizate:
Instrumente de dezvoltare: Reprezintă probabil cel mai important criteriu de selecţie.
Dacă un sistem de dezvoltare se poate realiza în condiţii de amator la un preţ înjur de 100 USP,
dezvoltarea unui asamblor, a unui mediu integrat sau a unui compilator depăşesc cu mult
posibilităţile financiare ale unei.singure persoane. Recomand acea variantă în care aceste
programe se găsesc gratuit sau la un preţ modic, în aceste condiţii combinaţia dintre un software
gratuit şi un microcontroler FLASH programabil serial este imbatabilă ca preţ. Un asemenea
programator poate costa cel mult 15 USD, iar un microcontroler între 1 şi 5 USD. Exemple de
asemenea microcontrolere sunt cele produse de Microchip (PIC), de Atmel (AVR) sau Hitachi
(H8).
La noi în ţară familia PIC este disponibilă la o serie de distribuitori naţionali (Vitacom -
www.vitacom.ro, Cornet - www.comet.srl.ro, în Timişora la Datronic -www.electronic.ro).
Pentru o abordare profesională un emulator este o achiziţie utilă (dar scumpă), de aceea folosind
cu pricepere un debugger se vor putea rezolva cele mai multe probleme. Debugger-ul Microchip
ICD2 costă circa 100 USD, permite rularea pas cu pas a programului, programarea în montaj a
microcontrolerului, setarea unui punct de întrerupere şi mai multe ferestre de inspecţie a
variabilelor, memoriei RAM, ROM, etc. Se conectează la PC prin portul serial sau USB şi i se
poate asocia un soclu ZIF (Zero Insertion Force) exterior, devenind programator. Această
variantă este cea mai bună opţiune pentru firme mici - medii.
Preţ şi accesibilitate: Microcontrolerul trebuie să fie în fabricaţie de cel puţin un an -
pentru a fi siguri că orice defect minor a fost deja corectat. Trebuie să se găsească uşor la
distribuitori şi în cantităţi suficiente. Preţul său trebuie să fie acceptabil, chiar atunci când este
achiziţionat la bucată. Prin preţ acceptabil se înţelege o valoare de 1-5 USD la bucată pentru
microcontrolere de 8 biţi şi până la 15 USD pentru microcontrolere de 16 biţi. Familiile de
microcontrolere PIC18Fxx şi mai ales PIC16Fxx oferite de firma Microchip satisfac aceste
cerinţe.
Suport: este o familie răspândită, cunoscută, documentată? Sunt disponibile gratuit
aplicaţii hardware şi software? Producătorul sau distribuitorul oferă sprijin în etapa de
dezvoltare?
Varietate: Investind timp şi bani într-o familie de microcontrolere, este bine de ştiut câţi
membri ai familiei există şi ce facilităţi oferă. Cu aceasta se poate folosi setul de instrucţiuni şi o
arhitectură deja cunoscute la circuite diverse, principala deosebire constând în perifericele oferite
(Timere, USART, PWM, WDT, ADC, DAC, etc) şi caracteristicile lor. Cea mai mare varietate
de microcontrolere o are familia 8051 Intel, dar şi microcontrolerele HC05 (Motorola) şi PIC
(Microchip) stau bine la acest capitol.
Fiabilitate: Noile familii sau chiar produsele noi dintr-o familie consacrată pot I avea
mici probleme, mai des hardware decât software. Nu utilizaţi un circuit mai nou ; de un an dacă
nu sunteţi pregătit să înfruntaţi şi un mic risc. Sincer vorbind, este puţin probabil ca un
microcontroler dezvoltat în anii '80 - ‘90 să mai prezinte azi vreun defect hardware!
Flexibilitate: Dacă doriţi să adăugaţi proiectului în viitor mai multă memorie I sau alte
periferice, variantele tară ROM reprezintă o opţiune naturală în acest caz. Exemplele cele mai
potrivite în acest caz sunt Intel 8051 şi Motorola HC11. Dacă aveţi noroc, se poate comanda un
microcontroler din aceeaşi familie, în aceeaşi capsulă şi \ compatibil ca terminale, dar care oferă
mai multă memorie sau periferice suplimentare. Microcontrolerele Microchip PIC se înscriu în
această categorie.
Capsula: Circuitul trebuie să fie uşor de mânuit şi montat. Capsulele QFP (Quacl Fiat
Pack) sunt un coşmar de lipit fară echipamentul şi pregătirea necesare. Capsula PLCC poate
utiliza un soclu şi este uşor de montat, iar capsula DIP este cea mai comodă. Dacă sunt necesare
o mulţime de linii I / O şi doriţi evitarea componentelor SMD, se pot alege variante de
microcontrolere iară ROM şi cu expandoare externe de magistrală (8255) sau circuite HCMOS,
de exemplul 74HCT574. Deoarece tendinţa de miniaturizare a componentelor devine tot mai
accentuată, capsulele se micşorează continuu şi accesibilitatea capsulelor mari (DIP) este tot mai
redusă.
Imunitatea la zgomot: într-un mediu industrial comportarea unui microcontroler poate fi
deosebită de cea din laborator. Câmp electromagnetic puternic, paraziţi, variaţii mari de
temperatură, de tensiune de alimentare - toate acestea pot cauza probleme. In acest caz
experienţa inginerului proiectant joaca un rol puternic şi acest criteriu poate deveni esenţial dacă
proiectul va funcţiona într-un asemenea mediu.