Microcontroler

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
Microcontroller Intel.

La modul general un controler ("controller" - un termen de origine anglo-saxonă, cu un domeniu de cuprindere foarte larg) este, actualmente, o structură electronică destinată controlului unui proces sau, mai general, unei interacțiuni caracteristice cu mediul exterior, fără să fie necesară intervenția operatorului uman. Primele controlere au fost realizate în tehnologii pur analogice, folosind componente electronice discrete și/sau componente electromecanice (de exemplu relee). Cele care fac apel la tehnica numerică modernă au fost realizate inițial pe baza logicii cablate (cu circuite integrate numerice standard SSI și MSI ) și a unei electronici analogice uneori complexe, motiv pentru care "străluceau" prin dimensiuni mari, consum energetic pe măsură și, nu de puține ori, o fiabilitate care lăsa de dorit.

Apariția și utilizarea microprocesoarelor de uz general a dus la o reducere consistentă a costurilor, dimensiunilor, consumului și o îmbunătățire a fiabilității. Există și la ora actuală o serie de astfel de controlere de calitate, realizate în jurul unor microprocesoare de uz general cum ar fi Z80 (Zilog), 8086/8088 (Intel), 6809 (Motorola), etc.

O definiție, cu un sens foarte larg de cuprindere, ar fi aceea că un microcontroler este un microcircuit care incorporează o unitate centrală (CPU) și o memorie împreună cu resurse care-i permit interacțiunea cu mediul exterior.

Utilizarea microcontrollerelor[modificare | modificare sursă]

Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor sisteme încapsulate-integrate (“embedded systems”), la care existența unui sistem de calcul incorporat este (aproape) transparentă pentru utilizator.

Printre multele domenii unde utilizarea lor este practic un standard industrial se pot menționa: în industria de automobile (controlul aprinderii/motorului, climatizare, diagnoză, sisteme de alarmă, etc.), în așa zisa electronică de consum (sisteme audio, televizoare, camere video și videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice etc.), în aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale industriale), în industria aerospațială, în mijloacele moderne de măsurare - instrumentație (aparate de măsură, senzori și traductoare inteligente), la realizarea de periferice pentru calculatoare, în medicină.

Ca un exemplu din industria de automobile (automotive industry), unde numai la nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza 63 de microcontrolere. Practic, deși am prezentat ca exemple concrete numai sisteme robotice și mecatronice, este foarte greu de găsit un domeniu de aplicații în care să nu se utilizeze microcontrolerele.

Caracteristici arhitecturale ale unității centrale[modificare | modificare sursă]

Arhitectura unității centrale de calcul (CPU) este unul din elementele cele mai importante care trebuie avut în vedere în analiza oricărui sistem de calcul. Principalele concepte luate în considerare și întâlnite aici sunt următoarele:

Arhitecturi de tip " Harvard "[modificare | modificare sursă]

La această arhitectură există spații de memorie separate pentru program și date. În consecință ar trebui să existe și magistrale separate (de adrese și date) pentru codul instrucțiunilor și respectiv pentru date.

CISC[modificare | modificare sursă]

Aproape toate microcontrolerele au la baza realizării CPU conceptul CISC (Complex Instruction Set Computer). Aceasta înseamnă un set uzual de peste 80 instrucțiuni, multe din ele foarte puternice și specializate.

RISC[modificare | modificare sursă]

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 instrucțiuni care se pot executa foarte rapid și eficient, se obține o reducere a complexității microcircuitului, suprafața disponibilizată putând fi utilizată în alte scopuri.

Aspecte legate de implementarea memoriei microcontrolerelor[modificare | modificare sursă]

În afară de memoria locală de tip RAM, de dimensiuni relativ reduse (de la x10 octeți la x1k), implementată ca atare sau existentă sub forma unui set de registre și destinată memorării datelor (variabilelor), mai există o serie de aspecte specifice, marea majoritate a acestora fiind legată de implementarea fizică a memoriei de program (și eventual a unei părți a memoriei de date) cu ajutorul unor memorii nevolatile. Clasic, memoria de program era implementată într-o variantă de tip ROM: EPROM pentru dezvoltare și producție pe scară mică/medie sau mask-ROM pentru producția de masă.

Familii de microcontrolere reprezentative[modificare | modificare sursă]

8048 (Intel MCS-48 - www.intel.com )[modificare | modificare sursă]

8051 (Intel MCS-51 și mulți alții: Atmel, Philips)[modificare | modificare sursă]

A doua generație de microcontrolere de 8 biți a firmei Intel care, deși apărută acum 20 de ani, încă ocupă un segment semnificativ de piață. Cu o arhitectură destul de ciudată, este suficient de puternic și ușor de programat (odată învățat!). Arhitectura sa are spații de memorie separate pentru program și date. Poate adresa 64KBytes memorie de program, din care primii 4(8..32)KBytes locali (ROM). Poate adresa 64KBytes memorie de date externă, adresabilă doar indirect. Are 128 (256) octeți de RAM local, plus un număr de registre speciale pentru lucrul cu periferia locală. Are facilități de prelucrare la nivel de bit (un procesor boolean, adresare pe bit). Intel a dezvoltat si un “super 8051” numit generic 80151. Actualmente există zeci de variante produse de diverși fabricanți (Philips, Infineon, Atmel, Dallas, Temic, etc.) precum și cantități impresionante de soft comercial sau din categoria freeware/shareware. Au apărut și dezvoltări ale acestei familii în sensul trecerii la o arhitectură similară (în mare), dar pe organizată pe 16 biți, cu performanțe îmbunătățite ca viteză de prelucrare: familia XA51 eXtended Arhitecture de la Philips și familia 80C251 (Intel). Din păcate aceste noi variante nu s-au bucurat nici pe departe de succesul „bătrânului” 8051.

80C196 (Intel MCS-96)[modificare | modificare sursă]

Este un microcontroler pe 16 biți făcând parte din generația treia de microcontrolere a firmei Intel. Destinat inițial unor aplicații din industria de automobile, are o arhitectură von Neumann, cu un spațiu de adresare de 64KBytes, o unitate de intrări/ieșiri numerice de mare viteză (destinată inițial controlului injecției la un motor cu ardere internă), ieșiri PWM, convertor analog numeric, timer watchdog. Există multe variante, ultimele cronologic apărute, fiind mult superioare variantei inițiale. Există și o dezvoltare recentă sub forma familiei MCS-296 (80C296).

80C186, 80C188 (Intel, AMD, ș.a.)[modificare | modificare sursă]

Derivate din clasicele 8086/88 prin includerea pe același microcircuit a 2 canale DMA, 2 numărătoare/timere, un sistem de întreruperi și un controler pentru DRAM. Marele avantaj al acestor cvasi(aproape) microcontrolere (ele nu au memorie integrată!) este legat de utilizarea ca mediu de dezvoltare a unor platforme de calcul tip IBM-PC, compatibile 80x86, cu tot softul aferent.

68HC05 (Freescale)[modificare | modificare sursă]

Un microcontroler de 8 biți derivat din microprocesorul M6800 și care prezintă multe asemănări cu un alt microprocesor răspândit, la timpul său, 6502. Are un spațiu de memorie unic (64Kbytes) în care sunt plasate și registrele perifericelor (I/O, timere) cu un indicator de stivă (SP) hard pe 5biți (stivă de maxim 32 octeți !). Există variante cu memorie EEPROM, CAN, port serial, etc. Este unul din cele mai răspândite microcontrolere (comparabil cu 8051). Varianta evoluată a acestei familii este seria 68HC08 bazată pe o nouă unitate centrală de 8 biți numită CPU08, cu cea mai recentă dezvoltare sub forma seriei 68HCS08 destinată în mod special unor aplicații din industria automobilului.

Limbaje de programare[modificare | modificare sursă]

Limbajul mașină și de cel de asamblare[modificare | modificare sursă]

Limbajul mașină (instrucțiunile mașină) este singura formă de reprezentare a informației pe care un microcontroler o "înțelege" (ca de altfel orice alt sistem de calcul !). Din păcate această formă de reprezentare a informației este total nepractică pentru un programator, care va utiliza cel puțin un limbaj de asamblare, în care o instrucțiune (o mnemonică cu operanzii aferenți) are drept corespondent o instrucțiune în limbaj mașină (excepție fac macroinstrucțiunile disponibile la unele asambloare). Un program în limbaj de asamblare este rapid și compact. Aceasta nu înseamnă că un astfel de program, prost scris, nu poate fi lent și de mari dimensiuni, programatorul având controlul total (și responsabilitatea !) pentru execuția programului și gestiunea resurselor. Limbajul de asamblare este primul care trebuie învățat, chiar sumar, atunci când dorim să proiectăm o aplicație hard/soft cu un anume microcontroler (familie), el permițând înțelegerea arhitecturii acestuia și utilizarea ei eficientă.

Interpretere[modificare | modificare sursă]

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 execuția unui program interpretat, este citirea și executarea secvențială a instrucțiunilor (instrucțiune cu instrucțiune). De fapt fiecare instrucțiune de nivel înalt este interpretată într-o secvență de instrucțiuni mașină care se execută imediat.

Compilatoare[modificare | modificare sursă]

Un compilator combină ușurința în programare oferită de un interpreter (de fapt de limbajul de nivel înalt) cu o viteză mai mare de execuție a codului. Pentru aceasta programul, în limbaj de nivel înalt, este translatat (tradus) direct în limbaj mașină sau în limbaj de asamblare (urmând a fi apoi asamblat). Codul mașină rezultat are dimensiuni relativ mari (dar mai mici decât 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 execuție. Se pot enumera compilatoare pentru limbajele: C, BASIC, Pascal, PL/M (Intel), Forth.

Legături externe[modificare | modificare sursă]

Commons
Wikimedia Commons conține materiale multimedia legate de Microcontroler