Documente Academic
Documente Profesional
Documente Cultură
Microcontrolere Cap 1
Microcontrolere Cap 1
Capitolul 1
INTRODUCERE
1
Microcontrolere
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.
3
Microcontrolere
4
Microcontrolere
5
Microcontrolere
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.
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.
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).
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
16
Microcontrolere
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.).
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.
19
Microcontrolere
20
Microcontrolere
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.
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.
23
Microcontrolere
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