Documente Academic
Documente Profesional
Documente Cultură
1 - Generalitati MC - Verificare 1
1 - Generalitati MC - Verificare 1
1 - Generalitati MC - Verificare 1
1 MICROCONTROLERE (generalitati)
1. Introducere
In sistemele actuale de automatizare un rol tot mai important il au echipamentele
bazate pe microcontrolere, care reduc costul si gabaritul sistemului, extinzind capacitatile
functionale si performantele acestuia.
Microcontrolerul poate fi definit ca un microsistem specializat, care inglobeaza pe
acelasi chip mai multe componente, specifice unui sistem de control automat, cum ar fi: o
unitate centrala de prelucrare, memorie ROM, memorie RAM, interfete si circuite de I/O
(interfete de comunicatie seriale, timere programabile si contoare de evenimente, logica pentru
tratarea intreruperilor), toate unitatile fiind conectate la o magistrala (bus) interna unica.
Din punct de vedere istoric, aparitia microcontrolerelor se confunda cu etapa
dezvoltarii primelor generatii de procesoare. Initial, majoritatea procesoarelor erau folosite
exclusiv ca microcontrolere (in acceptiunea actuala a termenului), in sisteme dedicate
aplicatiilor de control al proceselor. Programarea acestor procesoare, pentru rezolvarea unei
probleme date, se facea direct in cod masina, setul de instructiuni fiind redus.
In prezent, microcontrolerele pot fi definite ca sisteme digitale integrate, cu diferite
nivele de complexitate si performante, capabile sa rezolve o gama larga de aplicatii, prin
utilizarea resurselor hardware multiple, inglobate in arhitectura si prin folosirea resurselor
software reflectate intr-un limbaj de asamblare propriu cu un set de instructiuni bogat.
Microcontrolerele actuale de 16 si 32 de biti se apropie prin performantele lor de cele ale
microprocesoarelor de uz general.
Definitie: Un microcontroler este un calculator realizat într-un singur cip (circuit integrat).
Conţine unitatea centrală de prelucrare (UCP) şi o serie de periferice. În aplicaţiile simple, un
echipament poate conţine un singur circuit – care este chiar microcontrolerul.
1
A. Din punct de vedere hardware microcontrolerele au inglobate pe aceeasi capsula diferite
elemente functionale care le fac deosebit de utile in aplicatii ce necesita un control automat.
Structura unui microcontroler include:
unitatea centrala de prelucrare (Central Processing Unit - CPU) cu o arhitectura
orientata in general pe acumulator (Acumulator - A) sau, in unele cazuri, pe registri. Unitatea
centrala de prelucrare contine o unitate aritmetica si logica (Arithmetical Logic Unit - ALU)
care executa operatiile logice si aritmetice si care calculeaza adresele operanzilor din
memorie.
Registrii speciali ai unitatii centrale sunt: registrul contor de instructiuni (Program
Counter - PC), registrul indicator de stiva (Stack Pointer - SP), registrul indicatorilor
conditionali (Program Status Word - PSW).
memoria ROM programabila (PROM/EPROM) care contine secventele de
initializare ale microcontrolerului, programul de executie si eventual un sistem de operare.
memoria RAM pentru stocarea datelor care poate avea o organizare speciala sub
forma de bancuri de registri si/sau zona de memorie RAM propriu-zisa si care contine
operanzii si variabilele temporare necesare programului de executie.
circuite de intrare/iesire (sau porturile I/O) cu functiuni variate, de la transferul
datelor de la sau catre microcontroler, pina la transferul semnalelor de control in sistem. In
functie de procesor, interfetele I/O sunt de tipul:
- Porturi paralele pentru transfer programat I/O
- Interfete de comunicatie seriala (Universal Asynchronous Receiver Transceiver -
UART) care permit comunicatia, de obicei la distanta, cu un dispecer sau calculator central,
pe canal telefonic.
- Timere Programabile si Contoare de Evenimente care furnizeaza semnale de control
si comanda in sistem si care pot urmari desfasurarea unor evenimente externe
microcontrolerului.
Blocul de Control si Sincronizare (Timing) care furnizeaza semnale de comanda
pentru unitatile functionale ale microcontrolerului cum ar fi: semnalele de scriere/citire a
2
memoriei (RD/WR), semnalele de validare (strobe) pentru memorii, s.a.. El primeste din
exterior semnalele de initializare (RESET) si de cerere de intreruperi (INT). Acest bloc
contine si unitatea de tratare si control al intreruperilor, dotata, acolo unde sursele de cerere de
intrerupere sunt multiple, cu un codor de prioritati (logica pentru arbitrajul intreruperilor).
Generatorul de semnale de ceas care furnizeaza tactul pentru toate blocurile
functionale ale microcontrolerului.
Magistrala interna (pe 4, 8, 16, 32 sau 64 de biti) la care se conecteaza toate
elementele functionale ale microcontrolerului.
Observatii:
- in cazul arhitecturilor orientate pe registri acumulatorul (A) este inlocuit cu o arie de
registre;
- UCP contine un registru pentru instructiuni si un decodificator (RI & DI) care
furnizeaza instructiunea decodificata blocului de control al unitatii de executie (UE). La unele
microcontrolere exista o coada de instructiuni care face extragerea in avans a instructiunilor
din memoria program;
- pentru a preveni autoalimentarea pe intrari a UAL cu date de la iesirea lui (situatie
care se numeste “cursa critica” a circuitului combinational) se prevad pe ambele intrari niste
registre tampon (RT) care fac memorarea temporara a datelor de la intrarile UAL;
- Stiva se poate gasi in memoria RAM sau poate fi o stiva hardware inglobata in
microcontroler, avind mai multe niveluri (ea este realizata cu registre fizice). Avantajul unei
stive hardware apare la operatiile de apel si revenire din subrutine, la activitatile de raspuns la
cererile de intreruperi. Datorita adresabilitatii simple si rapide a nivelurilor stivei hardware
operatiile amintite vor fi executate intr-un timp mai scurt. Principalul dezavantaj al stivei
hardware este limitarea dimensiunii acesteia la cele citeva niveluri (24);
- memoria RAM poate avea o organizare mai speciala sub forma de arie de registre,
ferestre sau pagini de registre de memorie, caz in care adresarea memoriei se face cu o adresa
logica translatata in adresa fizica de catre UAL. In general, nu exista un bloc special, dedicat
calculului adresei. Adresa este inscrisa de pe magistrala interna in Registrul de Adresare
RAM;
- atit memoria RAM, cit si memoria ROM pot fi expandate in exteriorul chip-ului
marind capacitatea de adresare a microcontrolerului. Prin porturile de I/O se face adresarea si
transferul datelor cu memoria externa, comenzile de selectie si strobare a chip-urilor externe
fiind date de blocul de Control si Sincronizare (Timing);
3
- toate elementele specializate inglobate in microcontroler (timere, porturi, UART,
etc.) pot fi configurate separat prin program;
- la elementele constitutive prezentate in cadrul unui microcontroler se mai pot adauga
si alte dispozitive “on-chip” cu diferite variante de la o familie de microcontrolerele la alta.
Citeva exemple de astfel de dispositive sunt:
timer de urmarire (watchdog timer) - cu rolul de a preveni resetarea
microcontrolerului la aparitia unor depasiri ale altor timere sau de a genera semnalul de
resetare la aparitia unor conditii critice aparute in functionare;
circuite generatoare de pulsuri de comanda cu largime variabila programabila
(impulsuri PWM pentru comanda convertoarelor de energie);
circuite PLL;
controlere DMA, etc.
Alti producatori, pentru a mari performantele si pentru a extinde domeniile de
utilizare ale microcontrolerelor, inglobeaza pe acelasi chip circuite de esantionare/memorare
(Sample and Hold) si convertoare analog digitale (CAD) obtinind sisteme integrate, perfect
adaptatate aplicatiilor de achizitie si prelucare de date.
4
in memorie. Sunt disponibile de asemenea si compilatoare de programe scrise in limbaje de
nivel inalt (ex.: compilatoare C), biblioteci de functii si de rutine de control predefinite,
precum si sisteme de operare. Datorita faptului ca microcontrolerele trebuie sa fie capabile sa
coordoneze activitati complexe, care presupun o monitorizare in paralel a evenimentelor din
sistem, este necesar ca sistemul de operare sa fie dotat cu facilitati de multitasking in timp
real. Ca urmare sistemele de operare dedicate microcontrolerelor au un nucleu care sa
implementeze conceptul de multitasking si sa-l faca operabil in timp real. Acest nucleu
(kernel) se numeste Real Time Kernel (RTK).
4. Clasificarea microcontrolerelor
Cel mai uzual criteriu de clasificare al microcontrolerelor este lăţimea
magistralei de date (nu de instrucţiuni, deoarece uneori sunt diferite). Cea mai mare răspândire
o au în prezent microcontrolerele pe 16 biţi.
Microcontrolerele pe 4 biţi se folosesc in special la aplicatii de larg consum si cost
redus cum ar fi: cuptoare cu microunde, prajitoare, aparate de barbierit electrice, etc. Ele sunt
disponibile doar în cantităţi foarte mari (5.000 de bucăţi sau mai mult) şi se folosesc în
aplicaţiile casnice cu un necesar minim de putere de calcul.
5
Microcontrolerele pe 8 biţi sunt oferite în capsule care pornesc de la 8 pini (şi un preţ
la magazin de circa 1 dolar) până la modele extrem de puternice, cu peste 200 de pini, oferite
la zeci de dolari. Ele sunt utilizate in aplicatii mai complexe cum ar fi: in receptoarele TV,
radio auto, in periferice si componente din industria computerelor si la orice aplicatie care
necesita un control electronic automat.
Microcontrolerele pe 16 şi 32 de biţi oferă o putere de calcul considerabilă -
există în prezent controlere comparabile cu un microprocesor Pentium, consumând o putere
disipată redusă şi având un preţ suficient de mic pentru a echipa console video sau jucării
sofisticate. Microcontrolerele pe 16 biti sunt folosite ca driver de disc in industria
computerelor, in industria auto, in aplicatii de control industrial, iar cele pe 32 de biti sunt
folosite din ce in ce mai mult in domeniul comunicatiilor in retea la punti si routere de retea,
la imprimantele laser si cu jet de cerneala, la jocurile video;
La aceste domenii de utilizare pot fi adaugate aplicatii deosebite cum ar fi: folosirea
microcontrolerelor in simularea functiilor altor circuite sau procesoare (folosirea lor ca
procesoare digitale de semnal, ca circuite de conversie analog-digitala). De asemenea, pot fi
utilizate la implementarea unor algoritmi matematici complecsi (de exemplu, pentru calculcul
logaritmic cu precizie ridicata).
Firmele producatoare lanseaza pe piata familii de microcontrolere. In cadrul unei
familii gasim circuite diferentiate arhitectural, dar pastrind multe elemente comune, cu
posibilitatea alegerii unui reprezentant al familiei, functie de cerintele impuse de aplicatie. In
acest fel se extinde domeniul de aplicatie al microcontrolerelor prin realizarea unor circuite
dedicate unor anumite arii de utilizare.
6
nu există medii C similare cu cele de pe PC la capitolul facilităţi, dar tendinţa clară este o
apropiere de acestea.
7
• posibilitatea elaborării şi managementului unor programe laborioase şi a unor structuri de
date dinamice greu sau imposibil de obţinut în asamblare;
• eliberarea uşoară a memoriei RAM nefolosite pentru alte variabile.
În urma asamblării 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 legături.
Deşi 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 fiecărei
familii de microcontrolere. Un asamblor puternic oferă capabilităţi de macroinstrucțiuni
imbricate (adică grup de instrucțiuni suprapuse) cu etichete locale, bucle imbricate de
asamblare condiţionată şi mesaje de eroare clare şi explicite.
Pentru Microchip, asamblorul oferit se numeşte MPASMWIN, face parte din pachetul
MPLAB şi este gratuit.
Simulatorul
Simulatorul este un instrument software care câştigă tot mai mult teren datorită creşterii
performanţelor şi a costului scăzut sau nul. După cum îi sugerează numele, acesta este un
program care simulează comportarea microcontrolerului pe un PC, permiţând rularea pas cu
pas, examinarea şi/sau modificarea registrelor, a memoriei, etc. Simulatoarele performante
oferă facilităţi suplimentare, cum ar fi:
• simulare asincronă;
• fişiere de stimuli care permit modificări controlate pentru I/O;
• simulare de periferice complexe: timere, PWM, CAD, 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 măcar de viteza de operare a controlerului simulat. Pentru Microchip,
simulatorul se numeşte MPSIM, face parte din pachetul MPLAB şi este gratuit.
Este evident că pentru funcţionare, simulatorul nu are nevoie de nici un fel de hardware.
EXEMPLU: Simulatorul Proteus
Deşi părea greu de crezut, realizatorii pachetului Proteus au reuşit performanţa remarcabilă de
a simula funcţionarea 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
8
perifericele sale, Intel 8255, controlere din familia AVR Atmel, Motorola HC11, Microchip
PIC12C508, PIC16F84A, PIC16F877 şi multe altele).
Sunt oferite facilităţi de animaţie, simulări analogice Spice, simulări digitale dar mai ales
posibilitatea încărcării codului compilat în procesor, rularea pas cu pas, inspectarea registrelor.
în anumite situaţii 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 fişier executabil în final, mediul software trebuie să producă un fişier care se
va încărca în memoria program a controlerului (într-un EPROM extern sau intern - în
memoria FLASH). Cele mai uzuale formate pentru aceste fişiere sunt Intel hexa (.nex),
Motorola S19 (.s19) şi binar. Există o serie de utilitare gratuite de conversie între aceste
formate.
Debugger-ul
Debugger-ul este un instrument hardware asistat de un software corespunzător prin
care se testează în anumite limite funcţionarea aplicaţiei dezvoltate.
Debugger-ul foloseşte chiar microcontrolerul din aplicaţie pentru rulare pas cu pas, interogare
de registre, afişare de stări, etc. De cele mai multe ori facilitatea de debugg este combinată cu
cea de programare (care se realizează uzual serial pe 2-4 fire). În concluzie, cu preţul a câtorva
9
locaţii folosite din memoria RAM şi câteva zeci din cea ROM, a 2-4 pini folosiţi 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 funcţionarea aplicaţiei foarte aproape de situaţia reală şi se pot
corecta o serie de greşeli care au scăpat simulării. Nu se pot totuşi depista corelaţiile din timp
real (comunicaţia 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 corespunzător 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 interfaţa serială
sau paralelă, şi este ataşat 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
facilităţile acestuia. Altfel spus, el se conectează în locul microcontrolerului în sistemul pentru
care se dezvoltă aplicația, permițând un control total al sistemului țintă, în timp real, fără a
folosi nimic din resursele acestuia.
Emulatoarele sunt specifice fiecărei familii de controlere. Emulatoarele sunt extrem de
scumpe, de la 2.000 USD la 20.000 USD. Au apărut pe piaţă o serie de echipamente ieftine,
sub 1.000 USD, denumite comercial "emulatoare", care sunt debuggere mai mult sau mai
puţin performante - acestea vor folosi o parte din resursele procesorului martor (unele locaţii
RAM, memorie RAM şi minim două linii I/O). Asemenea echipamente nu pot funcţiona în
timp real şi nu pot testa integral comportarea microcontrolerului emulat în circuit. Chiar un
emulator "cinstit" („corect”) diferă ca şi caracteristici electrice de controlerele emulate
(curenţi de intrare/ieşire, temporizări), iar de cele mai multe ori nu pot opera la tensiuni şi
frecvenţe de tact reduse.
10
Programatorul
După asamblarea şi/sau compilarea codului sursă, fişierul hexazecimal generat trebuie
"introdus" în microcontroler. Acest lucru se poate realiza:
1. prin intermediul unui programator de memorii EPROM în cazul variantelor de controlere
fără 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 radiaţii 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, păcălind 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 păcate un emulator de EPROM este o piesă relativ costisitoare iar
dezvoltarea soluţiilor FLASH a făcut această opţiune mai puţin atractivă.
3. pentru variantele OTP şi FLASH, utilizarea unui programator specific familiei de
controlere este obligatorie, deoarece specificaţiile de programare pentru fiecare tip de
controlere sunt clare şi publice, pe Internet se găsesc o serie de scheme de programatoare
simple şi uşor 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ă combinaţie prin intermediul căreia se poate dezvolta un proiect cu microcontroler
astăzi.
11