Microcontrolador

De Viquipèdia
Dreceres ràpides: navegació, cerca
Microcontrolador Motorola 68HC11 i xips de suport

Un microcontrolador és un microprocessador especialitzat en controlar equips electrònics, i inclou en un sol xip les tres unitats funcionals d'un ordinador: una CPU, memòria i unitats d'E/S (Entrada/Sortida), és a dir, es tracta d'un computador complet en un sol circuit integrat.

Els microcontroladors representen la immensa majoria dels xips d'ordinadors venuts, més d'un 50%[cal citació]són controladors "simples" i la resta corresponen a DSPs més especialitzats. És habitual disposar d'un o dos microprocessadors de propòsit general a casa (per exemple en un ordinador), en qualsevol llar es poden trobar entre els seus electrodomèstics una o dues dotzenes de microcontroladors[cal citació]. Són presents en gairebé qualsevol dispositiu elèctric com ara automòbils, rentadores, forns microones, telèfons, etc.

Taula de continguts

Característiques [modifica]

Emfatitza l'alta integració, en contrast amb un microprocessador que només conté una CPU. A més de les típiques operacions lògiques i aritmètiques d'un microprocessador de propòsit general, un microcontrolador integra elements addicionals com memòria de lectura-escriptura per a dades, memòria de només lectura per emmagatzemar el programa, memòria flaix per emmagatzemament permanent, perifèrics, i interfícies d'entrada sortida (Ports, I2C, SPI...). A velocitats com 32 KHz, els microcontroladors operen a velocitats molt baixes en comparació amb els microprocessadors, tot i que això és adequat per les aplicacions típiques per les que es programen.

Esquema d'un microcontrolador.

Consumeixen poca energia (milliwats o fins i tot microwatts), i en general mantenen la funcionalitat mentre esperen un esdeveniment com prémer un botó o una interrupció. El consum d'energia en estat inactiu (rellotge de la CPU i perifèrics desactivats) pot ser de només nanowatts, sent ideals per aplicacions de baix consum i bateria duradora. Encara que n'hi ha de la mida d'un segell de correus, el normal és que siguin encara més petits, ja que, lògicament, formen part del dispositiu que controlen.

Un microcontrolador difereix d'una CPU normal en el fet que és més fàcil convertir-lo en un ordinador en funcionament, amb un mínim de xips externs de suport. La idea és que el Circuit integrat s'encasti en el dispositiu, connectat a la font d'energia i d'informació que necessiti, i això és tot. Un microprocessador tradicional[cal citació]no permet fer això, ja que espera que totes aquestes tasques siguin controlades per altres xips.

Per exemple, un microcontrolador típic disposa d'un generador de rellotge integrat (clock) i una petita quantitat de memòria RAM i ROM/EPROM/EEPROM. Això significa que per a fer-lo funcionar, tot el que es necessita són uns pocs programes de control i un cristall de sincronització. Els microcontroladors generalment també disposen d'una gran varietat de dispositius d'entrada/sortida, com convertidors d'analògic a digital (CAD), temporitzadors, UARTs i busos d'interfície en sèrie especialitzats, com I2C i CA. Normalment, aquests dispositius integrats poden ser controlats per instruccions de processadors especialitzats. Els microcontroladors moderns sovint inclouen un llenguatge de programació integrat, com el BASIC que s'utilitza amb freqüència per a aquest propòsit.

Els microcontroladors negocien la velocitat i la flexibilitat per a facilitar el seu ús. Degut al fet que s'utilitza força lloc en el xip per a incloure funcionalitat, com els dispositius d'entrada/sortida o la memòria que inclou el microcontrolador, s'ha de prescindir d'altres tipus de circuit.

Estructura bàsica d'un microcontrolador [modifica]

En aquesta figura, veiem el microcontrolador ficat dins d'un encapsulat de circuit integrat, amb el seu processador (CPU), busos, memòria, perifèrics i ports d'entrada sortida. Fora de l'encapsulat s'ubiquen altres circuits per completar perifèrics interns i dispositius que poden connectar-se als pins d'entrada/sortida. També es connectaran als pins de l'encapsulat l'alimentació, massa, circuit de finalització de l'oscil·lador i altres circuits necessaris perquè el microcontrolador pugui treballar.

Nucli d'un microcontrolador [modifica]

Tot i que el microcontrolador és una mena d'ordinador embeguda dins d'un circuit integrat, es compon d'un nucli i un conjunt de circuits addicionals. Dins del nucli es troben el processador i la memòria, tot estructurat de manera que a mesura que una arquitectura d'ordinador.

Arquitectures d'ordinador [modifica]

Bàsicament hi ha dues arquitectures d'ordinadors, i per descomptat, estan presents en el món dels microcontroladors: Von Neumann i Harvard. Totes dues es diferencien en la forma de connexió de la memòria al processador i en els busos que cadascuna necessita.

L'arquitectura Von Neumann és la que s'utilitza en els ordinadors personals, per a ella hi ha una sola memòria, on coexisteixen les instruccions de programa i les dades, accedits amb un bus de direcció, un de dades i un de control.

Hem de comprendre que en un PC, quan es carrega un programa en memòria, a aquest se li assigna un espai d'adreces de la memòria que es divideix en segments, dels quals típicament tendirem els següents: codi (programa), dades i pila. És per això que podem parlar de la memòria com un tot, encara que existeixin diferents dispositius físics en el sistema (HDD, RAM, CD, FLASH).

En el cas dels microcontroladors, hi ha dos tipus de memòria ben definides: memòria de dades (típicament algun tipus de SRAM) i memòria de programes (ROM, PROM, EEPROM, FLASH o d'un altre tipus no volàtil). En aquest cas l'organització és diferent a les de les PC, perquè hi ha circuits diferents per a cada memòria i normalment no s'utilitzen els registres de segments, sinó que la memòria està segregada i l'accés a cada tipus de memòria depèn de les instruccions del processador .

Tot i que en els sistemes embeguts amb arquitectura Von Neumann la memòria estigui segregada, i hi hagi diferències pel que fa a la definició tradicional d'aquesta arquitectura, els busos per accedir a dos tipus de memòria són els mateixos, del processador només surten el bus de dades, el d'adreces, i el de control. Com a conclusió, l'arquitectura no ha estat alterada, perquè la forma en què es connecta la memòria al processador segueix el mateix principi definit en l'arquitectura bàsica.

Aquesta arquitectura és la variant adequada per a les PC, perquè permet estalviar una bona quantitat de línies d'E/S, que són força costoses, sobretot per a aquells sistemes com les PC, on el processador es munta en algun tipus de socket allotjat en una placa mare (motherboard). També aquesta organització els estalvia als dissenyadors de motherboards una bona quantitat de problemes i redueix el cost d'aquest tipus de sistemes.

Algunes famílies de microcontroladors com la INTEL-51 i la Z80 implementen aquest tipus d'arquitectura, fonamentalment perquè era la utilitzada quan van aparèixer els primers microcontroladors.

L'altra variant és l'arquitectura Harvard, i per excel·lència la utilitzada en superordinadors, en els microcontroladors, i sistemes embeguts en general. En aquest cas, a més de la memòria, el processador té els busos segregats, de manera que cada tipus de memòria té un bus de dades, un d'adreces i un de control.

L'avantatge fonamental d'aquesta arquitectura és que permet adequar la mida dels autobusos a les característiques de cada tipus de memòria, a més, el processador pot accedir a cada una d'elles de forma simultània, el que es tradueix en un augment significatiu de la velocitat de processament, típicament els sistemes amb aquesta arquitectura poden ser dues vegades més ràpids que sistemes similars amb arquitectura Von Neumann.

El desavantatge és que consumeix moltes línies d'E/S del processador; el qual en sistemes on el processador està ubicat en el seu propi encapsulat, només s'utilitza en superordinadors. No obstant això, en els microcontroladors i altres sistemes embeguts, on normalment la memòria de dades i programes comparteixen el mateix encapsulat que el processador, aquest inconvenient deixa de ser un problema seriós i és per això que trobem l'arquitectura Harvard en la majoria dels microcontroladors .

Processador en detall [modifica]

En els anys 70 del segle XX, la electrònica digital encara anava mitjà que en bolquers, però dins de l'electrònica ja era una especialitat consagrada. Aleshores els ordinadors es dissenyaven perquè realitzessin algunes operacions molt simples, i si es volia que aquestes màquines poguessin fer coses diferents, s'havia de fer canvis força significatius al maquinari.

A principis dels anys 70, una empresa japonesa li va encarregar a una jove companyia nord-americana que desenvolupés un conjunt de circuits per a produir una calculadora de baix cost. INTEL es va dedicar de ple a la tasca i entre els circuits encarregats desenvolupar un de molt especial, alguna cosa no creat fins ara: el primer microprocessador integrat.

El 4004 va sortir al mercat el 1971, és una màquina digital sincrònica complexa, com qualsevol altre circuit lògic seqüencial sincrònic. No obstant això, l'avantatge d'aquest component és que allotja internament un conjunt de circuits digitals que poden fer operacions corrents per al càlcul i processament de dades, però des d'una òptica diferent: les seves entrades són una sèrie de codis ben definits, que permeten fer operacions de caràcter específic el resultat està determinat pel tipus d'operació i els operands involucrats.

Vist així, no hi ha res d'especial en un microprocessador, la meravella és que la combinació adequada dels codis d'entrada, la seva execució seqüencial, el poder saltar cap enrere o endavant en la seqüència de codis basant-se en decisions lògiques o ordres específiques , permet que la màquina faci un munt d'operacions complexes, no contemplades en els simples codis bàsics.

Avui estem acostumats als sistemes amb microprocessadors, però en el "llunyà" 1.971 aquesta era una forma de pensar una mica diferent i fins i tot escandalosa, a tal punt que Busicom, l'empresa que va encarregar els xips a INTEL, no es va mostrar interessada en el invent, així que INTEL va posar fil a l'agulla i el va comercialitzar per a altres que van mostrar interès, i bo, la resta de la història: una revolució sense precedents en l'avanç tecnològic de la humanitat.

És lògic pensar que l'invent del microprocessador integrat no va ser una revelació divina per als seus creadors, sinó que es va sustentar en els avenços, existents fins al moment, en el camp de l'electrònica digital i les teories sobre computació. Però sense cap dubte va ser la gota que va fer vessar la copa de la revolució científico-tècnica, perquè va permetre desenvolupar aplicacions impensades o accelerar algunes ja encaminades. La conclusió és simple, el món era un abans del microprocessador i un altre després de la seva invenció, pensi en un món sense microprocessadors i es trobarà remuntat als anys 70 del segle XX.

Ara començarem a veure com és que està fet un processador, no serà una explicació massa detallada perquè des de la seva invenció aquest ha tingut importants revolucions pròpies, però hi ha aspectes bàsics que no han canviat i que constitueixen la base de qualsevol microprocessador. A la Figura 4 podem veure l'estructura típica d'un microprocessador, amb els seus components fonamentals, és clar que cap processador real s'ajusta exactament a aquesta estructura, però tot i així ens permet conèixer cada un dels seus elements bàsics i les seves interrelacions.

Registres [modifica]

Són un espai de memòria molt reduït però necessari per a qualsevol microprocessador, d'aquí es prenen les dades per a diverses operacions que ha de realitzar la resta dels circuits del processador. Els registres serveixen per emmagatzemar els resultats de l'execució d'instruccions, carregar dades des de la memòria externa o emmagatzemar-los-hi.

Encara que la importància dels registres sembli trivial, no ho és en absolut. De fet una part dels registres, la destinada a les dades, és la que determina un dels paràmetres més importants de qualsevol microprocessador. Quan escoltem que un processador és de 4, 8, 16, 32 o 64 bits, ens referim a processadors que realitzen les seves operacions amb registres de dades d'aquesta mida, i per descomptat, això determina moltes de les potencialitats d'aquestes màquines.

Mentre més gran sigui el nombre de bits dels registres de dades del processador, majors seran les seves prestacions, quant a poder de còmput i velocitat d'execució, ja que aquest paràmetre determina la potència que es pot incorporar a la resta dels components del sistema, per exemple, no té sentit tenir una ALU de 16 bits en un processador de 8 bits.

D'altra banda un processador de 16 bits, pot ser que faci una suma de 16 bits en un sol cicle de màquina, mentre que un de 8 bits haurà d'executar diverses instruccions abans de tenir el resultat, tot i que tots dos processadors tinguin la mateixa velocitat d'execució per a les seves instruccions. El processador de 16 bits serà més ràpid perquè pot fer el mateix tipus de tasques que un de 8 bits, en menys temps.

Unitat de control [modifica]

Aquesta unitat és de les més importants en el processador, en ella recau la lògica necessària per a la decodificació i execució de les instruccions, el control dels registres, la ALU, els busos i quanta cosa més es vulgui ficar dins del processador.

La unitat de control és un dels elements fonamentals que determinen les prestacions del processador, ja que el seu tipus i estructura, determina paràmetres com ara el tipus de conjunt d'instruccions, velocitat d'execució, temps del cicle de màquina, tipus de busos que pot tenir el sistema, maneig d'interrupcions i un bon nombre de coses més que en qualsevol processador van a per a aquest bloc.

Per descomptat, les unitats de control, són l'element més complex d'un processador i normalment estan dividides en unitats més petites treballant de conjunt. La unitat de control agrupa components tals com la unitat de decodificació, unitat d'execució, controladors de memòria cache, controladors de busos, controladors d'interrupció, pipelines, entre altres elements, depenent sempre del tipus de processador.

Unitat aritmètic-lògica [modifica]

Com que els processadors són circuits que fan bàsicament operacions lògiques i matemàtiques, se li dedica a aquest procés una unitat completa, amb certa independència. Aquí és on es realitzen les sumes, restes, i operacions lògiques típiques de l'àlgebra de Boole.

Actualment aquest tipus d'unitats ha evolucionat molt i els processadors més moderns tenen diverses ALU, especialitzades en la realització d'operacions complexes com les operacions en coma flotant. De fet, en molts casos li han canviat el seu nom pel de "coprocessador matemàtic", encara que aquest és un terme que va sorgir per donar nom a un tipus especial de processador que es connecta directament al processador més tradicional.

El seu impacte en les prestacions del processador és també important perquè, depenent de la seva potència, tasques més o menys complexes, poden fer-se en temps molt curts, com per exemple, els càlculs en coma flotant.

Busos [modifica]

Són el mitjà de comunicació que utilitzen els diferents components del processador per intercanviar informació entre si, eventualment els autobusos o una part d'ells estaran reflectits en els pins de l'encapsulat del processador.

En el cas dels microcontroladors, no és comú que els autobusos estiguin reflectits en l'encapsulat del circuit, ja que aquests es destinen bàsicament a les E/S de propòsit general i perifèrics del sistema.

Hi ha tres tipus de busos:

  • Adreça: S'utilitza per seleccionar el dispositiu amb el qual es vol treballar o en el cas de les memòries, seleccionar la dada que es vol llegir o escriure.
  • Dades.
  • Control: S'utilitza per gestionar els diferents processos d'escriptura lectura i controlar l'operació dels dispositius del sistema.

Conjunt d'instruccions [modifica]

Encara que no aparegui en l'esquema, no podíem deixar al conjunt o repertori d'instruccions fora d'aquesta festa, perquè aquest element determina el que pot fer el processador.

Defineix les operacions bàsiques que pot realitzar el processador, que conjugades i organitzades formen el que coneixem com a programari. El conjunt d'instruccions són com les lletres de l'alfabet, l'element bàsic del llenguatge, que organitzades adequadament permeten escriure paraules, oracions i tot el programa se li acudeixi.

Hi ha dos tipus bàsics de repertoris d'instruccions, que determinen l'arquitectura del processador: CISC i RISC.

CISC, de l'anglès Complex Instruction setembre Computer, Ordinador de Conjunt d'Instruccions Complex. Els microprocessadors CISC tenen un conjunt d'instruccions que es caracteritza per ser molt ampli i que permeten realitzar operacions complexes entre operands situats a la memòria o en els registres interns. Aquest tipus de repertori dificulta el paral·lelisme entre instruccions, de manera que en l'actualitat, la majoria dels sistemes CISC d'alt rendiment, converteixen les instruccions complexes en diverses instruccions simples del tipus RISC, anomenades generalment microinstrucciones.

Dins dels microcontroladors CISC podem trobar a la popular família INTEL -51 i la Z80, encara que actualment existeixen versions CISC-RISC d'aquests microcontroladors, que pretenen aprofitar els avantatges dels processadors RISC alhora que es manté la compatibilitat cap enrere amb les instruccions de tipus CISC.

RISC, de l'anglès Reduced Instruction setembre Computer, Ordinador amb Conjunt d'Instruccions Reduït. Se centra en l'obtenció de processadors amb les següents característiques fonamentals:

  • Instruccions de mida fixa
  • Poques instruccions
  • Només les instruccions de càrrega i emmagatzematge accedeixen a la memòria de dades
  • Nombre relativament elevat de registres de propòsit general

Una de les característiques més destacables d'aquest tipus de processadors és que possibiliten el paral·lelisme en l'execució, i redueixen els accessos a memòria. És per això que els processadors més moderns, tradicionalment basats en arquitectures CISC s'implementen mecanismes de traducció d'instruccions CISC a RISC, per aprofitar els avantatges d'aquest tipus de processadors.

Els processadors dels microcontroladors PIC, que tractarem en aquest llibre, són de tipus RISC i veurem la seva arquitectura i repertori d'instruccions en detall.

Memòria [modifica]

Anteriorment havíem vist que la memòria en els microcontroladors ha d'estar ubicada dins el mateix encapsulat, això és així la majoria de les vegades, perquè la idea fonamental és mantenir el gruix dels circuits del sistema dins d'un sol integrat.

En els microcontroladors la memòria no és abundant, aquí no trobarà gigabytes de memòria com en els ordinadors personals. Típicament la memòria de programes no excedirà de 16 K-localitzacions de memòria no volàtil per a instruccions i la memòria RAM ni tan sols arribarà a excedir els 5 kilobytes.

La memòria RAM està destinada a l'emmagatzematge d'informació temporal que serà utilitzada pel processador per a realitzar càlculs o un altre tipus d'operacions lògiques. A l'espai d'adreces de memòria RAM s'ubiquen a més els registres de treball del processador i els de configuració i treball dels diferents perifèrics del microcontrolador. És per això que en la majoria dels casos, encara que es tingui un espai d'adreces d'una mida determinada, la quantitat de memòria RAM de què disposa el programador per emmagatzemar les seves dades és menor que la que pot adreçar el processador.

El tipus de memòria utilitzada en les memòries RAM dels microcontroladors és SRAM, el que evita haver d'implementar sistemes de refrescament com en el cas de les computadores personals, que utilitzen gran quantitat de memòria, típicament alguna tecnologia DRAM. Tot i que la memòria SRAM és més costosa que la DRAM, és el tipus adequat per als microcontroladors perquè aquests tenen petites quantitats de memòria RAM.

En el cas de la memòria de programes es fan servir diferents tecnologies, i l'ús d'una o altra depèn de les característiques de l'aplicació a desenvolupar, a continuació es descriuen les cinc tecnologies existents, que major utilització tenen o han tingut, fins ara d'escriure aquest llibre:

  • ROM de màscara. En aquest cas no es "grava" el programa en memòria sinó que el microcontrolador es fabrica amb el programa, és un procés similar al de producció dels CD comercials mitjançant masterització.

El cost inicial de produir un circuit d'aquest tipus és alt, perquè el disseny i producció de la màscara és un procés costós, però, quan es necessiten diversos milers o fins i tot centenars de milers de microcontroladors per a una aplicació determinada, com per exemple, algun electrodomèstic, el cost inicial de producció de la màscara i el de fabricació del circuit es distribueix entre tots els circuits de la sèrie i, el cost final d'aquesta, és bastant menor que el dels seus semblants amb un altre tipus de memòria.

  • TP One Time Programmable. Aquest tipus de memòria, també és coneguda com PROM o simplement ROM.

Els microcontroladors amb memòria OTP es poden programar una sola vegada, amb algun tipus de programador. S'utilitzen en sistemes on el programa no requereixi futures actualitzacions i per a sèries relativament petites, on la variant de màscara sigui molt costosa, també per sistemes que requereixen serialització de dades, emmagatzemats com a constants en la memòria de programes.

  • EPROM Erasable Programmable Read Only Memory. Els microcontroladors amb aquest tipus de memòria són molt fàcils d'identificar perquè el seu encapsulat és de ceràmica i porten a sobre una finestreta de vidre des de la qual es pot veure l'oblia de silici del microcontrolador.

Es fabriquen així perquè la memòria EPROM és reprogramable, però abans ha esborrés, i per això cal exposar-la a una font de llum ultraviolada, el procés de gravació és similar a l'emprat per les memòries OTP. En aparèixer tecnologies menys costoses i més flexibles, com les memòries EEPROM i FLASH, aquest tipus de memòria han caigut en desús, es feien servir en sistemes que requereixen actualitzacions del programa i per als processos de desenvolupament i posada a punt.

  • EEPROM Electrical Erasable Programmable Read Only Memory. Van ser el substitut natural de les memòries EPROM, la diferència fonamental és que poden esborrar elèctricament, per la qual cosa la finestreta de vidre de quars i els encapsulats ceràmics no són necessaris.

En disminuir els costos dels encapsulats, els microcontroladors amb aquest tipus de memòria es van fer més barats i còmodes per a treballar que els seus equivalents amb memòria EPROM. Una altra característica destacable d'aquest tipus de microcontrolador és que va ser en ells on van començar a utilitzar els sistemes de programació en circuit o ICSP (In Circuit Serial Progamming) que eviten haver de treure el microcontrolador de la targeta que l'allotja per fer actualitzacions al programa.

  • Flash. En el camp de les memòries reprogramables per a microcontroladors, són l'últim avanç tecnològic en ús a gran escala, i han substituït els microcontroladors amb memòria EEPROM.

A les avantatges de les memòries FLASH se li s'addicionen la seva gran densitat respecte a les seves predecessores el que permet incrementar la quantitat de memòria de programes a un cost molt baix. Poden més ser programades amb les mateixes tensions d'alimentació del microcontrolador, l'accés en lectura i la velocitat de programació és superior, disminució dels costos de producció, entre d'altres. El més habitual és trobar que la memòria de programes i dades està ubicada tota dins el microcontrolador, de fet, actualment són pocs els microcontroladors que permeten connectar memòria de programes a l'exterior del encapsulat. Les raons per aquestes "limitacions" estan donades perquè l'objectiu fonamental és obtenir la major integració possible i connectar memòries externes consumeix línies d'E/S que són un dels recursos més preuats dels microcontroladors. Tot i això hi ha famílies com la INTEL 51 els microcontroladors tenen la capacitat de ser expandits en una variada gamma de configuracions per a l'ús de memòria de programes externa. En el cas dels PIC, aquestes possibilitats estan limitades només a alguns microcontroladors de la gamma alta, la Figura 5 mostra algunes de les configuracions per memòria de programa que podem trobar en els microcontroladors. La configuració (a) és la típica i podem trobar gairebé en el 100% dels microcontroladors. La configuració (b) és poc freqüent i generalment s'aconsegueix configurant el microcontrolador per sacrificar la memòria de programes interna, però el 8.031 d'INTEL és un microcontrolador sense memòria de programes interna. La configuració (c) és la que es troba habitualment en els microcontroladors que tenen possibilitats d'expandir la seva memòria de programes com alguns PIC de gamma alta.

Quan es requereix augmentar la quantitat de memòria de dades, el més freqüent és col locar dispositius de memòria externa amb perifèrics, d'aquesta manera es poden utilitzar memòries RAM, FLASH o fins i tot discs durs com els de les PC, mentre que per als càlculs i altres operacions que requereixin emmagatzematge temporal de dades es fa servir la memòria RAM interna del microcontrolador. Aquesta forma d'expandir la memòria de dades està determinada, en la majoria del casos, per el tipus de repertori d'instruccions del processador i perquè permet un elevat nombre de configuracions diferents, a més del consegüent estalvi de línies d'E/S que s'aconsegueix amb l'ús de memòries amb busos de comunicació sèrie.

Interrupcions [modifica]

Imagineu que està esperant la visita d'un amic, al qual anomenarem Joan. Vostè i Joan han acordat que quan ell arribi a casa esperarà pacientment que li obri la porta. Joan no ha de tocar a la porta perquè algú a la casa dorm i no vol que li despertin.

Ara vostè ha decidit llegir un llibre mentre espera que Joan arribi a la casa, i per comprovar si ha arribat, cada cert temps atura la lectura, marca la pàgina on es va quedar, s'aixeca i va fins a la porta, obre i comprova si Joan ha arribat, si aquest encara no està a la porta, esperarà uns minuts, tancarà la porta i tornarà a la seva lectura durant algun temps.

Com veureu aquest és un mètode poc eficient per esperar a Joan perquè requereix que deixi la lectura cada cert temps i vagi fins a la porta a comprovar si ell ha arribat, a més ha d'esperar una estona si encara no arriba. I per si fos poc, imagineu que Joan no arriba mai perquè se li va presentar un problema, va haver de cancel·lar la cita i no va poder avisar a temps, o pitjor, que Joan ha arribat a la porta un instant després que vostè la tancava. Joan, respectant l'acordat, espera un temps, però es cansa d'esperar que li obrin i decideix marxar perquè creu que ja vostè no està a la casa o no pot atendre'l. A aquest mètode d'atendre l'arribada de Joan l'anomenarem enquesta.

Vegem ara un altre mètode. En aquesta ocasió simplement estirat al sofà de la sala i comença a llegir el seu llibre, quan Joan arribi ha de tocar el timbre de la porta i esperar uns moments a que l'atenguin. Quan vostè sent sonar el timbre, interromp la lectura, marca la pàgina on es va quedar i va fins a la porta per atendre la persona que toca el timbre. Una vegada que Joan o la persona que ha tocat el timbre, se'n va, vostè torna al seu seient i reprèn la lectura just on la va deixar. Aquest últim és un mètode més eficient que l'anterior perquè li deixa més temps per a llegir i elimina alguns inconvenients com el de que Joan mai arribi o marxi abans que obri la porta. És, en principi, un mètode simple però molt eficaç i eficient, l'anomenarem atenció per interrupció.

El primer d'ells, l'enquesta, és un mètode eficaç, però poc eficient perquè requereix realitzar lectures constants i moltes vegades innecessàries de l'estat del procés que volem atendre. No obstant això, és molt utilitzat en la programació de microcontroladors perquè resulta fàcil d'aprendre, la implementació de codi amb aquest mètode és menys complexa i no requereix de hardware especial per a dur endavant. D'altra banda, l'enquesta, té moltes deficiències que sovint obliguen al dissenyador a moure's cap a altres horitzons

El món està ple de situacions, de les quals no podem determinar ni quan, ni com ni per què es produeixen, en la majoria dels casos l'únic que podem fer és assabentar que determinada situació, associada a un procés, ha passat. Per a això seleccionem alguna condició o grup de condicions que ens indiquen que el procés que ens interessa ha de ser atès, a aquest fenomen, en el qual es donen les condicions que ens interessa conèixer, l'anomenarem esdeveniment. En el segon exemple veiem que per atendre a Juan, aquest ha de tocar el timbre, per tant, l'arribada de Joan és el procés que hem d'atendre i el so del timbre és l'esdeveniment que ens indica que en Joan ha arribat.

El mètode d'atenció a processos per interrupció, vist des de l'òptica de l'exemple que vaig utilitzar per mostrar-lo, és més simple que el de l'enquesta, però no és cert, el mètode es complica perquè requereix que el microprocessador incorpori circuits addicionals per registrar els esdeveniments que li indiquen que ha d'atendre al procés associat i comprendre aquests circuits i la seva dinàmica no és una tasca senzilla.

Els circuits per a l'atenció a les interrupcions i totes les tasques que ha de realitzar el processador per atendre al procés que l'interromp són bastant complexos i requereixen una visió diferent de la que estem acostumats a tenir del nostre món.

Els éssers humans no som conscients de les interrupcions, en el nostre organisme existeixen mecanismes que ens interrompen constantment, per això tenim al nostre sistema sensorial, però no som conscients del procés d'interrupció, encara que sí de l'atenció a les interrupcions. Això és perquè vam incorporar mecanismes que ens treuen ràpidament de la tasca que estem fent per atendre una situació que no pot o no ha d'esperar molt de temps. Bé, aquesta mateixa és la idea que s'incorpora en els microprocessadors per atendre processos que no poden esperar o que no sabem quan han de ser atesos perquè això depèn de determinades condicions.

La cosa es complica en la seqüència d'accions a realitzar des del moment en què es desencadena el procés d'interrupció, fins que s'executa el programa que l'atén, i en la seqüència d'accions posteriors a l'atenció. Penseu en totes les coses ha de fer el seu organisme davant d'una interrupció, utilitzem el segon exemple per atendre l'arribada de Joan. Penseu en totes les coses el seu cervell fa a esquenes de la seva consciència, des del moment en que sona el timbre fins que vostè es troba llest (conscient que és probable que Joan ha arribat) per obrir la porta, i tot el que el seu cervell ha de treballar per reprendre la lectura després que Joan ha marxat. Tot això, excepte obrir la porta i atendre a Joan, ho fem de manera "inconscient" perquè per a això tenim sistemes dedicats al nostre organisme, però en el món dels microcontroladors hem de conèixer tots aquests detalls per poder utilitzar els mecanismes d'interrupció.

Els processos d'atenció a interrupcions tenen l'avantatge que s'implementen per maquinari ubicat al processador, així que és un mètode ràpid de fer que el processador es dediqui a executar un programa especial per atendre esdeveniments que no poden esperar per mecanismes lents com el d'enquesta.

En termes generals, un procés d'interrupció i la seva atenció per part del processador, té la següent seqüència d'accions:

  1. En el món real es produeix l'esdeveniment per al qual volem que el processador executi un programa especial, aquest procés té la característica que no pot esperar molt de temps abans de ser atès o no sabem en quin moment ha de ser atès.
  2. El circuit encarregat de detectar l'ocurrència de l'esdeveniment s'activa, i com a conseqüència, activa l'entrada d'interrupció del processador.
  3. La unitat de control detecta que s'ha produït una interrupció i "aixeca" una bandera per registrar aquesta situació; d'aquesta manera si les condicions que van provocar l'esdeveniment desapareixen i el circuit encarregat de detectar-desactiva l'entrada d'interrupció del processador, aquesta es produirà de qualsevol manera, perquè ha estat registrada.
  4. La unitat d'execució acaba amb la instrucció en curs i just abans de començar a executar la següent comprova que s'ha registrat una interrupció
  5. Es desencadena un procés que permet guardar l'estat actual del programa en execució i saltar a una adreça especial de memòria de programes, on hi ha la primera instrucció de la subrutina d'atenció a interrupció.
  6. Es executa el codi d'atenció a interrupció, aquesta és la part "conscient" de tot el procés perquè és on es realitzen les accions pròpies de l'atenció a la interrupció i el programador juga el seu paper.
  7. Quan a la subrutina d'atenció a interrupció s'executa la instrucció de retorn, es desencadena el procés de restauració del processador a l'estat en què estava abans de l'atenció a la interrupció.

Com podem observar, el mecanisme d'interrupció és bastant complicat, però té dos avantatges que obliguen a la seva implementació: la velocitat i la seva capacitat de ser asíncron.Totes dues de conjunt permeten que aprofitem al màxim les capacitats de treball del nostre processador.

Els mecanismes d'interrupció no només es fan servir per atendre esdeveniments lligats a processos que requereixen atenció immediata, sinó que s'utilitzen més per atendre esdeveniments de processos asincrònics.

Les interrupcions són tan eficaços que permeten que el processador actuï com si estigués fent diverses coses alhora quan en realitat es dedica a la mateixa rutina de sempre, executar instruccions una darrere de l'altra.

Perifèrics [modifica]

Quan vam veure l'organització bàsica d'un microcontrolador, assenyalem que dins d'aquest s'ubiquen un conjunt de perifèrics, les sortides estan reflectides en els pins del microcontrolador. A continuació descriurem alguns dels perifèrics que amb més freqüència trobarem en els microcontroladors.

Entrades i sortides de propòsit general [modifica]

També coneguts com a ports d'E/S, generalment agrupades en ports de 8 bits de longitud, permeten llegir dades de l'exterior o escriure-hi des de l'interior del microcontrolador, el destí habitual és el treball amb dispositius simples com relés, LED, o qualsevol una altra cosa que se li passi al programador.

Alguns ports d'E/S tenen característiques especials que li permeten manejar sortides amb determinats requeriments de corrent, o incorporen mecanismes especials d'interrupció per al processador.

Típicament qualsevol pin d'E/S pot ser considerada E/S de propòsit general, però com els microcontroladors no poden tenir infinits pins, ni tan sols tots els pins que vulguem, les E/S de propòsit general comparteixen els forats en altres perifèrics. Per utilitzar un pin amb qualsevol de les característiques a ell assignades hem de configurar mitjançant els registres destinats a això.

Temporitzadors i comptadors [modifica]

Són circuits sincrònics per al recompte dels impulsos que arriben a la seva entrada de rellotge. Si la font de recompte és l'oscil·lador intern del microcontrolador és comú que no tinguin un pin associat, i en aquest cas treballen com a temporitzadors. D'altra banda, quan la font de recompte és externa, llavors tenen associat un pin configurat com a entrada, aquest és el mode comptador.

Els temporitzadors són un dels perifèrics més habituals en els microcontroladors i s'utilitzen per a moltes tasques, com per exemple, la mesura de freqüència, implementació de rellotges, per al treball de conjunt amb altres perifèrics que requereixen una base estable de temps entre altres funcionalitats . És freqüent que un microcontrolador típic incorpori més d'un temporitzador/comptador i fins i tot alguns tenen arranjaments de comptadors. Com veurem més endavant aquest perifèric és un element gairebé imprescindible i és habitual que tinguin associada alguna interrupció. Les mides típics dels registres de recompte són 8 i 16 bits, podent trobar dispositius que només tenen temporitzadors d'una mida o amb més freqüència amb els dos tipus de registre de recompte.

Convertidor analògic/digital [modifica]

Com que és molt freqüent el treball amb senyals analògics, aquests han de ser convertits a digital i per això molts microcontroladors incorporen un convertidor A/D, que s'utilitza per prendre dades de diverses entrades diferents que es seleccionen mitjançant un multiplexor.

Les resolucions més freqüents són 8 i 10 bits, encara que hi ha microcontroladors amb convertidors de 11 i 12 bits, per a resolucions més grans cal utilitzar convertidors A/D externs. Els conversors A/D són un dels perifèrics més cobejats en el món dels microcontroladors i és per això que moltíssims PIC els incorporen, sent aquesta una de les característiques més destacables dels dispositius que fabrica Microchip.

Port sèrie [modifica]

Aquest perifèric està present en gairebé qualsevol microcontrolador, normalment en forma de UART (Universal Asynchronous Receiver Transmitter) o USART (Universal Synchronous Asynchronous Receiver Transmitter) depenent de si permeten o no el mode sincrònic de comunicació .

El destí comú d'aquest perifèric és la comunicació amb un altre microcontrolador o amb un PC i en la majoria dels casos cal afegir circuits externs per completar la interfície de comunicació. La forma més comú de completar el port sèrie és per a comunicar amb un PC mitjançant la interfície EIA-232 (més coneguda com RS-232), és per això que moltes persones es refereixen a la UART o USART com a port sèrie RS-232, però això és un error, ja que aquest perifèric es pot utilitzar per interconnectar dispositius mitjançant altres estàndards de comunicació.

Port sèrie síncrone [modifica]

Aquest tipus de perifèric s'utilitza per comunicar al microcontrolador amb altres microcontroladors o amb perifèrics externs connectats a ell, mitjançant les interfícies SPI (Serial Peripheral Interface) o I2C (Inter-Integrated Circuit).

Tot i que és també un tipus de port sèrie, és costum tractar de forma diferenciada respecte a la UART/USART perquè les interfícies SPI i I2C aparèixer molt després que la UART/USART, el seu caràcter és únicament sincrònic i no estan dissenyades per a interconnectar al sistema amb altres dispositius independents com un PC, sinó per a connectar al microcontrolador dispositius com ara memòries, pantalles LCD, convertidors A/D o D/A.

Altres ports de comunicació [modifica]

En un món cada vegada més orientat a la interconnexió de dispositius, han aparegut moltes interfícies de comunicació i els microcontroladors no s'han quedat enrere per incorporar-les, és per això que podem trobar alguns models amb ports USB (Universal Serial Bus), CAN (Controller Area Network), Ethernet, port paral lel entre d'altres.

Comparadors [modifica]

Són circuits analògics basats en amplificadors operacionals que tenen la característica de comparar dos senyals analògics i donar com a sortida els nivells lògics '0 'o '1' en dependència del resultat de la comparació. És un perifèric molt útil per detectar canvis en senyals d'entrada de les que només ens interessa conèixer quan està en un rang determinat de webetas

Modulador d'amplada de impulsos [modifica]

Els PWM (Pulse Width Modulator) són perifèrics molt útils sobretot per al control de motors, però hi ha un grup d'aplicacions que poden realitzar-se amb aquest perifèric, dins de les quals podem citar: la conversió digital analògica D/A, el control regulat de llum (dimming) entre d'altres.

Memòria de dades no volàtil [modifica]

Molts microcontroladors han incorporat aquest tipus de memòria com un perifèric més, per a l'emmagatzematge de dades de configuració o dels processos que es controlen. Aquesta memòria és independent de la memòria de dades tipus RAM o la memòria de programes, en la qual s'emmagatzema el codi del programa a executar per el processador del microcontrolador.

Molts dels microcontroladors PIC, inclouen aquest tipus de memòria, típicament en forma de memòria EEPROM, fins i tot alguns d'ells permeten utilitzar part de la memòria de programes com memòria de dades no volàtil, de manera que el processador té la capacitat d'escriure a la memòria de programes com si aquesta fos un perifèric més.

Famílies de microcontroladors [modifica]

Els microcontroladors més comuns són:

Empresa 8 bits 12 bits 14 bits 16 bits 32 bits 64 bits Observacions
Atmel
AVR
ATmega8,89Sxxxx família semblant 8.051 ATmega16
Freescale
(abans Motorola)
68HC05, 68HC08, 68HC11, HCS08 x x 68HC12, 68HCS12, 68HCSX12, 68HC16 683xx, PowerPC Architecture,ColdFire x x
Hitachi, Ltd H8 x x x x x x
Holtek HT8
Intel MCS-48 (família 8048)
MCS51 (família 8051)
8xC251
x x MCS96, MXS296 x x x
National Semiconductor COP8 x x x x x x
Microxip Família 10f2xx Família 12Cxx Família 12Fxx, 16Cxx i 16Fxx 18Cxx i 18Fxx PIC24F, PIC24H i dsPIC30FXX, dsPIC33F amb motor dsp integrat PIC32 x x
NEC Corporation 78k
Parallax
STMicroelectronics ST 62,ST 7
Texas Instruments TMS370, MSP430
Zilog Z8, Z86E02
Silabs C8051

Observació : Algunes arquitectures de microcontrolador estan disponibles per tal quantitat de venedors i en tantes varietats, que podrien tenir, amb total correcció, la seva pròpia categoria. Entre ells trobem, principalment, les variants de 8.051 i Z80.

Vegeu també [modifica]

Enllaços externs [modifica]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Microcontrolador Modifica l'enllaç a Wikidata



Vegeu també [modifica]