Documente Academic
Documente Profesional
Documente Cultură
Introducere
Capitolul 1 INTRODUCERE
1
Microcontrolere 1. Introducere
2
Microcontrolere 1. Introducere
3
Microcontrolere 1. Introducere
4
Microcontrolere 1. Introducere
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
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
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.
5
Microcontrolere 1. Introducere
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 parametrii
(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). Vezi i Bootloader.
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
(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,
6
Microcontrolere 1. Introducere
dect, eventual, intr-o variant cu interfa serial (memorie RAM, FLASH sau EEPROM cu
interfa I2C, SPI, etc.) si numai ca memorie de date.
7
Microcontrolere 1. Introducere
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)
- 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).
8
Microcontrolere 1. Introducere
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).
9
Microcontrolere 1. Introducere
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.
10
Microcontrolere 1. Introducere
aprute, fiind mult superioare variantei iniiale. Exist i o dezvoltare recent sub forma
familiei MCS-296 (80C296).
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.
11
Microcontrolere 1. Introducere
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!).
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.
12
Microcontrolere 1. Introducere
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.
13
Microcontrolere 1. Introducere
b. Interpretere
Un interpreter 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 instruciuni main care
se execut imediat.
Cele mai rspndite interpretere 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
14
Microcontrolere 1. Introducere
c. Compilatoare
Un compilator combin uurina n programare oferit de un interpreter (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 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,
15
Microcontrolere 1. Introducere
fiind de fapt programat ntr-o memorie de tip (EP)ROM/FLASH sau ncrcat direct (up-
loaded) 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.
16
Microcontrolere 1. Introducere
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 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 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 aplicaiei. 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 !
17
Microcontrolere 1. Introducere
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?
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.)?
18
Microcontrolere 1. Introducere
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.
19