Sunteți pe pagina 1din 7

A.

Instrumente de dezvoltare software



Programarea microcontrolerelor se realizeaz de obicei n limbaj de asamblare sau n C (dei au
aprut deja variante de programare n alte limbaje - BASIC fiind un exemplu demn de luat n
considerare).
Programarea n limbaj de asamblare const n instruciuni (codificate prin mnemonice scurte) i
operanzi corespunztori operaiilor elementare oferite de controler.
Asambloarele sunt oferite de obicei gratis de productorii controlerelor, pe cnd compilatoarele
C variaz de la gratis (cnd este posibil s fie incomplete sau pline de bug-uri) pn la preuri
prohibitive de mii de dolari (cu un numr modest de bug-uri). Pn n prezent nu exist medii C
similare cu cele de pe PC la capitolul faciliti, dar tendina clar este o apropiere de acestea.

Monitorul (Programul monitor)
Programul monitor este o aplicaie rulat de controler care comunic cu un PC de obicei prin
intermediul interfeei seriale. Capabilitile unui asemenea program sunt n general reduse. Un
program monitor tipic este o aplicaie DOS sau o aplicaie care ruleaz ntr-o fereastr de tip
DOS. Dei caracteristicile variaz de la un program la altul, un monitor poate n general
transmite mesaje text i numere ctre utilizator, folosind un port serial al microcontrolerului, care
nu va mai putea fi utilizat n alte scopuri. De cele mai multe ori este posibil oprirea execuiei
programului testat i inspectarea sau chiar modificarea memoriei RAM, respectiv a registrelor.
Importana i rspndirea acestui instrument este n continu scdere, tinzndu-se la nlocuirea
lui cu medii de programare integrate, dezvoltate sub Windows.

Mediul integrat de dezvoltare (IDE - Integrated Development Environment)
Aplicaiile Windows au devenit un standard care nlocuiete vechile programe DOS asociate
microcontrolerelor. Mai mult, n prezent un singur mediu integrat ofer posibilitatea:
1. asamblrii (uneori i compilrii!);
2. simulrii;
3. editrii de legturi;
4. lucrului cu biblioteci;
5. testrii (n mod debugger sau emulator);
6. generrii codului obiect fmal n format hexazecimal sau binar;
7. conectrii la programator i programrii circuitului.
Pentru Microchip; mediul integrat se numete MPLAB i este gratuit, iar ultima versiune se
poate descrca de la adresa Internet a firmei: www.microchip.com.

Asamblorul
Asamblorul este programul care prelucreaz instruciunile scrise ntr-un limbaj simbolic
pentru calculator, traducndu-le n coduri ale limbajului main.
Codul scris n limbaj de asamblare este de obicei mai scurt i mai performant (ca durat
de execuie) comparat cu cel elaborat n C. O serie de alte avantaje determin ns tot mai multe
companii s aleag programarea n C (i n viitorul apropiat probabil n Visual C!):
uurina elaborrii codului surs;
reutilizarea codului prin portarea extrem de simpl pe alte platforme;
standardizarea uoar;
posibilitatea elaborrii i managementului unor programe laborioase i a unor structuri de date
dinamice greu sau imposibil de obinut n asamblare;
eliberarea uoar a memoriei RAM nefolosite pentru alte variabile.
n urma asamblrii se poate genera:
un cod absolut, la adresele fixe stabilite de utilizator;
un cod relocabil, la care adresele sunt n principiu alocate de editorul de legturi.
Dei asambloarele au o sarcin relativ simpl, nu exist un standard ANSI pentru ele, de
aceea sintaxa variaz de la un asamblor la altul. n plus limbajul de asamblare este specific
fiecrei familii de microcontrolere. Un asamblor puternic ofer capabiliti de macroinstruciuni
imbricate (adic grup de instruciuni suprapuse) cu etichete locale, bucle imbricate de asamblare
condiionat i mesaje de eroare clare i explicite.
Pentru Microchip, asamblorul oferit se numete MPASMWIN, face parte din pachetul
MPLAB i este gratuit.

Editorul de legturi concateneaz diversele module rezultate n urma asamblrii i aloc adrese
pentru aceste module, dar i pentru variabile din memoria RAM. Editarea de legturi permite
ntre altele lucrul n echip, reutilizarea codului, faciliti care se aplic n cadrul proiectelor de
dimensiuni mari.
Pentru Microchip, editorul de legturi se numete MPLINK, face parte din pachetul MPLAB i
este gratuit.

Bibliotecarul
O dat testate, diferitele subrutine asamblate/compilate pot fi colecionate" n biblioteci.
Aceast funcie este ndeplinit de un program specializat, numit bibliotecar. Pentru Microchip,
bibliotecarul se numete MPLIB, face parte din pachetul MPLAB i este gratuit.

Simulatorul
Simulatorul este un instrument software care ctig tot mai mult teren datorit creterii
performanelor i a costului sczut sau nul. Dup cum i sugereaz numele, acesta este un
program care simuleaz comportarea microcontrolerului pe un PC, permind rularea pas cu pas,
examinarea i/sau modificarea registrelor, a memoriei, etc. Simulatoarele performante ofer
faciliti suplimentare, cum ar fi:
stimulare asincron;
fiiere de stimuli care permit modificri controlate pentru I/O;
simulare de periferice complexe: timere, PWM, ADC, etc.
simularea evenimentelor complexe: ntreruperi, WDT, etc.
Cu toate c reprezint un instrument deosebit de valoros de dezvoltare i testare, simulatoarele
nu pot rezolva o serie de probleme legate de comportarea n timp real a controlerului. Nici un
simulator nu se apropie mcar de viteza de operare a controlerului simulat. Pentru Microchip,
simulatorul se numete MPSIM, face parte din pachetul MPLAB i este gratuit.
Este evident c pentru funcionare, simulatorul nu are nevoie de nici un fel de hardware.

EXEMPLU: Simulatorul Proteus
Dei prea greu de crezut, realizatorii pachetului Proteus au reuit performana remarcabil de a
simula funcionarea hardware a unui procesor ntr-un mediu tipic de circuite electronice. Cu o
interfa grafic intuitiv (dar cu butoanele de mouse inversate) se pot simula o serie de familii
de procesoare (Intel 8031 i o serie de derivate, Motorola 68000, Zilog Z80 i perifericele sale,
Intel 8255, controlere din familia AVR Atmel, Motorola HC11, Microchip PIC12C508,
PIC16F84A, PIC16F877 i multe altele).
Sunt oferite faciliti de animaie, simulri analogice Spice, simulri digitale dar mai ales
posibilitatea ncrcrii codului compilat n procesor, rularea pas cu pas, inspectarea registrelor. n
anumite situaii este posibil chiar verificarea codului surs scris n limbaj de asamblare sau C.
Pentru scopuri didactice i dezvoltarea de proiecte mici-medii nu exist o variant mai bun
(poate mai ieftin).
Generatorul de fiier executabil n final, mediul software trebuie s produc un fiier care se va
ncrca n memoria program a controlerului (ntr-un EPROM extern sau intern - n memoria
FLASH). Cele mai uzuale formate pentru aceste fiiere sunt Intel hexa (.nex), Motorola S19
(.s19) i binar. Exist o serie de utilitare gratuite de conversie ntre aceste formate.

B. Instrumente de dezvoltare hardware

Debugger-ul
Debugger-ul este un instrument hardware asistat de un software corespunztor prin care se
testeaz n anumite limite funcionarea aplicaiei dezvoltate. Debugger-ul folosete chiar
microcontrolerul din aplicaie pentru rulare pas cu pas, interogare de registre, afiare de stri, etc.
De cele mai multe ori facilitatea de debug este combinat cu cea de programare (care se
realizeaz uzual serial pe 2-4 fire). n concluzie, cu preul a ctorva locaii folosite din memoria
RAM i cteva zeci din cea ROM, a 2-4 pini folosii pentru comunicare, se poate executa un
program n regim pas cu pas, se pot seta puncte de ntrerupere, se pot vizualiza i modifica
registrele procesorului, etc.
n acest mod se poate verifica funcionarea aplicaiei foarte aproape de situaia real i se pot
corecta o serie de greeli care au scpat simulrii. Nu se pot totui depista corelaiile din timp
real (comunicaia cu debugger-ul consum timp). Un debugger reprezint o alegere corect
pentru o firm mic, care nu-i poate permite un emulator.

Emulatorul
Un emulator este un instrument hardware asistat de un software corespunztor care permite
explorarea total a controlerului i rularea pas cu pas a programului. Un emulator este un
echipament extern care comunic cu PC-ul prin interfaa serial sau paralel, i este ataat prin
intermediul unui dispozitiv conectat n locul microcontrolerului emulat; acest ansamblu se
comport identic cu microcontrolerul emulat. Emulatorul va fi ntotdeauna un circuit n timp real
(la fel de rapid ca procesorul martor) i ofer toate facilitile acestuia. Altfel spus el se
conecteaz n locul microcontrolerului n sistemul pentru care se dezvolt aplicaia, permind un
control total al sistemului int, n timp real, fr a folosi nimic din resursele acestuia.
Emulatoarele sunt specifice fiecrei familii de controlere. Emulatoarele sunt extrem de scumpe,
de la 2.000 USD la 20.000 USD. Au aprut pe pia o serie de echipamente ieftine, sub 1.000
USD, denumite comercial "emulatoare", care sunt debugger-e mai mult sau mai puin
performante - acestea vor folosi o parte din resursele procesorului martor (unele locaii RAM,
memorie RAM i minim dou linii I/O). Asemenea echipamente nu pot funciona n timp real i
nu pot testa integral comportarea microcontrolerului emulat n circuit. Chiar un emulator
"cinstit" difer ca i caracteristici electrice de controlerele emulate (cureni de intrare/ieire,
temporizri), iar de cele mai multe ori nu pot opera la tensiuni i frecvene de tact reduse.



Programatorul
Dup asamblarea i/sau compilarea codului surs, fiierul hexazecimal generat trebuie "introdus"
n microcontroler. Acest lucru se poate realiza:
1. prin intermediul unui programator de memorii EPROM n cazul variantelor de
controlere fr memorie program. Circuitul EPROM astfel programat se va introduce ntr-un
soclu pe placa microsistemului. Orice reprogramare a memoriei presupune o tergere prin
expunerea memoriei EPROM la radiaii ultraviolete timp de circa 30 de minute i apoi
reprogramarea n programator.
2. prin intermediul unui emulator de EPROM, realizat de obicei cu ajutorul unei memorii
SRAM. Emulatorul se conecteaz la soclul memoriei EPROM i se comport ca o memorie
EPROM, pclind microsistemul c ar fi o memorie EPROM. Reprogramarea este extrem de
rapid n acest caz, emulatorul fiind legat de obicei la un PC prin intermediul portului paralel sau
mai rar serial. Din pcate un emulator de EPROM este o pies relativ costisitoare iar dezvoltarea
soluiilor FLASH a fcut aceast opiune mai puin atractiv.
3. pentru variantele OTP i FLASH, utilizarea unui programator specific familiei de
controlere este obligatorie, deoarece specificaiile de programare pentru fiecare tip de controlere
sunt clare i publice, pe Internet se gsesc o serie de scheme de programatoare simple i uor de
construit. Asemenea programatoare se conecteaz la PC cel mai adesea pe portul paralel, dar i
portul serial este uneori folosit. Un microcontroler FLASH cu un programator simplu (de pe
Internet) i un mediu IDE gratuit reprezint cu siguran cea mai ieftin combinaie prin
intermediul creia se poate dezvolta un proiect cu microcontroler astzi.


C. Caracteristicile microcontrolerelor

Tensiunea de alimentare
Dei majoritatea microcontrolerelor sunt proiectate s funcioneze la tensiunea standard de
alimentare de 5 V, exist tot mai multe variante care opereaz la tensiuni reduse de 3 sau 3.3 V
sau chiar n domenii de tensiune 2 - 6 V, cu meniunea c o tensiune de alimentare redus
afecteaz de obicei negativ frecvena maxim de operare. Funcionarea la tensiune de alimentare
redus apropiat de cea limit din catalog (furnizat de o baterie sau un condensator de back-up)
poate fi uneori nsoit de erori, i de aceea utilizarea unui WDT (atent testat n aplicaie!) este o
protecie necesar n acest caz.

Oscilatorul/generatorul de tact
Ca orice sistem sincron, microcontrolerul dispune fie de un oscilator extern cu cuar, fie de un
cristal cu cuar asociat unui oscilator intern, fie de varianta mai ieftin dar mai puin precis -
utilizarea unui rezonator ceramic.
Exist modele care ofer un oscilator RC intern (economisind deci 1-2 pini din capsul, aspect
deosebit de important mai ales la capsulele mici de 8 pini) sau extern, dar la care frecvena de
operare variaz pronunat cu tensiunea de alimentare, temperatura, abaterile tehnologice,
valoarea nominal a R i C. Asemenea aplicaii sunt recomandate doar acolo unde o variaie
serioas a frecvenei de operare nu deranjeaz performanele.
Frecvenele de tact tipice variaz n prezent ntre 4 i 50 MHz. Spre deosebire de PC-uri, aceast
frecven de operare nu ofer msura absolut a capacitii de procesare a controlerului,
exprimat n MIPS (millions of instructions per second), deoarece numrul de perioade necesar
executrii unei instruciuni variaz de la o familie de controlere la alta, iar unele instruciuni
necesit mai multe cicluri dect altele. O exprimare realist este MIPS/MHz, care indic cte
instruciuni se execut la fiecare MHz al tactului. Frecvene de tact mari implic evident att
consum de putere mai ridicat ct i o emisie mai pronunate de unde electromagnetice.

Intrarea de RESET\Activarea RESET iniializeaz controlerul, acesta relund execuia ca la o
nou punere sub tensiune. Majoritatea noilor microcontrolere vor porni la punerea sub tensiune
cu pinul RESET conectat la alimentare (VDD), dar unele modele mai vechi necesit un circuit
RC de pornire sigur.
Exist microcontrolere care nu au un pin de RESET (n cazul capsulelor cu numr redus de pini),
elibernd un pin suplimentar I/O. Acestea nu pot fi resetate nard n timpul funcionrii (cu
excepia bineneles a tierii tensiunii de alimentare), aspect care poate fi depit prin prezena i
utilizarea unui WDT (timer watchdog).

Porturi I/O (I/O Ports)
Reprezint cea mai comun facilitate hardware a controlerelor. Un port este de obicei un grup de
8 linii, care pot fi utilizate individual ca intrare sau ca ieire i care este adresat ca un singur
octet.
Fiecare linie poate fi configurat independent ca intrare sau ieire, pot fi configurate rezistene de
pull-up pe intrri i uneori pe ieiri (o rezisten de valoare ridicat conectat la tensiunea de
alimentare VDD).

Este uzual pentru microcontrolerele moderne s multiplexeze mai multe funcii pentru acelai pin
(nu este neobinuit s existe chiar 6 asemenea funcii asociate aceluiai pin). Pe lng funcia
fundamental de intrare-ieire digital, celelalte funcii sunt legate de periferice digitale
(ntreruperi, timere, USART, SPI, l2C, etc) sau analogice (ADC, Comparator, DAC, etc).
n cadrul unui microcontroler pot exista pini care pot debita sau consuma un curent sporit (10-40
mA) fa de 2-5 mA la pinii obinuii. Este important de consultat foaia de catalog a
microcontrolerului pentru a nu depi curentul de alimentare total maxim admis pentru
microcontroler.

Protecia la scderea tensiunii de alimentare
Acest modul BOD = Brown-Out Detector reseteaz controlerul dac tensiunea de alimentare a
sczut sub o anumit valoare, prestabilit (i uneori programabil) i menine starea de Reset
pn la revenirea tensiunii de alimentare la valoarea nominal; Se obine astfel o protecie
eficient mpotriva comportrii cu erori la tensiuni reduse de alimentare (inclusiv la funcionarea
defectuoas a memoriei EEPROM, acesta fiind cel mai puternic motiv pentru a utiliza aceast
facilitate). Exist o serie de circuite externe cu 3 pini care efectueaz aceast funcie sau
regulatoare liniare integrate care au o ieire de Reset destinat a fi conectat la pinul omonim al
microcontrolerului.
La microcontrolerele moderne exist i un alt modul numit LVD (Low Voltage Detector -
detectarea tensiunii sczute), format dintr-un convertor digital analog, un multiplexor i un
comparator. Odat activat, modulul LVD va monitoriza tensiunea la un pin, comparnd-o
permanent cu o valoare programabil, stabilit prin DAC (uzual ntre 1 i 4 V). La scderea sub
aceast valoare se va genera o ntrerupere sau un RESET.

WDT (Watchdog Timer)
Orice microcontroler ar trebui sa aib un WDT, iar n caz c nu are poate fi folosit oricnd unul
extern (de exemplu Dallas 1232).
WDT este un timer special folosit pentru revenirea din situaii dificile, cum ar fi:
probleme de software, ca de exemplu bucle infinite
probleme de hardware care blocheaz funcionarea corect a programului.
Acest timer verific c anumite poriuni din program sunt atinse ntr-un timp predeterminat.
Acest timer are propriul oscilator intern cu ceas i de aceea nu este afectat n funcionare de
modurile tip SLEEP n care ceasul sistem este oprit.
WDT este utilizat pentru monitorizarea funcionrii corecte a sistemului:
O dat ce este activat el ncepe decrementarea coninutului su, ncepnd cu o valoare
programat (timp programat n registrul su de control);
Dac ajunge la zero va activa intrarea de RESET a MC pentru iniializare i repornirea
programului;
Pentru a bloca aciunea de RESET, programul rulat trebuie s restarteze circuitul
watchdog timer nainte ca acesta s ajung la zero;
Este util n cazul erorilor nepermanente ale sistemului.
Un controler bun ofer i facilitatea de a diferenia un RESET produs de punerea iniial sub
tensiune de unul datorat unui WDT.


ntreruperile (Interrupts)
Dei execuia unui program este n general liniar, anumite condiii interne sau externe
controlerului pot determina execuia unei rutine de ntrerupere la ncheierea creia unitatea
central i reia operaia curent de unde ea a fost ntrerupt. O ntrerupere permite controlerului
s rspund rapid la evenimente fr ca aciunea de verificare a apariiei acestor evenimente s
consume timp n unitatea central. O rutin de tratare a ntreruperii trebuie s fie ct mai scurt
pentru a nu introduce ntrzieri n execuia codului i a mpiedica execuia altor rutine de tratare a
celorlalte ntreruperi de prioritate mai sczut. De obicei sursa ntreruperii este indicat de un bit
setat ntr-un registru.
Rutina de tratare a ntreruperii trebuie s salveze acumulatorul i/sau locaiile de memorie asupra
crora acioneaz, n caz contrar funcionarea programului principal este compromis. Stiva este
utilizat de obicei pentru salvarea temporar a strii i coninutului registrelor. Multe controlere
permit ntreruperi imbricate (nested interrupts) - o ntrerupere i tratarea ei putnd surveni n
cadrul altei ntreruperi, ceea ce conduce la mrirea gradului de utilizare a stivei. La pornirea
iniial a programului ntreruperile sunt inhibate i trebuie activate prin cod.
Figura 1.11.a descrie execuia unui program fr ntreruperi. Dup ncheierea Procesului
1, este ateptat un eveniment (de exemplu apsarea unei taste). Controlerul ateapt ntr-o bucl
att ct este necesar ca operatorul uman s apese un buton. n acest interval controlerul nu
execut nimic altceva i nici nu poate executa altceva. La o vitez de 1 MIPS i chiar pentru un
operator uman rapid, la o caden de 200 ms la apsarea tastelor, controlerul ar putea executa
ntre dou apsri 200.000 instruciuni. O asemenea abordare numit polling - prin interogare,
este acceptabil doar pentru aplicaiile simple i n exemplele demonstrative din aceast carte.
O abordare mult mai elegant este utilizarea ntreruperilor (figura 1.11 b). n acest caz
procesorul execut liniar o secven de cod pn la apariia unui eveniment care determin o
ntrerupere i tratarea sa. Starea curent este salvat i respectiv restaurat la sfritul tratrii
ntreruperii, astfel nct controlerul poate relua execuia programului principal din poziia n care
a fost ntrerupt ca i cnd nimic nu s-ar fi petrecut.



Exist ntreruperi externe, care n cazul cel mai simplu pot fi generate de schimbarea strii unui
pin i ntreruperi interne asociate diferitelor periferice.
Exist ntreruperi mascabile, care pot fi inhibate sau ignorate prin program, respectiv
nemascabile - care nu pot fi ignorate. Microcontrolerele pe 8 bii nu au implementat nici o
ntrerupere nemascabil. Cderea tensiunii de alimentare este exemplul tipic de ntrerupere
nemascabil din lumea microprocesoarelor x86, iar n cazul microcontrolerelor ea este suplinit
ns de Brown-Out Detector, respectiv LVD.
Pentru microcontrolerele evoluate ntreruperile sunt ierarhizate pe prioriti-o ntrerupere de
prioritate mai ridicat putnd ntrerupe o tratare a unei ntreruperi mai puin prioritare. La
PIC18F452 exist doar dou niveluri de prioritate (Low i High), dar la alte controlere pot exista
8 sau chiar mai multe niveluri, caz n care se folosesc vectori de ntrerupere.
Timere
Un timer este n cel mai simplu caz un numrtor programabil. Semnalul de tact este obinut de
la oscilatorul controlerului sau poate fi un semnal aplicat unui pin. Unui timer i se poate asocia
un circuit de prescalare (i uneori un circuit de postscalare) pentru a mri capacitatea de
numrare. n prezent timerele sunt pe 8 sau 16 bii; numrarea poate avea loc n sens cresctor
sau descresctor, dar este prestabilit pentru un tip de controler. Un timer poate genera o
ntrerupere la depire (atunci cnd coninutul su devine zero). De obicei timer-ul poate fi citit
i scris n timpul funcionrii, facilitate care permite generarea unor intervale de timp extrem de
precise. Timer-ele moderne ofer n plus faciliti de comparare i sau captur.
Prin captur (capture) se stocheaz valoarea timer-ului n momentul n care apare o tranziie
activ la unul din pinii controlerului, iar opional se poate genera o ntrerupere (figura 1.12).
Prin comparare (compare) se genereaz o ntrerupere cnd timer-ul ajunge la o valoare
prestabilit (figura 1.12).




PWM - Modulatorul n durat
Modulatorul n durat PWM (Pulse Width Modulation) produce un tren de impulsuri cu durata
programabil a strii SUS i JOS, prin aceasta permindu-se modificarea factorului de umplere
(duty cycle). Semnalul PWM se poate utiliza direct (de exemplu pentru comanda unei diafragme
piezoelectrice sau intensitii luminoase a unui LED sau bec) sau se poate filtra i amplifica
(atunci poate comanda un motor de curent continuu, un difuzor sau o alt sarcin (figura 1.14)).



Chiar la microcontrolerele de 8 bii, factorul de umplere poate avea o rezoluie bun - de
exemplu de 10 bii la PIC18F452. Aceasta nseamn c un PWM urmat de un filtru RC trece-jos
se poate folosi ca o alternativ ieftin i destul de precis pentru a nlocui un DAC. n cazul
alimentrii la +5V, un asemenea semnal PWM filtrat poate lua orice valoare ntre 0 i 5 V cu o
rezoluie de 5 / 1024 = 4.88 mV (unde 1024= 2
n
, n=10 bii).

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