Tehnica mecanica
MicrocontrolereMicrocontrolere Mecatronica este un domeniu interdisciplinar la granita a patru stiinte ingineresti: mecanica, electronica, automatica si calculatoarele. Integrarea multidisciplinara are loc in mod determinant inca din faza de proiectare a unui produs mecatronic. Scopul urmarit este obtinerea unor performante functionale superioare la un pret de cost scazut. Atat fazele de proiectare si fabricatie cat si functionarea propriu-zisa a produsului mecatronic se bazeaza pe utilizarea sistemelor logice si a sistemelor de calcul pentru a obtine performantele functionale si flexibilitatea necesare. Intr-un sistem mecatronic, senzorii furnizeaza un volum important de informatie care este achizitionata, stocata si prelucrata de sistemele numerice implicate (figura 1). Sistemele numerice prelucreaza informatia pe baza unor modele matematice si a unor legi de control prestabilite si furnizeaza comenzile necesare pentru elementele de executie ale sistemului pentru a asigura functionarea dorita. In procesul de proiectare a produselor mecatronice este necesar sa se mentina un bun echilibru intre doua activitati. Pe de o parte, dezvoltarea de modele fizice si matematice, simularea numerica, proiectarea sistemelor de control analogice sau numerice sunt etape cu caracter teoretic si relativ decuplate de sistemele reale. Utilizarea tehnicii de calcul sustine in mod determinant aceasta activitate de proiectare. Pe de alta parte, validarea experimentala a modelelor si implementarea si testarea sistemelor fizice, a doua dintre activitatile amintite, se bazeaza deasemenea esential pe utilizarea sitemelor logice si calculatoarelor. Intr-o ordine secventiala, in procesul de proiectare a sistemelor mecatronice, calculatoarele sunt folosite pentru a modela, analiza si simula componentele si sistemul mecatronic in ansamblu. Mai departe, sitemul de calcul, ca parte a sistemului de masura, evalueaza performantele sistemului mecatronic, determina valorile parametrilor functionali si valideaza modelele folosite. Proiectul final al sistemului de control este realizat tot folosind un calculator si programe specializate. Introducere Structura unui sistem de calcul poate fi reprezentata ca in figura 1. Unitatea centrala de prelucrare CPU are doua componente principale: - unitatea de control CU, - unitatea logico - aritmetica ALU. Unitatea centrala de prelucrare UCP are un rol de coordonare a sistemului, iar unitatea logico - aritemetica ALU este responsabila cu efectuarea opratiilor de calcul.
Figura 1 Structura principiala a unui calculator Sunt cunoscute doua tipuri principiale de arhitecturi : Arhitectura Harvard, Arhitectura Von Neumann
Figura 2 Arhitecturile a) Von Neumann si b) Harvard Arhitectura Harvard se bazeaza pe cuplarea memoriei care contine programul si memoriei care contine datele pe magistrale diferite. In acest fel, instructiunile si datele pot fi procesate simultan ceea ce permite cresterea performantelor. Adresa 0, spre exemplu, din spatiul programului coexista cu adresa 0 din spatiul de date si se refera la locatii fizice diferite. Pentru a beneficia de acest avantaj, multe strucuri de microcontrolere folosesc arhitecturi de tip Harvard. Arhitectura Von Neumann cupleaza tot spatiul de memorie pe o aceeasi magistrala ceea ce impune ca fiecare locatie sa aiba o adresa unica. Desi eficienta acestei arhitecturi este mai scazuta decat aceea a arhitecturii Harvard, se obtine avantajul tratarii unitare atat a instructiunilor cat si a datelor. Calculatoarele personale se bazeaza pe o arhitectura de tip Von Neumann desi exista posibilitatea de a utiliza porturile de intrare / iesire ca un spatiu de memorie separat, accesibil cu instructiuni (input si output) si adrese distincte de acelea folosite de memoria propriu -zisa. Se produc si microcontrolere bazate pe arhitectura Von Neumann. In literatura de specialitate se face distinctie intre microprocesor, microcomputer, procesor numeric de semnal DSP, microcontroler si calculator. Solutia tehnologica cu unitatea centrala de prelucrare intr-un singur circuit integrat este identificata cu termenul de microprocesor. In afara circuitului microprocesorului raman circuitele de memorie si circuitele de intrare / iesire specializate in interfatarea perifericelor cu sistemul (controlere). Calculatoarele bazate pe microprocesoare, care pot avea eventual si memorie inclusa in acelasi circuit integrat cu procesorul, sunt identificate prin termenul de microcalculator si sunt realizate pe o singura placa cu circuite imprimate. Microprocesoarele si microcalculatoarele nu sunt specializate pentru un anumit tip de aplicatii ci ofera instructiuni cu care se pot scrie programe pentru orice domeniu. Un microprocesor specializat pentru prelucrarea semnalelor este identificat prin termenul DSP - Digital Signal Processing . Cel mai frecvent, un DSP include si convertoarele analog - numeric CAN si numeric - analog CNA cu care procesorul se poate cupla la proces. Un DSP este un calculator al carui ALU poate executa o instructiune specifica numita MAC Multiply - Accumulate care este folosita de majoritatea algoritmilor de prelucrare de semnal. Numarul de biti pe care procesorul de semnal ii poate multiplica si acumula determina aplicatiile in care poate fi folosit respectivul procesor de semnal. Un microprocesor care are facilitati integrate de a citi marimi numerice si analogice si de a furniza comenzi numerice sau analogice si care are si memoria in acelasi circuit este identificat ca microcontroler. Un microcontroler este practic un calculator intr-un singur circuit integrat si care include un microprocesor cu rol de unitate centrala de prelucrare CPU. Un microcontroler nu ofera, in general, facilitati de dezvoltare si testare a programelor. Programele sunt dezvoltate pe un sistem independent si sunt transmise printr-un canal de comunicatie in memoria microcontrolerului unde sunt executate, atat in timpul testarii cat si in timpul functionarii propriu-zise. Microcontrolere pot fi inglobate usor in structura unui sistem mecatronic desi ele nu sunt specializate pentru un anumit tip de aplicatie. Intr-o maniera simpla, comparatia dintre procesoarele de semnal si microcontrolere se reduce la faptul ca un procesor de semnal va repeta un algoritm de calcul matematic in timp ce un controler va trata evenimente externe. Exista, ca intotdeauna, solutii combinate: microcontrolere care includ procesoare de semnal si, reciproc, procesoare de semnal care includ microcontrolere. Din punct de vedere tehnologic exista posibilitatea de a implementa intr-un circuit integrat un anumit algoritm, de exemplu un algoritm de reglare de tip PID. Rezultatul este un circuit integrat specializat pentru o aplicatie ASIC, Application Specific Integrated Circuit. Un ASIC poate contine o unitate centrala de prelucrare CPU si / sau o memorie si / sau un controler sau chiar o celula de tip MAC. O varianta speciala de sistem de conducere, cu largi aplicatii in mecatronica, este automatul programabil sau PLC Programmable Logic Controller. Variantele moderne de automate programabile sunt succesoarele schemelor electromecanice cu contacte si relee. Limbajul lor de programare a fost conceput pe baza diagramelor logice ladder specifice releelor pentru a usura intelegerea programelor prin legatura directa cu schemele cu contacte normal inchise sau normal deschise. Un automat programabil are un numar de intrari binare, pe care le poate citi de la sistemul senzorial, si pe baza carora poate genera un numar de iesiri binare catre sistemul de actionare. Legatura dintre variabilele binare de intrare si cele de iesire este realizata cu instructiunile limbajului automatului, intre care cele mai simple corespund din punct de vedere logic la legarea in serie sau in paralel a unor contacte normal deschise (variabile directe) sau normal inchise (variabile negate). Variantele de conducere continua sunt mai rar utilizate pentru ca sunt mai complexe si mai scumpe. In acest caz structura automatului este completata cu un numar de iesiri analogice care pot comanda direct elementele de executie din sistem. Fara a introduce generalizari care sa conduca la confuzii, dar pentru simplificarea exprimarii, se poate folosi termenul generic de "calculator" pentru subsitemul numeric de conducere din structura unui sistem mecatronic. Calculatorul este un termen generic care corespunde unui sistem cu structura principiala din figura 1, dar nu face o referire directa la solutia tehnologica aleasa pentru implementare. Daca o camera de luat vederi este un exemplu tipic de sistem mecatronic, care include componente mecanice, electronice, de control si tehnica de calcul, atunci este evident ca termenul "calculator" nu se va referi la un PC inclus in structura camerei! In structura unui sistem mecatronic, calculatorul, specializat sau nu, joaca rolul unui sistem de control, controler. Sistemele mecatronice tipice presupun marimi cu variatie continua in timp asociate componentelor mecanice in miscari de rotatie si translatie, fluxurilor de fluide sau gaze sau transferurilor de energie. Calculatoarele, in implementarile lor actuale, utilizeaza numai informatie numerica. De aici apare si necesitatea conversiilor analog - numerice si numeric - analogice pentru a face posibila legatura bidirectionala dintre calculator si restul subsistemelor sistemului mecatronic. Daca se examineaza functionarea unui algoritm de reglare, spre exemplu de tip PID, implementat printr-un program care ruleaza pe calculatorul aflat pe post de controler atunci, la o prima vedere, s-ar putea trage concluzia ca este vorba de o comportare identica cu aceea descrisa prin ecuatiile diferentiale teoretic asociate. In realitate, daca se examineaza programul la nivelul codului masina, se poate constata ca se executa actiuni care nu pot fi identificate cu legea teoretica de reglare decat prin efectul final. Implementarea, numerica sau prin program, in timp real a algoritmului de conducere pune probleme deosebite din punct de vedere al relativei decuplari pe care conversiile analog - numeric - analog o introduc intre procesul real si sistemul de conducere. Datorita progreselor tehnologice care au sustinut cresterea performantelor si scaderea preturilor, in sistemele mecatronice se folosesc din ce in ce mai putine componente logice discrete. Utilizarea calculatoarelor are avantajul ca schimbarea functionarii se face prin schimbarea programului si nu prin schimbarea componentelor electronice sau a conexiunilor electrice dintre acestea. Structura generala a unui microcontroler Evolutia tehnologica din ultimii ani a permis trecerea de la solutii de sisteme de conducere implementate cu circuite logice discrete, la solutii implemetate tehnologic pe o singura placa cu circuite integrate, dintre care circuitul principal este microprocesorul. Etapa urmatoare se bazeaza pe integrarea intregului sistem de conducere intr-un singur circuit integratidentificat ca microcontroler. Aplicatiile mecatronice tipice pentru utilizarea microcontrolerelor pot fi exemplicate prin urmatoarele :
electronica casnica (masini de spalat, cuptoare cu microunde, televizoare, aparatura audio - video, frigidere, aspiratoare, telefoane fara fir), echipamente periferice de calculator (imprimante, scanere, discuri dure, modemuri), controlul microclimatului (sere, fabrici, birouri, locuinte), sisteme de securizare a incintelor (locuinte, birouri, muzee, banci), industria automobilelor (securitatea pasagerilor, controlul sistemelor de directie si franare). Daca utilizarea microprocesoarelor conduce la solutii in care sunt maximizate performantele, utilizarea microcontrolerelor se bazeaza pe principiul raportului cost performanta maxim. Este evident ca un cuptor cu microunde comandat cu un microcesor Pentium s-ar putea dovedi foarte versatil, dar cu siguranta pretul ar deveni prohibitiv prin includerea unor posibilitati de calcul nevalorificate. Un exemplu de aplicatie care a condus la proiectarea, dezvoltarea si fabricatia unor tipuri specializate de microcontrolere este industria automobilistica (figura 3). Acest gen de aplicatii se caracterizeaza prin numarul mare de produse vandute, prin conditiile de functionare dificile (vibratii, socuri, variatii de temperatura, radiatii electromagnetice) si prin cerintele de robustete si fiabilitate deosebite.
Figura 3 Utilizarea microcontrolerelor intr-un autoturism In functie de marimea cuvantului de date, care este legata de marimea registrilor si de largimea magistralei de date, microntrolerele sunt de 4, 8, 16 sau 32 de biti. O arhitectura tipica de microcontroler este prezentata in figura 4.
Figura.4 Structura generala a unui microcontroler Memoria permanenta ROM (Read Only Memory) stocheaza programele si datele care nu se modifica de la o startare a aplicatiei la alta, inclusiv pe timpul deconectarii alimentarii. Acest tip de memorie este cea mai ieftina solutie pentru stocarea programelor executate in microcontrolere. Daca se utilizeaza varianta EPROM (Eraseble Programmable Read Only Memory) atunci programarea, sau "arderea", se face off-line, cand sistemul propriu-zis nu functioneaza. Se presupune ca pe pinii de date si de adrese ai circuitului se plaseaza semnale electrice care au o interpretare logica corespunzatoare identificarii locatiei si continutului dorit pentru aceasta locatie. In aceste conditii, trebuie furnizate niste semnale de programare si control prestabilite de producator pentru ca scrierea sa aiba efectiv loc. Scrierea manuala s-ar putea face pentru un numar mic de locatii. Solutia utilizata este un aparat specializat, "arzator de PROM-uri", care este cuplat la un calculator, pe care se scrie si memoreaza programul, iar programarea se face, din punct de vedere al utilizatorului, intr-un numar mic de pasi. Pentru stergerea continutului memoriei, fereastra de quartz a circuitului trebuie expusa la o radiatie cu ultraviolete. In general un circuit EPROM permite sute de cicluri stergere / scriere. Anumite microcontrolere contin memorii PROM la care stergerea nu este posibila pentru ca nu au fereastra de quartz. Un astfel de circuit se programeaza o singura data, iar solutia este foarte rentabila pentru aplicatiile in care o memorie trebuie multiplicata in mii de exemplare pentru a fi inclusa in tot atatea produse fabricate. Microcontrolerele se pot clasifica in doua clase importante: cu magistrala externa si fara magistrala externa. Magistrala externa este o colectie de semnale de adresa, date si control care permite cuplarea diferitelor periferice. Pentru a oferi variante foarte ieftine de microcontrolere se poate exclude memoria pentru program din circuit. In aceste cazuri, magistrala externa devine utila pentru a permite cuplarea unei astfel de memorii, iar solutia este acceptabila din punct de vedere al costului chiar daca trebuie luate in calcul si circuitele suplimentare necesare. Memoriile EPROM sunt relativ ieftine si nu sunt particularizate la vreun tip de microcontroler. Pentru variantele cu memoria de program inclusa in circuit trebuie folosit un echipament specializat pentru programarea acestei memorii. Tipic microcontrolere ofera intre 512 B si 4096 B de memorie ROM, dar exista variante care pun la dispozitie chiar, de exemplu, 128 KB. Memoria volatila RAM (Random Access Memory) stocheaza datele temporare care rezulta in urma executiei programului si prelucrarii datelor achizitionate. Memoria EEPROM (Electrically Erasable Programmable Read Only Memory) este o memorie care stocheaza datele rezultate in urma rularii programului, dar care trebuie pastrate si pe timpul in care sistemul este decuplat de la tensiunea de alimentare pentru o utilizare ulterioara. Un circuit EEPROM poate fi sters prin procedee electrice, nefiind nevoie de sursa de ultraviolete. Memoriile flash sunt memorii care pot fi scrise si sterse prin procedee electrice, dar, spre deosebire de memoriile EEPROM propriu-zise, nu sterg la nivel de byte ci la nivel de bloc sau chiar toata memoria o data. Problema care apare la utilizarea acestui tip de memorii este numarul de cicluri scriere / stergere pe care le poate suporta circuitul integrat respectiv. Valorile uzuale pentru acest parametru variaza de la cateva sute la cateva sute de mii ceea acopera cerintele unor aplicatii normale. Exista variante de memorii RAM, identificate prin sigla NVRAM, care isi pastreaza continutul si in perioada in care sursa de alimentare a sistemului este decuplata. Aceste memorii au circuitele de control si un acumulator cu litium incluse in capsula circuitului integrat. Numarul de cicluri scriere / stergere nu mai este limitat decat de durata de viata a acumulatorului, care este de ordinul anilor. Unitatea centrala de prelucrare CPU executa instructiunile programului si trateaza evenimentele care apar. Funtionarea CPU este o bucla infinita extragere - decodificare - executie a instructiunilor din memoria PROM. Circuitele de ceas (Timer) sunt folosite pentru a masura intervalele de timp asociate atat fenomenelor interne cat si celor exeterne. Caracteristicile oferite de circuitele de ceas diferentiaza intr-o maniera importanta tipurile de microcontrolerele . Circuitele de ceas pot realiza si o functie de evitare a blocarii sistemului (watchdog). Un program poate intra intr-o bucla infinita sau un sistem fizic poate sa nu functioneze si ca urmare un semnal asteptat poate sa numai soseasca niciodata. Pentru a evita un astfel blocaj se poate impune ca un anumit circuit de ceas sa fie adus la zero (reset) la intervale de timp prestabilite. Daca acest eveniment nu are loc, se declansaza o procedura de reinitializare a sistemului. Defectul nu poate fi inlaturat deca prin schimbari in sistem, echipamente sau programe, dar prin aceasta metoda functionarea poate fi cel putin reluata. Pentru a elibera resursele CPU care pot fi folosite in alte scopuri, exista circuite de ceas care se reincarca (reload timer) automat dupa terminarea numararii (figura 5).
Figura 5 Variante de ceas, clasica sirespectiv cu reincarcare O aplicatie mecatronica des intalnita este aceea in care trebuie reglata turatia motoarelor de curent continuu. Se poate folosi metoda PWM (Pulse Width Modulation) care utilizeaza circuitele de ceas ale microcontrolerului (figura 6). Circuitele de ceas pot fi folosite si pentru a contoriza numarul de aparitii ale unui eveniment. Fiecare aparitie a evenimentului va incrementa continutul unui registru de acumulare asociat (pulse accumulator register). Prin incarcarea intr-un registru, de fiecare data cand apare un eveniment, a valorii oferite de un circuit care numara liber, cu o frecventa cunoscuta, se poate determina frecventa unui semnal de interes sau durata unui interval de timp. Porturile de intrare / iesire sunt utilizate pentru receptionarea datelor numerice si pentru transmiterea comenzilor numerice dela si spre perifericele sistemului. Uzual marimea acestor porturi este de cativa biti, 8 sau chiar mai putin. Cele mai multe microcontrolere includ porturi care pot fi programate sa lucreze atat ca porturi de intrare cat si ca porturi de iesire. Cele mai multe microcontrolere au atat interfete sincrone cat si interfete asincrone. Interfata seriala asigura o cale de comunicatie standardizata cu alte sisteme cu care microcontrolerul coopereaza pentru indeplinirea sarcinilor impuse. In terminologia specifica microcontrolerelor, se folosesc siglele SCI (Serial Communication Interface) pentru varianta sincrona, respectiv SPI (Serial Peripheral Interface) pentru varianta asincrona. De exemplu, o solutie comuna pentru dezvoltarea si testarea programelor este utilizarea unui sistem de calcul independent si transferul programului in cod specific (debugging) pe linie seriala de tip SCI catre microcontroler. Pe o linie de tip SPI se poate conecta, spre exemplu, o memorie externa de tip EEPROM. Prezenta semnalului de tact simplifica modalitatea in care bitii sunt transmisi si receptionati, dar pentru trasee lungi acest semnal poate fi afectat de zgomot. In lipsa semnalului de tact, resincronizarea receptiei si transmisiei se poate face folosind un bit dedicat, bitul de start. Un port de tip UART (Universal Asynchronous Receiver Transmitter) este utilizat numai pentru o comunicatie seriala asincrona, in timp ce un port de tip USART (Universal Synchronous / Asynchronous Receiver Transmitter) poate fi utilizat atat pentru o comunicatie seriala sincrona cat si pentru una asincrona. In general, variantele bazate pe USART ofera o viteza de un ordin de marime mai mare comparativ cu cele bazate pe USART. Marimile fizice care apar in sistemele reale din aplicatiile practice sunt toate analogice. Sistemele senzoriale incluse in sistemele mecatronice convertesc aceste marimi in semnale electrice analogice care pot fi masurate. Pentru achizitia semnalelor analogice din procesul controlat, de cele mai multe ori tensiuni, este nevoie de conversia semnalelor in format numeric, singurul utilizabil in sistemele de calcul. Aceasta functie este indeplinita de convertoarele CAN. Sistemele de control furnizeaza marimi de comanda numerice care trebuie convertite in semnale analogice pentru a putea fi aplicate sistemelor de actionare. Aceasta functie este indeplinita de convertoarele CNA (figura 7). In multe aplicatii este nevoie ca o marime din proces sa fie comparata cu o valoare de referinta prestabilita. Se compara atunci valorile numerice corespunzatoare celor doua marimi. Aceasta functie este realizata de un circuit specializat numit comparator. Comparatorul poate fi inclus in aceeasi capsula cu microcontrolerul, iar marimile lui de intrare si de iesire vor fi disponibile pe magistrala microcontrolerului.
Figura 6 Reglarea turatiei prin metoda PWM
Figura 7 Exemplu de aplicatie care necesita conversii Si pentru microntrolere se pune problema interconectarii in retele de comunicatie pentru ca o aplicatie complexa sa poata fi controlata cu mai multe microcontrolere care coopereaza. Un deziterat major, relativ la solutiile de interconectare, ramane standardizarea lor. CAN (Controller Area Network) este solutia pe care firmele Bosh si Intel au propus-o pentru interconectarea microcontrolerelor utilizate in industria automobilelor. Solutia este foarte raspandita atat in SUA cat si in Europa. In principiu, aceasta retea este o solutie de cablare multiplexata care utilizeaza viteze mari (mai mult de 125 kbs) pentru procesele considerate critice (controlul franarii, aparatura de bord, controlul motorului, controlul circuitului electric, aerul conditionat) si viteze mai mici (sub 125 kbps) pentru procesele de prioritate redusa (radio, telefon, harta de navigatie GPS, sistem de inchidere geamuri, sistem de control al luminilor, sistem de control al pozitiei scaunelor). Philips a propus pentru interconectarea microcontrolerelor si perifericelor utilizate in produsele electronice de larg consum, autotomobile si in aplicatiile industriale, o magistrala seriala, cu numai doua fire, unul pentru date si unul pentru semnalul de tact. Aceasta magistrala, identificata cu sigla I2C, suporta accesul simultan al mai multor componente, cu rol de master si slave, pentru ca se bazeaza pe o tehnica de detectare a coliziunilor. Pana la 128 de dispozitive, fiecare cu adresa sa proprie, pot fi conectate pe o distanta de pana la 10 metri. In cele mai multe aplicatii, este nevoie ca microcontrolerele sa poata controla, hard sau soft, evolutia mai multor sarcini (task) in functie de prioritati prestabilite sau de evenimentele care apar in evolutia sistemului. Pentru aplicatiile in care timpul nu este critic, microcontrolerul poate interoga pe rand IPi componentele sistemului, periferice de exemplu, asupra necesitatii de a fi servite, adica sa transmita date care sa fie prelucrate si sa primeasca inapoi rezultatele. Aceasta tehnica se numeste polling. Cand una dintre componentele Pi semnaleaza, prin setarea unui indicator de conditie Fi, ca are nevoie sa fie servita, microcontrolerul va determina executia unui program asociat cu componenta respectiva, aflat la o adresa fixa din memorie. Perifericele pot fi ierarhizate prin ordinea in care sunt interogate si prin intervalul de timp diferit care se scurge intre doua interogari succesive (figura 8).
Figura 8 Exemplu de interogare de tip polling Intr-o astfel de abordare, timpul scurs intre doua interogari ale aceluiasi periferic este variabil in functie de numarul de cereri aparute in cadrul ciclului polling. Aceasta este explicatia pentru care tehnica se aplica numai pentru procesele lente in raport cu viteza de prelucrare a datelor. La fiecare trecere de la executia unei sarcini (task) la executia altei sarcini are loc un ciclu de interogare de tip polling si un numar de tratari de evenimente asociate (figura 9).
Figura 9 Inlantuirea sarcinilor si interogarilor O abordare mai performanta se bazeaza pe tehnica intreruperilor pentru care microcontrolerele ofera suportul hard si soft necesar. Microcontrolerul isi desfasoara activitatea prestabilita in lipsa unui semnal de intrerupere lansat de unul dintre periferice. Semnalele de intrerupere sunt ierarhizate dupa prioritati. In momentul acceptarii unei intreruperi, se salveaza starea curenta a sistemului, se identifica sursa intreruperii, se executa o procedura prestabilita asociata respectivei intreruperi, se restaureaza starea sistemului si se reia programul intrerupt din locul in care a aparut intreruperea (figura 10).
Figura 10 Inlantuirea sarcinilor si intreruperilor Majoritatea microcontrolerelor au cel putin o linie de intrerupere pe care pot receptiona un semnal a carui activare se poate face pe front, crescator sau descrescator, sau pe nivel. Activarea semnalului pe front este rapida, dar vulnerabila la zgomote aleatoare, scurte si de amplitudine mare. Activarea la un anumit nivel de tensiune impune mentinerea nivelului respectiv un anumit timp, dar este relativ imunizata la zgomote. Alimentarea circuitelor integrate s-a bazat multa vreme pe foarte folosita valoare de 5 V. Aceasta valoare este convenabila pentru multe aplicatii cu microcontrolere. De exemplu, nu este o problema sa se furnizeze aceasta tensiune in sistemul electric al unui autoturism. In ultimii ani s-a inregistrat o crestere importanta a numarului de produse de larg consum care incorporeaza microcontrolere. Acesta este unul din motivele care au impus scaderea tensiunii de alimentare. Un microcontroler 3.0V, sau mai putin, se poate alimenta usor cu doua baterii de calitate. Exista si alte considerente care sustin necesitatea scaderii tensiunii de alimentare. Circuitele integrate pot fi privite, din punct de vedere tehnologic, ca o colectie de tranzistoare. Relativ la implementarea tehnologica a tranzistoarelor se pot face cateva remarci interesante. Scaderea dimensiunilor la jumatate, va reduce la jumatate consumul, va reduce la sfert pretul si il va face de doua ori mai rapid. Asa cum s-a amintit deja, avantajul calculatoarelor in general si cel al microcontrolerelor in particular, in raport cu aplicatiile practice, este acela ca adaptarea se face prin schimbarea programului, cu pastrarea nemodificata a structurii de circuite. Programarea unui microcontroler se poate face la trei nivele: Cod masina, Asamblare, Limbaje de nivel inalt. Codurile binare sunt singurele care pot fi decodificate de unitatea centrala de prelucrare CPU, iar pentru programator scrierea unui program in acest format este dificila. La nivelul limbajlui de asamblare se folosesc mnemonice prestabilite pentru a identifica instructiunile si a scrie liniile de program. Pentru programator scrierea instructiunilor direct in cod masina este o operatie foarte dificila si, ca urmare, ea poate fi realizata practic, in mod normal, numai pentru cazul secventelor foarte scurte sau al modificarii, in scopul corectarii, unor programe deja existente. Scrierea programelor in limbaj de asamblare poate fi realizata de utilizatori specializati care pe langa cunoasterea limbajului propriu - zis se bazeaza si pe o intelegere de detaliu a functionarii componentelor hard ale sistemului. Translatarea programului din limbajul de asamblare in cod masina poate fi realizata manual, la fel cum s-a mentionat mai sus, numai pentru secvente foarte scurte. In mod normal, se apeleaza la programe specializate, numite asambloare, si care sunt rulate pe un calculator de uz general. Codul rezultat este transferat in memoria microcontrolerului folosind facilitatile de comunicatie ale acestuia. Pe langa translatarea mnemonicelor in coduri binare, asambloarele ofera si alte facilitati utile pentru dezvoltarea programelor, cum ar fi spre exemplu, generarea listingului programului cu mnemonice si coduri binare, rezolvarea referintelor la variabile sau adrese si asistarea programatorului in procesul de identificare si corectare a erorilor, Utilizarea limbajelor de asamblare presupune o anumita specializare in masura in care pentru fiecare microcontroler se folosesc seturi de mnemonice particulare. Pentru a simplifica activitatea de programare, se face apel la limbaje de nivel inalt, de exemplu C, Pascal, Fortran, Forth, BASIC, care, in principiu, ar trebui sa aiba o sintaxa generala neparticularizata in functie de tipul microcontrolerului utilizat. In practica, exista insa si aici deosebiri care fac ca, pentru fiecare varianta standard de limbaj de nivel inalt, sa apara variante numite dialecte. In conditiile in care principiile generale sunt aceleasi pentru o familie de dialecte, este mai usor de invatat si aplicat un numar restrans de particularitati. In acest mod, se poate utiliza un acelasi limbaj de nivel inalt pentru a scrie programe pentru mai multe tipuri de echipamente fizice. Unei singure instructiuni de nivel inalt ii corespunde o secventa de cateva linii in limbaj de asamblare ceea ce este o simplificare importanta din punct de vedere al programatorului. Translatarea instructiunilor de nivel inalt, pe care utilizatorul le poate utiliza mai usor, in coduri binare, singurele pe care le poate decodifica microntrolerul, se poate realiza in doua moduri: prin interpretare sau prin compilare. Un interpretor transorma fiecare instructiune de nivel inalt intr-o secventa de coduri masina de fiecare data cand programul este executat. Solutia este convenabila pentru aplicatii mai simple si fara cerinte deosebite din punct de vedere al vitezei de lucru. Un program scris intr-un limbaj interpretat poate fi executat imediat dupa ce a fost scris, fara alte etape intermediare. Un compilator genereaza un cod masina executabil independent fara a impune prezenta programului sursa. Solutia se impune pentru programe de mare dimensiune si pentru aplicatii unde viteza de executie este critica. Efortul de translatare a instructiunilor in cod este facut o singura data, off line din punct de vedere al aplicatiei. Pentru multe limbaje de programare de nivel inalt, de exemplu pentru BASIC, exista ambele variante, pentru interpretor si pentru compilator. Este necesar ca interpretorul sau compilatorul utilizat sa fie adaptat la echipamentul fizic folosit. In acest fel, un acelasi program de nivel inalt poate fi transformat intr-un cod masina diferit in functie de microcontrolerul tinta. Poate fi interesanta varianta in care se foloseste un interpretor pentru faza de dezvoltare a programului si un compilator pentru obtinerea codului final. Efortul suplimentar impus de utilizarea limbajelor de nivel inferior este rasplatita cu posibilitatea de a obtine performante superioare din punct de vedere al executiei programului la nivelul microcontrolerului. In aceasta maniera, se pot obtine programe mai scurte, mai rapide si care utilizeaza toate facilitatile echipamentului, facilitati care uneori nu sunt disponibile la nivelul unui limbaj de nivel inalt. Dupa ce a fost scris, un program trebuie sa fie testat pentru a se elimina erorile si pentru a-l aduce la forma finala in care rezultatul obtinut coincide cu cerintele impuse. Procesul este identificat prin termenul debugging. Maniera in care se deruleaza acest proces este determinata pentru performantele globale ale procesului de dezvoltare a unei aplicatiei bazate pe un microcontroler. Eliminarea erorilor de sintaxa poate fi realizata pe calculatorul de uz general pe care se dezvolta programul. Eliminarea erorilor de semantica nu se poate face insa fara incarcarea programului si executia lui supravegheata la nivelul microcontrolerului. Testarea programului se poate face in mai multe moduri diferite: direct in EPROM, pe un sistem de dezvoltare, pe un simulator, pe un emulator. Programul poate fi memorat, ars, in memoria EPROM, memoria va fi instalata in sistem si programul executat. Situatia testata este identica cu situatia din timpul derularii aplicatiei propriu - zise. Detectarea erorilor este dificila, iar corectarea lor presupune stergerea programului si reprogramarea memoriei. Un sistem de dezvoltare presupune existenta unui program stocat in memoria EPROM si care este identificat cun termenul de monitor. Programul de testat va fi transmis pe cale seriala, cel mai frecvent, si incarcat in memoria volatila RAM a sistemului bazat pe microcontroler. El va fi executat sub controlul monitorului care va determina toate efectele rezultate: modificari ale registrilor, modificari ale memoriei, generarea de semnale in porturile de iesire etc. Cu ajutorul monitorului, programul testat poate fi modificat si reexecutat repetat pana cand se obtine forma finala. Una dintre facilitatile de baza oferite de un monitor este posibilitatea de a executa pas cu pas (step by step) programul de testat. In acest mod, se poate verifica rezultatul executiei fiecarei instructiuni in parte. Pentru testarea programele lungi sau pentru buclele de instructiuni este utila definirea unor punct de intrerupere in executia programului (breakpoints). Punctul de intrerupere este definit in functie de o anumita adresa de memorie sau de indeplinirea unei anumite conditii. Programul testat se executa pana ajunge la un punct de intrerupe atunci cand se opreste. Monitorul testeaza starea sistemului, sustine eventuale modificari, iar executia programului de testat se reia la comanda specifica. Simulatorul este un program care ruleaza pe un calculator de uz general si care prezinta utilizatorului, pe monitorul sistemului, ceea ce s-a intampla daca programul de testat s-ar executa pe un anumit tip de microcontroler. Se utilizeaza executia pas cu pas sau puncte de intrerupere pentru a determina rezultatul executiei fiecarei secvente din program. In acest mod, se poate obtine forma finala a programului inainte ca acesta sa fie ars in memoria EPROM: Performantele procesului depind de calitatea simularii circuitului real, dar este clar ca nu toate caracteristicile acestuia pot fi simulate perfect. Este cazul, de exemplu, al lucrului cu intreruperi si a secventierii semnalelor in timp. O solutie de cost ridicat este utilizarea simulatoarelor hard numite emulatoare (ICE In - Circuit Emulator). Un circuit integrat sau o placa cu circuite integrate este cuplata la sistem in locul microprocesorului sau simulatorului. Emulatorul executa programul de testat in acelasi mod in care ar face-o circuitul simulat ceea ce este un avantaj substantial. In plus, emulatorul ofera facilitatile de testare ale unui simulator. Un emulator ROM este o solutie de cost mai mic care se bazeaza pe utilizarea, de exemplu, a unei memorii RAM pentru a simula memoria EPROM care stocheaza un program si care ofera, in general, functiile unui sistem de dezvoltare.
|