Sunteți pe pagina 1din 30

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

costurilor,

dimensiunilor,

consumului

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 soluie (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.
1

Microcontrolere
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:
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.
2

Microcontrolere
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.
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,


3

Microcontrolere
locuine, hale industriale), n industria aerospaial, n mijloacele
moderne de msurare - 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
jucrii 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
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
4

Microcontrolere
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.
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
5

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

Microcontrolere
pot executa foarte rapid i eficient, se obine 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
- 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

MEMORIEI

MICROCONTROLERELOR
n afar de memoria local de tip RAM, de dimensiuni relativ reduse
(de la x10 octei 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

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

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

Microcontrolere
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 patchuri (alterri 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,

Microcontrolere
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

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

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

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

Microcontrolere

1.8 INTERFAA EXTERN (SISTEMUL DE INTRRI I IEIRI)


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 bidirecionale 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 intrri/ieiri 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

implementare

particular

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

ordinea

cresctoare

complexitii):

12

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

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

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

14

Microcontrolere
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 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.
15

Microcontrolere
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

www.semiconductor.philips.com,

muli

Infineon,

alii:
Atmel,

Atmel,

Philips-

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

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)

17

Microcontrolere
Microcontrolere

pe

32

de

bii

construite

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

18

Microcontrolere
de 16 bii. 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 bii, 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 )
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 spaii 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.
19

Microcontrolere
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").
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
20

Microcontrolere
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

cu

utilizarea

unor

prefixe/sufixe

alfanumerice prin intermediul 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 informaiei 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

21

Microcontrolere
corespondent

instruciune

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

gestiunea

resurselor.

Limbajul

de

asamblare este primul care trebuie nvat, 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 instruciuni (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

instruciunilor

(instruciune

cu

instruciune). De fapt fiecare instruciune de nivel nalt este interpretat


ntr-o secven de 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
22

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

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

acestor

noi

microcontrolere

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

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

24

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

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
25

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

26

Microcontrolere
Cele mai cunoscute sunt Proteus VSM (Virtual System Modelling) al firmei
Labcenter

Electronics

Microprocessor

(http://www.labcenter.co.uk/)

Program

Simulator)

al

firmei

UMPS

Virtual

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

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

27

Microcontrolere
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 aplicaia. 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

execuiei

comportarea

aplicaiei.

sistemului

poate

Astfel

lucrurile

specificat

sunt

complet

uurate
nc

din

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

Microcontrolere
- 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?
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
29

Microcontrolere
- 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?
- 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 preul 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.

30

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