Sunteți pe pagina 1din 25

Microcontrolere

Capitolul 1
INTRODUCERE

1.1 CE ESTE DE FAPT UN MICROCONTROLER?

La modul general un controler ("controller" - un termen de origine anglo-saxon, cu un


domeniu de cuprindere foarte larg) este, actualmente, o structur electronic destinat
controlului (destul de evident!) unui proces sau, mai general, unei interaciuni caracteristice cu
mediul exterior, fr s fie necesar intervenia operatorului uman. Primele controlere au fost
realizate n tehnologii pur analogice, folosind componente electronice discrete i/sau
componente electromecanice (de exemplu relee). Cele care fac apel la tehnica numerica
modern au fost realizate iniial pe baza logicii cablate (cu circuite integrate numerice standard
SSI i MSI ) i a unei electronici analogice uneori complexe, motiv pentru care "strluceau"
prin dimensiuni mari, consum energetic pe msur i, nu de puine ori, o fiabilitate care lsa de
dorit.
Apariia i utilizarea microprocesoarelor de uz general a dus la o reducere consistenta a
costurilor, dimensiunilor, consumului i o mbuntire a fiabilitii. Exist i la ora actuala o
serie de astfel de controlere de calitate, realizate n jurul unor microprocesoare de uz general cum
ar fi Z80 (Zilog), 8086/8088 (Intel), 6809 (Motorola), etc.
Pe msur ce procesul de miniaturizare a continuat, a fost posibil ca majoritatea componentelor
necesare realizrii unei astfel de structuri s fie ncorporate (integrate) la nivelul unui singur
microcircuit (cip). Astfel c un microcontroler ar putea fi descris ca fiind i o solu ie (nu n sens
exhaustiv !) a problemei controlului cu ajutorul a (aproape) unui singur circuit.
Legat de denumiri i acronime utilizate, aa cum un microprocesor de uz general este
desemnat prin MPU (MicroProcessor Unit), un microcontroler este, de regul, desemnat ca
MCU, dei semnificaia iniial a acestui acronim este MicroComputer Unit.
O definiie, cu un sens foarte larg de cuprindere, ar fi aceea c un
microcontroler este un microcircuit care incorporeaz o unitate
central (CPU) i o memorie mpreun cu resurse care-i permit
interaciunea cu mediul exterior.
Resursele integrate la nivelul microcircuitului ar trebui s includ, cel puin,
urmtoarele componente:

1
Microcontrolere

a. o unitate central (CPU), cu un oscilator intern pentru ceasul de sistem


b. o memorie local tip ROM/PROM/EPROM/FLASH i eventual una de tip RAM
c. un sistem de ntreruperi
d. I/O - intrri/ieiri numerice (de tip port paralel)
e. un port serial de tip asincron i/sau sincron, programabil
f. un sistem de timere-temporizatoare/numrtoare programabile
Este posibil ca la acestea s fie adugate, la un pre de cost avantajos, caracteristici
specifice sarcinii de control care trebuie ndeplinite:
g. un sistem de conversie analog numeric(una sau mai multe intrari analogice)
h. un sistem de conversie numeric analogic i/sau ieiri PWM (cu modulare n durat)
i. un comparator analogic
j. o memorie de date nevolatil de tip EEPROM
k. faciliti suplimentare pentru sistemul de temporizare/numrare (captare i comparare)
l. un ceas de gard (timer de tip watchdog)
m. faciliti pentru optimizarea consumului propriu
Un microcontroler tipic mai are, la nivelul unitii centrale, faciliti de prelucrare a informaiei
la nivel de bit, de acces direct i uor la intrri/ieiri i un mecanism de prelucrare a
ntreruperilor rapid i eficient.

Utilizarea unui microcontroler constituie o soluie prin care se poate


reduce foarte mult numrul componentelor electronice precum i
costul proiectrii i al dezvoltrii unui produs.
OBSERVAIE Utilizarea unui microcontroler, orict de evoluat, nu elimin unele
componente ale interfeei cu mediul exterior (atunci cnd ele sunt chiar necesare): subsisteme de
prelucrare analogic (amplificare, redresare, filtrare, protecie-limitare), elemente pentru
realizarea izolrii galvanice (optocuploare, transformatoare), elemente de comutaie de putere
(tranzistoare de putere, relee electromecanice sau statice).

1.2 UNDE SUNT UTILIZATE MICROCONTROLERELE?


Toate aplicaiile n care se utilizeaz microcontrolere fac parte din categoria aa ziselor sisteme
ncapsulate-integrate (embedded systems), la care existena unui sistem de calcul incorporat
este (aproape) transparent pentru utilizator.

2
Microcontrolere

Pentru ca utilizarea lor este de foarte ori sinonim cu ideea de control, microcontrolerele
sunt utilizate masiv n robotic i mecatronic. Conceptul de mecatronic este
pan la urm indisolubil legat de utilizarea microcontrolerelor.
Automatizarea procesului de fabricaie-producie este un alt mare beneficiar. (CNC
Computerised Numerical Controls - comenzi numerice pentru mainile unelte, automate
programabile -PLC, linii flexibile de fabricaie, etc.). Indiferent de natura procesului automatizat
sarcinile specifice pot fi eventual distribuite la un mare numr de microcontrolere integrate ntr-
un sistem unic prin intermediul uneia sau mai multor magistrale.

Printre multele domenii unde utilizarea lor este practic un standard industrial se pot
meniona: n industria de automobile (controlul aprinderii/motorului, climatizare, diagnoz,
sisteme de alarm, etc.), n aa zisa electronic de consum (sisteme audio, televizoare, camere
video i videocasetofoane, telefonie mobil, GPS-uri, jocuri electronice, etc.), n aparatura
electrocasnic (maini de splat, frigidere, cuptoare cu microunde, aspiratoare), n controlul
mediului i climatizare (sere, locuine, hale industriale), n industria aerospa ial , n
mijloacele moderne de m surare - instrumentaie (aparate de msur, senzori i traductoare
inteligente), la realizarea de periferice pentru calculatoare, n medicin.
Johnnie , un robot umanoid destul de simplu, construit la Universitatea Tehnic din
Munchen n 1998, utilizeaz 5 microcontrolere, conectate prin intermediul unei magistrale CAN
la un calculator PC. Alpha un alt robot umanoid (fotbalist ca destinaie) dezvoltat la
Universitatea din Freiburg utilizeaz, intr-o variant a sa, 11 microcontrolere conectate similar.
Un numr foarte mare de microcontrolere sunt folosite i de aa zisele juc rii inteligente , din
care capetele de serie cele mai cunoscute sunt cei doi roboi, unul canin i altul umanoid:
AIBO (Sony) i ASIMO (Honda). ASIMO folosete 26 de microcontrolere numai pentru
controlul individual al celor 26 de elemente de acionare inteligente (motoare).
Ca un exemplu din industria de automobile (automotive industry), unde numai la nivelul
anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza
63 de microcontrolere.
Practic, dei am prezentat ca exemple concrete numai sisteme robotice i mecatronice, este
foarte greu de gsit un domeniu de aplicaii n care s nu se utilizeze microcontrolerele.

1.3 CLASIFICRI I VARIANTE CONSTRUCTIVE

3
Microcontrolere

Exist la ora actual un numr extrem de mare de tipuri constructive de microcontrolere.


Un criteriu de clasificare care se poate aplica ntotdeauna este lungimea (dimensiunea)
cuvntului de date. Funcie de puterea de calcul dorit i de alte caracteristici se pot alege
variante avnd dimensiunea cuvntului de date de 4, 8,16 sau 32 de bii (exist chiar i variante
de 64 de bii!). Nu este obligatoriu ca dimensiunea cuvntului de date s fie egal cu
dimensiunea unui cuvnt main (cuvnt program). Exist i multe variante zise dedicate,
neprogramabile de utilizator la nivel de cod main, strict specializate pe o anumit aplicaie,
prin intermediul codului preprogramat i al resurselor hardware, utilizate pentru comunicaii,
controlul tastaturilor, controlul aparaturii audio/video, prelucrarea numeric a semnalului, etc.

1.4 TEHNOLOGIILE DE FABRICAIE UTILIZATE


Practic, toate microcontrolerele se realizeaz la ora actual n
tehnologie CMOS (tehnologii similare celor utilizate la seriile standard CMOS de circuite
numerice: HC, AC, ALV, etc.). Se pot realiza astfel structuri cu o mare densitate de integrare, cu
un consum redus (care va depinde de frecvena de lucru), permind eventual alimentarea de la
baterie.
Logica intern este static (total sau n cea mai mare parte) permind astfel, n anumite
condiii, micorarea frecvenei de ceas sau chiar oprirea ceasului n ideea optimizrii
consumului. Tehnologia este caracterizat i de o imunitate mai mare la perturbaii, esenial
ntr-un mare numr de aplicaii specifice. Se realizeaz variante pentru domeniu extins al
temperaturii de funcionare (de ex.- 40 +85 C).
Exist foarte multe variante de ncapsulare (capsule de plastic i mai rar de ceramic),
multe din ele destinate montrii pe suprafa (SMD): SOIC, PLCC, PQFP, TQFP (x100pini),
etc., dar i variante clasice cu pini tip DIP/DIL (tipic de la 8 la 68 pini).

1.5 CARACTERISTICI ARHITECTURALE ALE UNITII CENTRALE


Arhitectura unitii centrale de calcul (CPU) este unul din elementele cele mai
importante care trebuie avut n vedere n analiza oricrui sistem de calcul. Principalele concepte
luate n considerare i ntlnite aici sunt urmtoarele:
a. Arhitecturi de tip " von Neumann " Cele mai multe microcontrolere sunt
realizate pe baza acestei arhitecturi de sistem.

4
Microcontrolere

Microcontrolerele bazate pe aceast arhitectur au o unitate central (CPU)


caracterizat de existena unui singur spaiu de memorie utilizat pentru memorarea att a
codului instruciunilor ct i a datelor ce fac obiectul prelucrrii. Exist deci o singur
magistral intern (bus) care este folosit pentru preluarea a instruciunilor (fetch opcod) i a
datelor; efectuarea celor dou operaii separate, n mod secvenial, are ca efect, cel puin
principial, ncetinirea operaiilor. Este arhitectura standard (cea mai des ntlnit) i pentru
microprocesoarele de uz general.
b. Arhitecturi de tip " Harvard " La aceast arhitectur exist spaii de memorie
separate pentru program i date. n consecin ar trebui s existe i magistrale separate (de
adrese i date) pentru codul instruciunilor i respectiv pentru date. Principial exist astfel
posibilitatea execuiei
cvasiparalele (suprapunerii) a celor dou operaii menionate anterior. Codul unei instruciuni
poate fi preluat din memorie n timp ce se execut operaiile cu datele aferente instruciunii
anterioare. Este posibil (cel puin teoretic) o execuie mai rapid, pe seama unei complexiti
sporite a microcircuitului, mai ales atunci cnd exist i un pipeline. Este arhitectura standard
pentru procesoarele numerice de semnal (DSP). Datorit costului mare al implementrii unei
astfel de arhitecturi, n cazul microcontrolerelor se ntlnete mai ales o arhitectur
Harvard modificat, cu spaii de memorie separate pentru program i date, dar cu
magistrale comune pentru adrese i date.
c. CISC Aproape toate microcontrolerele au la baza realizrii CPU conceptul CISC (Complex
Instruction Set Computer). Aceasta nseamn un set uzual de peste 80 instruciuni, multe din ele
foarte puternice i specializate. De obicei multe din aceste instruciuni sunt foarte diferite ntre
ele: unele opereaz numai cu anumite spaii de adrese sau registre, altele permit numai anumite
moduri de adresare, etc. Pentru programatorul n limbaj de asamblare exist unele avantaje prin
utilizarea unei singure instruciuni complexe n locul mai multor instruciuni simple (analog
macroinstruciunilor clasice dintr-un limbaj de asamblare) .
d. RISC (Reduced Instruction Set Computer) este un concept de realizare a CPU care a nceput
s fie utilizat cu succes de ceva timp i la realizarea microcontrolerelor. Prin implementarea
unui set redus de instruciuni care se pot executa foarte rapid i eficient, se ob ine o reducere a
complexitii microcircuitului, suprafaa disponibilizat putnd fi utilizat n alte scopuri.
Printre caracteristicile asociate de obicei unui CPU RISC se pot meniona:
- arhitectur Harvard modificat sau von Neumann

5
Microcontrolere

- vitez sporit de execuie prin implementarea unui pipeline pentru instruciuni


- set de instruciuni ortogonal (simetric): orice instruciune opereaz cu orice spaiu de adrese
(de memorie) sau orice registru, instruciunile nu prezint combinaii speciale, excepii,
restricii sau efecte colaterale.

1.5 ASPECTE DE IMPLEMENTARE A MEMORIEI


MICROCONTROLERELOR
n afar de memoria local de tip RAM, de dimensiuni relativ reduse (de la x10 octe i la
x1k), implementat ca atare sau existent sub forma unui set de registre i destinat memorrii
datelor (variabilelor), mai exist o serie de aspecte specifice, marea majoritate a acestora fiind
legat de implementarea fizic a memoriei de program (i eventual a unei
pri a memoriei de date) cu ajutorul unor memorii nevolatile. Clasic, memoria de program era
implementat ntr-o variant de tip ROM: EPROM pentru dezvoltare i producie pe scar
mic/medie sau mask-ROM pentru producia de mas. Principalele concepte noi aprute de
a lungul timpului n legtur cu implementarea memoriei de program sau date sunt enumerate n
continuare.

a. OTP - majoritatea productorilor ofer variante de microcontrolere la care memoria local


de program este de tip OTP (One Time Programmable), practic o memorie PROM identic
intern cu varianta EPROM, dar fr fereastra de cuar pentru tergere (deci i mai ieftine);
aceste variante pot fi utilizate ca o alternativ pentru o producie limitat, pn n momentul
testrii i validrii finale a codului, moment n care pot fi comandate variantele (mask) ROM
propriu-zise, cele mai economice pentru o producie de mas
b. FLASH EPROM - este o soluie mai bun dect EPROM-ul propriu-zis atunci cnd este
necesar un volum mare de memorie program (nevolatil); mai rapid i cu un numr garantat
suficient de mare (x10000) de cicluri de programare (de tergere/scriere), este caracterizat i
prin modaliti mai flexibile de programare; este utilizat numai ca memorie de program.
c. EEPROM - multe microcontrolere au i o memorie de acest tip, de dimensiune limitat (de
la x10 octei la x K octei), destinat memorrii unui numr limitat de parametri ( memorie
de date) care eventual trebuie modificai din timp n timp; este o memorie relativ lent (la
scriere), dar cu un numr de cicluri de tergere/scriere mai mare ca FLASH-ul (x100000).

6
Microcontrolere

d. NOVRAM (RAM nevolatil) - realizat prin alimentarea local (baterie, acumulator) a unui
masiv RAM CMOS atunci cnd este necesar un volum mare de memorie de program i date
nevolatil; mult mai rapid dect toate celelalte tipuri i fr limitri ca numr de cicluri.
e. Programarea "In System" (ISP-In System Programming) - folosirea
unor memorii nevolatile de tip FLASH face posibil i "programarea" unui astfel de
microcontroler fr a-l scoate din sistemul n care este ncorporat (programare on-line, In
System Programming); programarea se face de regul prin intermediul unei interfee seriale
dedicate de tip ISP (poate avea nume diferite) sau a unei interfee standard JTAG. Exist
microcontrolere la care aceast programare se poate face prin intermediul portului serial
asincron sau al interfetei CAN (Controller Area Network). Este posibil astfel modificarea cu
uurin a codului program sau a unor constante de lucru (local sau de la distan -remote
update). Un lucru foarte important este c la anumite familii interfaa prin intermediul
creia se face programarea poate fi utilizat i la testarea i
depanarea aplicaiei (soft), permind realizarea simpl, cu un pre de cost minim, a
unor mijloace de testare i depanare(emulatoare). De exemplu, n acest caz interfaa JTAG este
specificat ca fiind JTAG/ICE (In Circuit Emulation) pentru a arta c poate fi folosit i
pentru emularea n circuit.
f. Bootloader multe din microcontrolerele recente la care memoria de program este de tip
FLASH au i facilitatea (au de fapt instruciuni dedicate acestui scop) de a putea i scrie n
aceast memorie de program fr a utiliza un circuit de programare extern. Astfel n
microcontroler poate exista permanent (rezident) un cod de mici dimensiuni (denumit i
bootloader) care pur i simplu va ncrca prin intermediul portului serial (este doar un exemplu)
codul utilizator sau constantele pe care acesta vrea eventual s le actualizeze.
Bootloader-ul este i cel care lanseaz n execuie programul utilizator dup ncrcarea
acestuia.
g. Protejarea codului - protejarea codului program dintr-o memorie local nevolatil
mpotriva accesului neautorizat (la citire deoarece pirateria soft exist i aici) este oferit ca o
opiune (ea mai trebuie i folosit!) la variantele FLASH, EPROM sau OTP. Codul poate
protejat att la citire cat i la scriere (practic circuitul trebuie ters, nainte de a se mai putea scrie
ceva n el). Este eliminat astfel posibilitatea de a se realiza, n acest caz, de patch-uri (alter ri

7
Microcontrolere

cu un anumit scop) ale codului original. La variantele mask-ROM propriu-zis protecia este de
cele mai multe ori implicit.

h. Memoria extern de program sau date. Marea majoritate a familiilor de


microcontrolere permit si utilizarea de memorie extern de program (tipic ROM) sau date (tipic
RAM). Aceasta presupune existenta si utilizarea unor magistrale externe de
adrese si date. Conexiunile externe necesare pentru acestea sunt disponibile ca funcii
alternative ale pinilor. Din pcate, in aceast situaie numrul de conexiuni exterioare
disponibile pentru interfaa cu exteriorul se reduce dramatic, reducnd mult din versatilitatea
microcontrolerului. Mai mult la variantele constructive cu un numr mic de pini (conexiuni
externe) nu este posibil utilizarea de memorie extern, dect, eventual, intr-o variant cu
interfa serial (memorie RAM, FLASH sau EEPROM cu interfa I2C, SPI, etc.) si numai ca
memorie de date.

1.6 CONTROLUL PUTERII CONSUMATE I ALIMENTAREA LA TENSIUNI


REDUSE
Majoritatea microcontrolerelor pot fi trecute sub control soft n stri speciale cum ar fi: n
ateptare (STAND-BY), inactiv ("IDLE") sau oprit ("HALT", "POWER DOWN"), denumirile
acestor stri diferind i funcie de fabricant. n aceste moduri starea CPU, coninutul RAM-ului
intern, starea I/O-urilor poate fi conservat n condiiile unei tensiuni de alimentare reduse (fa
de cea nominal) i deci al unui consum mult redus. Flexibilitatea acestui sistem este strans
legata de faciltitatile si programabilitatea sistemului de generare a ceasului de lucru (clock
system, vezi 1.7).
De exemplu, ntr-un mod de tip "IDLE" toate activitile sunt oprite cu excepia
circuitului oscilatorului local de ceas i, dac acestea exist: circuitul "watchdog" (ceasul de
gard), circuitul de monitorizare a oscilatorului de ceas i eventual un temporizator dedicat
("idle timer"). Puterea consumat este redus la cca. 30%, iar ieirea din acest mod se face prin
reset (iniializare) sau printr-un stimul exterior (de regul o ntrerupere). Temporizatorul dedicat
poate scoate periodic microcontrolerul din aceast stare, pentru ndeplinirea anumitor sarcini,
dup care se reintr n starea respectiv.
n modul "HALT" toate activitile sunt oprite, tensiunea de alimentare poate fi cobort sub
valoarea nominal, fr alterarea strii (CPU, RAM, I/O), puterea consumat fiind minim.

8
Microcontrolere

Ieirea din aceast stare se face prin reset sau ca urmare a unei cereri de ntrerupere. Toate
aceste moduri de lucru sunt de regul valorificate n aplicaii n care alimentarea sistemului se
face de la o surs de tip baterie (n funcionarea normal sau numai n anumite situaii).
Se mai ofer uneori ca facilitate o protecie la scderea accidental (n anumite limite) a
tensiunii de alimentare ("brownout protection"). La scderea tensiunii de alimentare sub o
anumit limit ("brownout voltage") microcontrolerul este iniializat (resetat) i inut n aceast
stare atta timp ct condiia respectiv persist. Tensiunea de alimentare standard pentru
microcontrolere a fost mult timp, din considerente i istorice(vezi TTL-ul), de Vcc = 5V (cu o
anumit toleran ). La ora actual se ofer, pentru multe din ele, i variante cu tensiune de
alimentare redus (Low Voltage) cu Vcc = 1.8 .. 3.3V, destinate unor aplicaii unde consumul
este un parametru critic. Exist variante cu plaj mare a tensiunii de alimentare, de exemplu Vcc
= 2..6V, funcionarea la limita inferioar implicnd doar o micorare a frecvenei maxime de
ceas.

1.7 SISTEMUL DE CEAS


Orice microcontroler este caracterizat cel puin de existena circuitelor electronice
aferente oscilatorului care genereaz ceasul de sistem. Astfel este posibil implementarea
simpl a oscilatorului doar prin adugarea, n exterior, a unui rezonator extern (cuar sau
piezoceramica) pentru stabilizarea frecventei si eventual a unor capacitori. Dac stabilitatea si
precizia frecvenei nu este o cerin important, la anumite microcontrolere se poate utiliza doar
un circuit RC extern sau exist un circuit RC intern, care determin frecvena de oscilaie.
Exist microcontrolere la care configuraia oscilatorului este programabil prin intermediul unor
fuzibile FLASH (se programeaz similar memoriei de program): rezonator extern i tipul
acestuia, varianta RC intern sau extern, gama de frecvent, etc.
La familiile evoluate de microcontrolere exist si circuite de tip PLL (Phase Locked Loop) si/sau
FLL (Frequency Locked Loop) care permit multiplicarea cu uurin a frecvenei de baz (cea
a rezonatorului extern). Astfel plecnd, de exemplu de la o frecven de 32.768KHz se pot
obine frecvene de lucru pn ordinul MHz. La astfel de microcontrolere sistemul de ceas este
programabil prin intermediul unor registre speciale oferind un maxim de flexibilitate n sensul
putinei de controla compromisul ntre puterea consumat i viteza maxim de lucru.

1.8 INTERFAA EXTERN (SISTEMUL DE INTRRI I IEIRI)

9
Microcontrolere

Toate microcontrolerele au un numr oarecare de intrri- Inputs / ieiri numerice- Outputs (de la
x1 la x10) organizate sub forma unor porturi I/O; conexiunile exterioare sunt bidirec ionale sau
unidirecionale, unele sunt multifuncionale (se ofer funcii alternative pe acelai pin), unele
pot avea o capacitate sporit de a absorbi curent (de exemplu pentru comanda direct a unui
LED, cu IOL max = - 20mA), etc. n afar de acest set de intr ri/ie iri de uz general, pentru
interfaa cu mediul exterior se ofer o serie de alte faciliti importante de
intrare/ieire cum ar fi:
a. UART (Universal Asynchronous Receiver Transmitter ) este un port serial bidirecional
destinat implementrii unui protocol clasic de comunicaie asincron; USART (Universal
Synchronous Asynchronous Receiver Transmitter) este un port similar, dar care permite
implementarea i a unui protocol sincron cu obinerea unor viteze mai mari de comunicaie;
SCI (Serial Communications Interface) este un circuit de tip UART mbuntit, definit i
utilizate de firma Freescale(Motorola). LIN (Local Interconnect Network) reprezint o
implementare particular a unui protocol de comunicaie asincron, utilizat n industria de
automobile ca o alternativ de mic vitez dar cu pre sczut pentru magistrala i protocolul
CAN (vezi mai jos).
b. Porturi seriale sincrone dedicate - sunt destinate transferului serial de date de
mare vitez cu unele periferice specializate (sisteme de afiare, convertoare analog-numerice,
etc.) sau care permit conectarea ntr-o reea de comunicaie. Presupun existenta, mpreuna cu
datele, a unui semnal de ceas (implicit sau explicit) pentru sincronizarea acestora. Implic i
implementarea unor protocoale mai mult sau mai puin complexe de transfer al informaiei, fiind
de fapt vorba de o magistral serial. Exist cteva implementri rspndite (sunt prezentate n
ordinea cresctoare a complexitii):
- SPI (Serial Peripheral Interface) este un port serial sincron definit de firma Motorola
- Microwire / Microwire Plus este o interfa serial bidirecional sincron definit
i utilizat de firma National Semiconductors
- I2C (Inter Integrated Circuits bus) este o interfa serial bidirecional (pe numai 2 fire),
dezvoltat de Philips, destinat aplicaiilor de 8 bii. Exist i multe circuite "periferice" care
sunt prevzute cu o astfel de interfa. Este cunoscut i sub denumirea TWI (Two Wire
Interface)

10
Microcontrolere

- CAN (Controller Area Network) proprietate intelectual a firmei Bosch, foarte utilizat n
Europa i Japonia, oarecum similar ca funcionalitate lui SAE J1850 care este utilizat n
America de Nord (SAE -Society of Automotive Engineers), este un standard (o magistral i un
protocol) de comunicaie serial sincron utilizat n industria de automobile, permind
interconectarea ntr-o reea a diverselor componente inteligente (senzori, elemente de execuie,
indicatoare, etc.) omniprezente ntr-un automobil modern. In ultimul timp magistrala CAN a
nceput s fie utilizat i n alte domenii dect industria de automobile (automatizri industriale,
robotic, acionri electrice).
c. Conectivitate Ethernet/Web implic existena unor resurse care s permit
integrarea cu uurin ntr-o reea de tip Ethernet, pentru a face posibil, n final,
implementarea unui protocol TCP/IP (a unei stive TCP/IP). Resursele respective pot fi de natur
software (stiv soft) care presupun o vitez de prelucrare (putere de calcul) a CPU suficient de
mare pentru a nu afecta vizibil operarea propriu-zis a controlerului, sau hardware (stiv
hardware). Pe baza acestei stive se poate realiza o conectivitate tip HTTP, FTP, STMP, POP3,
etc.
d. Conectivitate USB - magistrala serial USB (Universal Serial Bus) a fost creat
pentru conectarea cu uurin a diverselor periferice la un calculator PC (cu rolul de gazd -
host). Conexiunea permite si furnizarea tensiunii de alimentare. Varianta USB 1.1 permite
atingerea unei rate de transfer maxime a datelor de 12Mbytes/sec, iar varianta USB 2.0 a unei
rate maxime de cca. 480MBytes/sec. La ora actual exist pe pia multe firme care ofer o
gam larg de microcontrolere cu conectivitate USB (majoritatea compatibile USB 1.1), cu un
pre de cost minim pentru componentele hardware i software. Exemple n acest sens ar fi
firmele: Atmel, Microchip, Intel, Cypress, ST, Infineon, s.a. Majoritatea sunt destinate realizrii
unor periferice USB si mai puine realizrii unui USB host.
e. Conectivitate Wireless- se refer la existena unor resurse hardware si/sau software
care s permit integrarea cu uurin i la un pre de cost avantajos ntr-o reea de tip
wireless, pentru a face posibil, n final, implementarea unui protocol (a stivei aferente
protocolului). Exemplele cele mai cunoscute de astfel de reele, protocoale i stive sunt
Bluetooth (IEEE 802.15.1) i Zigbee (IEEE 802.15.4).
f. Convertoarele Analog Numerice (CAN, ADC) Convertoarele utilizate fac parte
de regul dintr-un sistem de achiziie de date, existnd i un multiplexor analogic cu
mai multe canale de intrare. Rezoluia disponibil este tipic de 8, 10 sau 12 bii, uneori cu
11
Microcontrolere

precizia (rezoluia adevrat) corespunztoare unui numr mai mic de bii. In marea majoritate
a cazurilor ele sunt realizate pentru mrime de intrare unipolar. Sursa de referin
utilizat este intern sau extern. Timpul minim de conversie este n plaja x sec la x10 sec.
Exist microcontrolere care utilizeaz tehnici de recalibrare (auto-zero, corecie ctig, etc.)
pentru mrirea i/sau meninerea preciziei. Tehnicile de conversie cele mai utilizate sunt:
aproximaii succesive (majoritatea) cu eantionare implicit (circuit Track-Hold inclus), ramp
digital (mai rar). Exist i subsisteme locale care, n cazul n cnd sunt prezente, pot fi folosite
pentru implementarea unor alte tehnici de conversie bazate pe integrare (cu utilizarea unui
numr minim de componente exterioare): numrtoare de impulsuri, circuite comparatoare
(analogice, standard), intrri de captare (foreaz memorarea - "captarea" valorii unui
numrtor care numr liber, n momentul activrii, permind astfel msurarea intervalelor de
timp sau frecvenelor), etc.
OBSERVAIE n ultimul timp au aprut i variante de CAN cu rezoluii mari i foarte mari,
realizate n tehnica sigma-delta (-). Realizrile respective sunt mai degrab un CAN cu
microcontroler (firma Analog Device ofer un nucleu de microcontroler 8051 plus un CAN
sigma-delta cu rezoluii de pn la 24 bii !)
g. Convertoarele Numeric Analogice (CNA, DAC) Cea mai rspndit tehnic de
conversie numeric analogic folosit este bazat pe modulaia n factor de umplere (PWM-
Pulse Width Modulation). Exist unul sau mai multe canale pe care se poate genera un tren de
impulsuri cu factor de umplere programabil (de la 0 la 100%). Factorul de umplere este controlat
cu o rezoluie de la 8 bii sau 16 bii. Frecvena trenului de impulsuri este i ea programabil, n
limite largi. La un microcontroler fr un sistem PWM dedicat, n acest scop se poate utiliza, cu
o flexibilitate mai sczut, sistemul de timere/numrtoare i orice ieire numeric. Printr-o
filtrare exterioar relativ simpl, de tip trece jos (FTJ, Low Pass), se poate obine o tensiune de
ieire proporional cu factorul de umplere. Convertoare numeric analogice propriu-zise sunt
mai rar ntlnite.
g. Interfaa pentru sisteme de afiare tip LCD (panou LCD) n ultimul
timp n familiile de microcontrolere deja consacrate sau n familiile noi au aprut variante care
posed un subsistem destinat conectrii directe, cu utilizarea unui numr minim de componente
exterioare, unui sistem de afiare (un panou) de tip LCD (cu cristale lichide). Interfaa
respectiv genereaz toate semnalele necesare pentru comanda panoului LCD. Complexitatea sa
este descris prin numrul maxim de segmente LCD care pot fi controlate, fiind limitat n
12
Microcontrolere

primul rnd de numrul de conexiuni externe necesare (pentru un numr mare de segmente
oricum se folosesc tehnici de multiplexare).

1.9 FAMILII DE MICROCONTROLERE REPREZENTATIVE


n prezentarea care urmeaz i care nu se dorete exhaustiv, accentul este pus pe familiile mai
cunoscute, de 8 bii i 16bii.
a. 8048 (Intel MCS-48 - www.intel.com ) "Bunicul" microcontrolerelor pe 8 bii, mai este
nc folosit! Unele din caracteristicile sale arhitecturale se regsesc la urmtoarea generaie
(MCS-51, 8051).
b. 8051 (Intel MCS-51 i muli alii: Atmel, Philips- www.semiconductor.philips.com,
Infineon, Atmel, Dallas-Maxim - www.maxim-ic.com, Cygnal www.cygnal.com , etc.) A doua
generaie de microcontrolere de 8 bii a firmei Intel care, dei aprut acum 20 de ani, nc
ocup un segment semnificativ de pia. Cu o arhitectur destul de ciudat, este suficient de
puternic i uor de programat (odat nvat!). Arhitectura sa are spaii de memorie separate
pentru program i date. Poate adresa 64KBytes memorie de program, din care primii
4(8..32)KBytes locali (ROM). Poate adresa 64KBytes memorie de date extern, adresabil doar
indirect. Are 128 (256) octei de RAM local, plus un numr de registre speciale pentru lucrul cu
periferia local. Are faciliti de prelucrare la nivel de bit (un procesor boolean, adresare pe bit).
Intel a dezvoltat si un super 8051 numit generic 80151. Actualmente exist zeci de variante
produse de diveri fabricani (Philips, Infineon, Atmel, Dallas, Temic, etc.) precum i cantiti
impresionante de soft comercial sau din categoria freeware/shareware. Au aprut i dezvoltri
ale acestei familii n sensul trecerii la o arhitectur similar (n mare), dar pe organizat pe 16
bii, cu performane mbuntite ca vitez de prelucrare: familia XA51 eXtended Arhitecture
de la Philips i familia 80C251 (Intel). Din pcate aceste noi variante nu s-au bucurat nici pe
departe de succesul btrnului 8051.
c. 80C196 (Intel MCS-96) Este un microcontroler pe 16 bii fcnd parte din generaia treia
de microcontrolere a firmei Intel. Destinat iniial unor aplicaii din industria de automobile, are o
arhitectur von Neumann, cu un spaiu de adresare de 64KBytes, o unitate de intrri/ieiri
numerice de mare vitez (destinat iniial controlului injeciei la un motor cu ardere intern),
ieiri PWM, convertor analog numeric, timer watchdog. Exist multe variante, ultimele
cronologic aprute, fiind mult superioare variantei iniiale. Exist i o dezvoltare recent sub
forma familiei MCS-296 (80C296).

13
Microcontrolere

d. 80C186, 80C188 (Intel, AMD, .a.) Derivate din clasicele 8086/88 prin includerea pe
acelai microcircuit a 2 canale DMA, 2 numrtoare/timere, un sistem de ntreruperi i un
controler pentru DRAM. Marele avantaj al acestor cvasi(aproape) microcontrolere (ele nu au
memorie integrat!) este legat de utilizarea ca mediu de dezvoltare a unor platforme de calcul tip
IBM-PC, compatibile 80x86, cu tot softul aferent.
e. 68HC05 (Freescale - www.freescale.com, ex Motorola ) Un microcontroler de 8 bii
derivat din microprocesorul M6800 i care prezint multe asemnri cu un alt microprocesor
rspndit, la timpul su, 6502. Are un spaiu de memorie unic (64Kbytes) n care sunt plasate i
registrele perifericelor (I/O, timere) cu un indicator de stiv (SP) hard pe 5bii (stiv de maxim
32 octei !). Exist variante cu memorie EEPROM, CAN, port serial, etc. Este unul din cele mai
rspndite microcontrolere (comparabil cu 8051). Varianta evoluat a acestei familii este seria
68HC08 bazat pe o nou unitate central de 8 bii numit CPU08, cu cea mai recent
dezvoltare sub forma seriei 68HCS08 destinat n mod special unor aplicaii din industria
automobilului.
f. 68HC11, 68HC12, 68HC16 (Freescale) 68HC11 a fost unul din cele mai puternice
microcontrolere pe 8 bii, foarte rspndit n ciuda faptului c Motorola a fost un timp singurul
productor. Are un set de instruciuni asemntor cu alte produse ale firmei (6801, 6805, 6809).
Are un spaiu de adrese unic de 64K. Nenumrate variante ca resurse: EEPROM, OTP, CAN,
PWM, etc. Prezint ca particularitate existena unui program de ncrcare rezident (bootstrap
loader n ROM intern) cu care, la reset, un segment din memoria RAM extern poate fi ncrcat
cu cod program prin intermediul portului serial. Variantele evoluate sunt de fapt microcontrolere
de 16 bii:
- un "super 68HC11", numit 68HC12 bazat pe o nou unitate central numit CPU12, care
reprezint extensia la 16 bii a arhitecturii HC11
- un 68HC16, mai puin rspndit, bazat pe o unitate central numit CPU16 g. 683xxx
(Freescale)
Microcontrolere pe 32 de bii construite n jurul unui CPU analog microprocesorului M68020
(CPU32), denumite i "procesoare integrate". Putere de calcul comparabil sau mai mare ca a
lui Intel 80386.
h. PIC (Microchip- www.microchip.com )

14
Microcontrolere

Primul microcontroler din aceast familie (PIC1650) a aprut acum mai bine de 20 de ani pe
vremea cnd firma era proprietatea General Instruments. Este o familie de microcontrolere care,
n ultimii ani, a cunoscut o dezvoltare exploziv. Sunt disponibile actualmente sub forma a 6
serii: PIC10, PIC12, PIC14, PIC16, PIC17 i PIC18. In seriile respective exist variante cu
memorie de program de tip OTP(C) sau FLASH(F). Au fost primele microcontrolere de 8 bi i cu
arhitectur RISC: PIC16C5x avea un set de doar 33 instruciuni (Intel 8048 avea 90).
Arhitectura este de tip Harvard i, ca o particularitate, dimensiunea cuvntului pentru program
este de 12, 14 sau 16 bii, cuvntul de date fiind tot de 8 bii. Exist foarte multe variante pentru
cele sase serii, unele din ele fiind caracterizate printr-un numr mic de conexiuni exterioare
(pini) i n consecin dimensiuni mici, consum foarte mic, ideea de baz fiind costul redus.
Cronologic, ultimul produs al firmei Microchip este seria dsPIC30F, de fapt un procesor numeric
de semnal, de 16 biti, cu o periferie specific optimizat pentru controlul actionrilor electrice
(motoare electrice). Firma Ubicom (ex Scenix, www.ubicom.com) produce nite clone ale
familiei PIC,
mult mai rapide dect originalele. Modulele Basic Stamp ale firmei Parallax (www.parallax.com)
sunt bazate si pe astfel de microcontrolere (sunt foarte utilizate, i nu numai de hobbistii din
robotic!).
i. AVR (Atmel- www.atmel.com ) Un concurent puternic al seriei PIC este familia numit
AVR, a firmei ATMEL, familie aprut n ultimii ani, care ofer variante de microcontrolere
oarecum asemntoare ca resurse cu familia PIC, la performane similare sau mai bune. Sunt
bazate pe o arhitectur diferit, dar unitatea central este tot de tip RISC, cu cuvntul de date de
8 bii. La fel ca la PIC dimensiunea cuvntului de program este mai mare, fiind de 16 bi i.
Exist cel puin 3 subfamilii mari, n ordinea complexitii resurselor, acestea fiind: AT Tiny,
AT90 i ATMega.
j. COP4(00) i COP8(00) (NS -National Semiconductors - www.national.com ) COP4 este
un microcontroler pe 4 bii, categorie de microcontrolere care, n general, departe de a fi
nvechite, ocup un segment relativ important al pieii. Printre caracteristici: pn la 2K ROM
local, 32x4 pn la 160x4 RAM local, Microwire, numrtoare/timere, tensiune de alimentare
2.3-6V, numr mic de pini. COP8 reprezint o serie de microcontrolere pe 8 bi i, versatil , cu
pre sczut, disponibil n multe variante. Arhitectura este similar lui 8051, dar setul de
instruciuni este similar lui Z80.
k. Z8 (Zilog, - www.zilog.com )

15
Microcontrolere

Un derivat al microprocesorului Z80, reprezint un compozit al mai multor arhitecturi diferite.


Nu este compatibil cu setul de instruciuni i nici cu perifericele standard Z80. Are trei spa ii de
adrese: program, date i un masiv de registre. Resurse locale tipice: UART, timere, DMA, sistem
de ntreruperi cu pn la 37 de surse. Exist o variant cu un interpreter Tiny Basic n ROM-ul
local (analog 8052AH Basic de la Intel) precum i o variant cu resurse mbuntite numit
Super-8.
l. Z180(Zilog), Rabbit ( Rabbit Semiconductors- www.rabbitsemiconductor.com ) Z180 -ul
firmei Zilog are un CPU similar cu Z80 dar mbuntit, cu resurse locale cum ar fi:
management de memorie (memorie paginat de maxim 1MB), USART (numit SIO), 2 canale
DMA, timere, sistem de ntreruperi, eventual PIO. Instruciuni suplimentare fa de setul
standard Z80, printre care i nmulirea. Diversele sale variante nu includ memorie
local. Rabbit 2000 sau 3000 este un microcontroler bazat pe un nucleu de Z180, deosebit de
versatil ca resurse periferice disponibile i foarte uor de integrat n aplicaii. Sunt disponibile
module realizate pe baza acestui microcontroler, module care adaug i memorie de tip ROM
FLASH i RAM. Utilizarea unui mediu de programare foarte productiv numit Dynamic C
precum i a facilitailor de programare i depanare In-System au fcut ca acest microcontroler
sa cunoasc o rspndire destul de larga.
m. TMS370 (Texas Instruments- www.ti.com ) Microcontrolerul standard pe 8 bii al firmei
TI realizat n multe variante (de ordinul zecilor), prezint unele asemnri cu 8051 (memoria de
date local, stiva, modurile de adresare). O varietate extrem de mare a resurselor locale.
n. 80386EX (Intel) Un 80386 destinat aplicaiilor de tip controler. Resurse locale: I/O
seriale, timere/numrtoare, DMA, optimizarea consumului, controler de ntreruperi, controler
pentru RAM dinamic. Nu au memorie local. Marele avantaj al unui astfel de
microcontroler este c se poate utiliza ca platform de dezvoltare
un sistem de tip IBM PC mpreun cu tot mediul de programare
aferent.
o. SC 3/4/5xx, Elan (AMD- www.amd.com ) O serie de microcontrolere deosebit de
performante realizate n jurul unei uniti centrale de tip 386/486. Permit practic, doar prin
adugarea de memorie extern, obinerea unui sistem de calcul compatibil PC, destinat unor
aplicaii de control ncapsulate-integrate ("embedded PC").

16
Microcontrolere

p. 80C16x (Infineon, ex Siemens www.infineon.com ) Unul din microcontrolerele de 16 bii


foarte utilizat n Europa. Arhitectur deosebit de performant a CPU, de tip RISC, are diverse
variante, cu resurse complexe: 80C165, 80C166, 80C167, etc.
q. MSP430 (Texas Instruments) Firma TI ofer i o familie de microcontrolere de 16 bii cu
arhitectura RISC, cu posibilitatea controlului compromisului vitez de calcul/consum
propriu, destinat aplicaiilor portabile (i nu numai), denumit MSP 430. Cu un spaiu de
adresare de 64KBytes, are diverse variante de realizare a memoriei interne de program (OTP,
FLASH), resurse diverse (printre care i o interfaa pentru un sistem de afiare LCD).

r. Alte familii de microcontrolere


Fujitsu Microelectronics (www.fme.fujitsu.com) - ofer familii deosebit de puternice
de microcontrolere pe 8 bii (FMC-8), 16 bii (FMC-16) sau 32 de bii (FR). n fiecare familie
exist zeci de variante. Multe dintre ele sunt orientate pe aplicaiile din industria de automobile
sau din electronica de consum(audio, video, electrocasnice).
Renesas (ex Hitachi, www.renesas.com) - ofer de asemenea o gam larg de
microcontrolere organizate n familii de 4, 8, 16 i 32 de bii. Exist un numr foarte mare de
variante constructive n fiecare familie.
ARM (Advanced RISC Machine, www.arm.com ) - este de fapt o unitate central de 32 de
bii (sau de 16/32 bii) care face parte din categoria structurilor IP (Intelectual Property).
Consoriul ARM a oferit licene ale acestei micro arhitecturi (nucleu ARM) pentru numeroi
productori de circuite (Atmel, Philips, TI, OKI www.okisemi.com , etc.). Pe baza acestor
licene se realizeaz i microcontrolere de mare performan. Cele mai cunoscute i rspndite
variante de nuclee sunt ARM7 i ARM9, cu implementrile lor simplificate numite ARM7T,
ARM9T (T-Thumb).
MPC500 (Freescale)- este o familie de microcontrolere bazat pe o unitate central de 32 de
bii compatibil cu arhitectura (i cu setul de instruciuni) Power PC. Include i o unitate de
prelucrare n virgul mobil.
OBSERVAIE Codurile prezentate sunt generice, identificarea complet a unui
microcontroler fcndu-se i cu utilizarea unor prefixe/sufixe alfanumerice prin intermediul

17
Microcontrolere

crora se precizeaz resursele disponibile i eventual alte caracteristici ale variantei constructive
(frecvena maxim de ceas, tipul de capsul, gama de temperatur, etc.).

1.10 LIMBAJE DE PROGRAMARE

1.6 Limbajul main i de cel de asamblare. Limbajul main (instruciunile


main) este singura form de reprezentare a informaiei pe care un microcontroler o "nelege"
(ca de altfel orice alt sistem de calcul !). Din pcate aceast form de reprezentare a informa iei
este total nepractic pentru un programator, care va utiliza cel puin un limbaj de asamblare, n
care o instruciune (o mnemonic cu operanzii afereni) are drept corespondent o instruciune n
limbaj main (excepie fac macroinstruciunile disponibile la unele asambloare).
Un program n limbaj de asamblare este rapid i compact. Aceasta nu nseamn c un
astfel de program, prost scris, nu poate fi lent i de mari dimensiuni, programatorul avnd
controlul total (i responsabilitatea !) pentru execuia programului i gestiunea resurselor.
Limbajul de asamblare este primul care trebuie nv at , chiar sumar, atunci cnd dorim s
proiectm o aplicaie hard/soft cu un anume microcontroler (familie), el permind nelegerea
arhitecturii acestuia i utilizarea ei eficient.
Utilizarea numai a limbajului de asamblare pentru dezvoltarea unei
aplicaii complexe este neproductiv de multe ori, deoarece exist i familii de
microcontrolere cu CPU de tip CISC care au un numr foarte mare de instruc iuni (x100)
combinate cu moduri de adresare numeroase i complicate. Totui, nu trebuie uitat c la ora
actual muli din productorii mari de microcontrolere ofer medii de dezvoltare software
gratuite care includ programe asambloare gratuite. De asemenea, comunitatea utilizatorilor
diverselor familii de microcontrolere a dezvoltat i ea, n timp, multe astfel de asambloare, care
sunt disponibile ca freeware.

b. Interpretoare . Un interpretor este o implementare a unui limbaj de nivel nalt, mai


apropiat de limbajul natural. Este de fapt un program rezident care, n acest caz, ruleaz pe o
platform de calcul de tip microcontroler. Caracteristic pentru execuia unui program interpretat,
este citirea i executarea secvenial a instruciunilor (instruciune cu
instruciune). De fapt fiecare instruciune de nivel nalt este interpretat ntr-o secven de

18
Microcontrolere

instruciuni main care se execut imediat. Cele mai rspndite interpretoare sunt cele pentru
limbajele BASIC i FORTH. Limbajul BASIC este remarcabil prin simplitatea i accesibilitatea
codului, dar (n varianta interpretat) i prin viteza mai mic de execuie, acesta fiind de altfel
preul pltit pentru utilizarea oricrui interpreter. Un exemplu de astfel de interpreter foarte
rspndit i utilizat este PBASIC al firmei Parallax utilizat pentru programarea modulelor Basic
Stamp. Este foarte uor de nvat i poate fi utilizat suficient de productiv chiar de indivizi care
au o experiena minima n domeniul programrii.
Limbajul FORTH este popular datorit vitezei de execuie (apropiat de cea oferit de limbajul
de asamblare) i posibilitii construirii aplicaiilor din pri reutilizabile. Este un limbaj mult
diferit de limbajele clasice, codul este destul de greu de scris i de mai ales de citit (codul este
greu lizibil). Totui, odat stpnit foarte bine (n timp!), poate fi foarte productiv n aplicaii
cum ar fi cele de control, n robotic, etc. Marele avantaj al utilizrii unui interpreter este
dezvoltarea interactiv i incremental a aplicaiei: se scrie o poriune de cod care
poate fi testat imediat, instruciune cu instruciune; dac rezultatele sunt satisfctoare se
poate continua cu adugarea de astfel de poriuni pn la finalizarea aplicaiei.
OBSERVAIE. Exist i variante interpretate ale limbajului C care constituie o implementare
aproximativ a standardului ANSI C. Un astfel de exemplu este Interactive C (Newton Labs)
care genereaz cod Motorola 68HC11 i este destul de mult utilizat n robotic.

c. Compilatoare. Un compilator combin uurina n programare oferit de un interpretor


(de fapt de limbajul de nivel nalt) cu o vitez mai mare de execuie a codului. Pentru aceasta
programul, n limbaj de nivel nalt, este translatat (tradus) direct n limbaj main sau n limbaj
de asamblare (urmnd a fi apoi asamblat). Codul main rezultat are dimensiuni relativ mari
(dar mai mici dect cel interpretat) i este executat direct, ca un tot, de microcontroler. De regul
codul generat poate fi optimizat fie ca dimensiune, fie ca timp de execuie.
Se pot enumera compilatoare pentru limbajele: C, BASIC, Pascal, PL/M (Intel), Forth.
Cele mai populare i utilizate sunt cele pentru limbajul C, un limbaj universal folosit att pentru
super computere cum ar fi Cray-ul, ct i de microcontrolerele de 4 bii. Este un limbaj puternic
i flexibil, care dei de nivel nalt, poate permite i accesul direct la resursele sistemului de
calcul. Un program bine scris genereaz un cod rapid i compact. Totui, de multe ori, poriuni
critice din punct de vedere al vitezei de execuie, trebuie nc scrise n limbaj de asamblare.
Exist numeroase implementri, pentru majoritatea familiilor de microcontrolere. Cu anumite

19
Microcontrolere

limitri legate de arhitectur i mai ales resursele microcontrolerului, asigur


portabilitatea unei aplicaii scris pentru un anumit tip (familie) de microcontroler la un
alt tip (familie). Pentru unele familii noi i foarte puternice de microcontrolere, datorit
complexitii setului de instruciuni i al numeroaselor moduri de adresare, este descurajat n
mod explicit utilizarea limbajului de asamblare n momentul n care se programeaz aplicaii
performante.
Unitatea central a acestor noi microcontrolere a fost
proiectat i optimizat pentru utilizarea unor limbaje de nivel nalt.
Funcie i de familia de microcontrolere n cauz, preul unor astfel de compilatoare (de
C) poate fi destul de ridicat, ncepnd cu x100USD i ajungnd la x1000USD. Exist insa i
variante freeware de compilatoare de C, cum ar fi gcc care este o portare a compilatorului
omonim din Linux n lumea microcontrolerelor. Exist implementri diferite ale acestui
compilator care genereaz cod pentru familii diferite de microcontrolere (de exemplu AVR,
MSP430, 68HC11, etc.).
OBSERVAII
1. Pentru a. i c. codul este obinut cu ajutorul unui mediu integrat de dezvoltare a
programelor (IDE-Integrated Development Environment) care conine n
mod tipic urmtoarele componente software: un editor specializat (orientat pe codul surs), un
asamblor/compilator, un editor de legturi/locator ("link-editor/locator"), programe de gestiune a
unor biblioteci de cod ("librarians"), programe de conversie a formatelor de reprezentare a
codului (de exemplu din binar n format Intel HEX sau Motorola S) i, nu n ultimul rnd, un
simulator i/sau depanator ("debugger").
2. Codul astfel obinut trebuie ncrcat n memoria de program a mainii int unde va rula,
fiind de fapt programat ntr-o memorie de tip (EP)ROM/FLASH sau ncrcat direct (uploaded)
ntr-o memorie de tip RAM.

1.11 DEZVOLTAREA I TESTAREA APLICAIILOR


Cele mai rspndite mijloace hardware/software utilizate n dezvoltarea i testarea aplicaiilor
sunt enumerate n continuare.

20
Microcontrolere

a. Simulatoarele . Un simulator este un program care ruleaz programul


microcontrolerului -implementeaz un microcontroler virtual - folosind un sistem de calcul
gazd -host (cum ar fi un PC). Programul se poate executa pas cu pas, coninutul variabilelor i
registrelor poate fi vizualizat i modificat. Reprezint un punct de plecare atunci cnd se
abordeaz un microcontroler, pentru familiarizarea cu resursele lui i cu limbajul de asamblare.
Nu permite simularea n timp real a ntreruperilor i, de regul, programul ruleaz mai ncet
dect pe maina real. De regul exist mijloace pentru evaluarea vitezei de execuie a codului
simulat (ca numr de cicluri main sau de stri). Ideal, un simulator ar trebui s permit i
simularea complet a interaciunii, cel putin din punct de vedere logic, cu toate perifericele
disponibile.

b. Programele de depanare ("debbugers") rezidente. Sunt programe


(denumite uneori n romn i programe "monitor") care ruleaz sunt rezidente- pe maina
int (microcontrolerul) oferind faciliti de depanare similare simulatorului. Interfaa cu
utilizatorul este realizat prin intermediul unui sistem gazd (PC) i/sau a unui terminal
alfanumeric, conectate prin intermediul unui port serial. Utilizeaz o parte din resursele
microcontrolerului: memorie de program pentru el nsui (de tip ROM) i memorie de date
(RAM) pentru variabile proprii, memorie de program (de multe ori memorie externa de tip
RAM, pentru a se putea incarca i modifica cu usurinta codul!) pentru programul ce se
depaneaz, un port serial pentru comunicaia cu sistemul gazd, eventual ntreruperi, etc. Se
utilizeaz de regul mpreun cu un sistem de dezvoltare (sau evaluare), care
este un sistem minimal realizat n jurul microcontrolerului pe care ruleaz depanatorul,
dar avnd resurse suficiente pentru a permite testarea i depanarea aplicaiilor uzuale.

c. Emulatoarele In Circuit (ICE-In Circuit Emulators). Sunt cele mai eficiente


mijloace de testare i dezvoltare i au fost mult timp cele mai complexe i mai costisitoare.
Presupun existena unui hardware dedicat (i complicat!) care nlocuiete practic
microcontrolerul (se conecteaz n locul acestuia n sistemul pentru care se dezvolt aplicaia),
n acelai timp fiind disponibile toate facilitile descrise anterior i altele suplimentare. Permit
un control total al mainii int (n timp real), fr a folosi nimic din resursele acesteia (la
variantele cele mai costisitoare). Ele sunt realizate de cele mai multe ori ca un mijloc de testare
i depanare de sine stttor, conectat la un PC prin intermediul unui port paralel, serial sau

21
Microcontrolere

USB. Cele mai ieftine sunt disponibile n gama x100$, iar cele mai scumpe x1000$. Variantele
mai noi folosesc interfeele specializate de programare i depanare integrate la nivelul
microcontrolerului, cnd ele exist. Nu este necesar nlocuirea microcontrolerului de pe
sistemul int, conectarea cu acesta fcndu-se printr-un numr minim de interconexiuni.
Exemple de astfel de interfee ar fi: JTAG/ICE In Circuit Emulation - la multe familii de
microcontrolere, BDM (Background Debug Monitor) pentru Freescale/Motorola. Existena
acestui tip de interfee face posibil realizarea de emulatoare cu un pre de cost mult mai mic
dect cele clasice.

d. Simulatoarele de sistem. Reprezint o categorie aparte de simulatoare destinate


simulrii cat mai complete a sistemului i a aplicaiei n ansamblu, cu alte cuvinte a
microcontrolerului mpreuna cu o dispozitivele hardware externe. Ele integreaz de regula i un
simulator SPICE.
Cele mai cunoscute sunt Proteus VSM (Virtual System Modelling) al firmei Labcenter
Electronics (http://www.labcenter.co.uk/) i UMPS (Universal Microprocessor Program
Simulator) al firmei Virtual Microdesign (www.vmdesign.com).
Un astfel de simulator permite rularea aplicaiei (codului), n mod continuu sau pas cu
pas i evaluarea n detaliu a modului cum aceasta (si microcontrolerul) interacioneaz cu
hardware-ul extern. El permite ceea ce se numete co-simularea (Co-simulation):
interaciunea dintre software-ul microcontrolerului i dispozitivele electronice analogice sau
numerice conectate cu acesta. Sunt bazate pe utilizarea unor modele avansate ale unor familii de
microcontrolere precum i pe modelele SPICE ale dispozitivelor electronice.
In cazul lui Proteus VSM exist (versiunea 6.8 SP1) modele ale microcontrolerelor: ARM
(LPC2000-Philips), PIC10, PIC12, PIC16, PIC18, AVR, 8051, 68HC11 i Basic Stamp. In cazul
UMPS exist modele ale microcontrolerelor: PIC12, PIC16, 8051, 68HC05, 68HC11, ST6200
(SGS) i COP8. Pentru fiecare model de microcontroler exist un asamblor i un editor de
legturi integrat astfel c se poate face, n anumite limite, i dezvoltarea codului n asamblare.
Pe lng aceasta ele au asigurate i interfee corespunztoare pentru a se putea dezvolta codul
cu medii de programare consacrate pentru familia respectiv de microcontrolere, folosind de
exemplu un compilator C. Facilitile de simulare a codului sunt similare celor ntlnite la
simulatoarele deja menionate. Pe lng numeroasele dispozitive electronice discrete, circuite
integrate analogice sau numerice (la Proteus VSM exist peste 6000 de modele), circuite de

22
Microcontrolere

memorie sau periferice, n categoria dispozitivelor externe se mai pot meniona i sisteme de
afiare (LED, LCD), tastaturi matriciale sau butoane, relee, etc. Ambele simulatoare menionate
sunt produse comerciale, dar exist i versiuni de evaluare, utilizabile cu limitrile de rigoare.

e. Nucleele (sistemele de operare) de timp real (Real Time kernel,


Real Time Operating System-RTOS). Pe piaa de software pentru microcontrolere
exista i componente numite nuclee de timp real sau sisteme de operare n timp real (RTOS). Un
astfel program de sistem de nivel profesional este o componenta software scump sau foarte
scump, funcie de complexitatea lui, de accesibilitatea surselor programului, de familia de
microprocesoare creia ii este adresat, de modul in care va fi distribuit mpreuna cu aplica ia.
Exist ins i variante de RTOS, de mai mic complexitate, din categoria freeware sau
shareware, care pot fi utilizate cu performante mulumitoare. Un sistem de operare n timp real
faciliteaz crearea aplicaiilor aa zise de timp real, dar nu garanteaz i faptul ca ele chiar se
vor executa n timp real, aceasta depinznd de modul n care este utilizat acest software la nivel
de sistem. Spre deosebire de un calculator cum este PC-ul, un sistem integrat (embedded system)
este proiectat ntotdeauna ntr-un anumit scop i are un cod care se execut aproape ntotdeauna
dintr-o memorie ROM, fiind de presupus c nu se modific pe parcursul execu iei aplica iei.
Astfel lucrurile sunt uurate deoarece comportarea sistemului poate specificat complet nc din
faza de proiectare. Din aceasta cauza, n cazul multora din aplicaii, multe probleme se pot
rezolva n timp real i fr s se utilizeze un RTOS.
Esenial este pan la urm calitatea i competena celui care programeaz aplicaia !

1.12 CRITERII DE ALEGERE A UNUI MICROCONTROLER


n momentul n care se dorete alegerea unui microcontroler (sau mai bine zis a unei
familii de microcontrolere) pentru dezvoltarea unei aplicaii de tip embedded system exist
mai multe criterii care trebuie luate n considerare, innd cont de implicaiile multiple ale
acestei alegeri. Vom ncerca s grupm aceste criterii dup cerinele impuse aplicaiei i s
prezentm cteva din ntrebrile rezultate, la care trebuie dat un rspuns.
a. Costurile aplicaiei
- Care va fi scara de producie: prototip, producie mic/medie sau de mas?
- Care sunt costurile permise pentru microcontroler?
- Care sunt costurile permise pentru mediul de programare i dezvoltare?

23
Microcontrolere

b. Timpul de dezvoltare al aplicaiei


- Ce limbaj de programare s aleg ?
- Ce limbaje de programare cunosc bine i ce medii de dezvoltare am utilizat?
- Ce modalitate de testare i depanare folosesc: simulator, sistem de dezvoltare, emulator?
c. Caracteristicile fizice
- Care este viteza de prelucrare (de calcul) necesar?
- De ct memorie am nevoie pentru program i respectiv date?
- Va fi necesar si o memorie extern?
- Ce fel de alimentare este disponibil i care sunt limitrile acesteia?
- De cte intrri i/sau ieiri am nevoie?
- Ce fel de intrri i/sau ieiri sunt necesare: intrri/ieiri analogice, ieiri numerice de curent
mai mare?
- Care sunt resursele necesare n materie de temporizare/numrare si care ar fi caracteristicile lor
cele mai importante (rezoluie, frecventa maxima de numrare) ?
- Ce tip de capsul, ce dimensiuni fizice i numr de pini ar trebui s aib?
- Care este gama temperaturilor de lucru necesare?
- Aplicaia va funciona ntr-un mediu cu caracteristici speciale, de exemplu n care exist
perturbaii electromagnetice puternice?
d. Conectivitatea
- Care sunt resursele de comunicaie necesare: cte porturi seriale asincrone i cu ce
caracteristici, ce tipuri de magistrale seriale sincrone sunt disponibile?
- Este necesar o conectivitate Ethernet (o stiv TCP/IP), USB sau wireless (stive Bluetooth,
Zigbee, etc.)?
e. Compatibilitate, scalabilitate i dezvoltarea ulterioar
- Cu ce tipuri de circuite se poate interfaa ct mai simplu: sisteme de afiare, senzori, elemente
de comand i execuie (relee, motoare de cc, motoare pas cu pas, etc.)?
- Cum se poate realiza extinderea ulterioar, atunci cnd este necesar?
- Exist mai multe variante n familia respectiv de microcontrolere, care s acopere eventualele
cerine suplimentare n materie de vitez de lucru, resurse periferice sau de memorie?
f. Alte aspecte
- Ce distribuitori exist i ct sunt de accesibili pentru mine?

24
Microcontrolere

- Care este suportul oferit de fabricant sau distribuitor icare este baza de cunostine existent:
site-uri web, documentaie on-line sau pe CD-uri, note de aplicaii, exemple de proiectare
(reference designs), software din categoria freeware/shareware si, nu n ultimul rnd, forumuri de
discuii pentru utilizatori?
Din pcate rspunsurile la multe din aceste ntrebri sunt corelate ntre ele. Un exemplu este
legtura care exist ntre criteriile de cost i cele de timp de dezvoltare. Principial, utilizarea
unui limbaj de nivel nalt mpreun cu un emulator pentru testare i depanare poate duce la
scurtarea consistent a timpului de dezvoltare. Dar preul unui compilator este ntotdeauna mai
mare dect cel al unui asamblor (nimic nu e mai ieftin dect ceva ce poate fi gratis!), iar pre ul
unui emulator este i el mai mare dect cel al unor mijloace mai simple de testare i depanare.
n practic, de cele mai multe ori, alegerea unui microcontroler pentru a
anumit aplicaie este i trebuie s fie rezultatul unui compromis.

25

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