# Microcontrolador

Un microcontrolador (abreujat µC, uC o MCU) és un petit ordinador en un sol circuit integrat especialitzat a controlar equips electrònics, que inclou una CPU (unitat central de processament), una petita quantitat de memòria, unitats d'E/S (Entrada/Sortida) i acostuma a portar una memòria FRAM, NOR flash o una ROM per guardar-hi el programa.
Els microcontroladors van ser dissenyats per a aplicacions per a sistemes encastats, en contraposició als microprocessadors utilitzats en els ordinadors personals per a aplicacions d'ús general. Gràcies a la seva mida i cost reduït, fan que siguin ideals per al control digital de molts dispositius. També són comuns els microcontroladors de senyal mixt, perquè poden integrar components analògics necessaris per controlar sistemes electrònics no digitals.
Alguns microcontroladors utilitzen paraules de quatre bits i operen amb una freqüència de rellotge tan baixa com 4 kHz per aconseguir un consum baix. Generalment també tenen la capacitat de quedar-se en un estat de repòs fins que reben una interrupció, això fa que el seu consum sigui gairebé nul.

## Història

La institució Smithsonian diu que el primer microprocessador va ser creat per Gary Boone i Michael Cochran el 1971. El resultat de la seva feina va ser el TMS 1000, que va començar a estar disponible comercialment el 1974. Combinava una memòria de lectura, una memòria de lectura i escriptura, un processador i un rellotge en un únic xip amb la finalitat de ser utilitzat en sistemes encastats.
Com a resposta a l'existència del TMS 1000, Intel va desenvolupar l'Intel 8048, que combinava RAM i ROM en el mateix xip. Aquest xip va trobar el seu lloc en milions de teclats d'ordinador i moltes altres aplicacions. En aquell moment, el president d'Intel, Luke J. Valenter, va declarar que el microcontrolador era una de les tecnologies d'èxit fins a la data i va incrementar en un 25% el pressupost per a la divisió que s'encarregava del microcontrolador.
La majoria de microcontroladors tenien dues variants. Una era la que permetia la reprogramació de l'EPROM (Erasable Programmable Read-Only Memory). Incorporava una petita finestra mitjançant la qual, si s'exposava a la llum ultraviolada, s'aconseguia esborrar el contingut de la memòria del programa. L'altra variant era la PROM, que era exactament del mateix tipus de memòria però no permetia esborrar el contingut de la memòria del programa. Les versions que es podien esborrar requerien embolcalls ceràmics amb unes finestres de quars, i això les feia significativament més cares que les que no es podien esborrar.
El 1993 es van introduir les EEPROM. Aquesta memòria permetia esborrar ràpidament el contingut de la memòria elèctricament sense necessitat del cap encapsulat de les EPROM, la qual cosa permetia un ràpid prototipatge i una ràpida programació.
El preu dels microcontroladors s'ha abaratit al llarg del temps. Si se'n compren grans quantitats, un microcontrolador de 8 bits pot arribar a costar menys de 0,25 dòlars nord-americans (USD), i alguns de 32 bits, al voltant d'1 dòlar.

### Quantitats

El 1997 es van vendre més de 2.000 milions de microcontroladors de 8 bits. El 2002 aproximadament el 55% de totes les CPU que es van vendre a tot el món van ser microcontroladors de 8 bits, i segons Semico el 2006 es van vendre al voltant de 4.000 milions de microcontroladors. Actualment, Semico ha manifestat que el mercat de MCU ha crescut un 36-,5% el 2010, i un 12% el 2011.

## Característiques

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 la memòria de lectura-escriptura per a dades, la memòria només de lectura per emmagatzemar el programa, memòria flash per a emmagatzematge 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 a les aplicacions típiques per a les quals es programen. Consumeixen poca energia (miliwatts o fins i tot microwatts), i en general mantenen la funcionalitat mentre esperen un comandament com ara prémer un botó o una interrupció. El consum d'energia en estat inactiu (amb el rellotge de la CPU i els perifèrics desactivats) pot ser de només nanowatts, tret que els converteix en ideals per a 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, sense que calgui res més.
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 els convertidors d'analògic a digital (CAD), els temporitzadors, UARTs i els busos d'interfície en sèrie especialitzats, com I2C i CAN. 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. A causa del fet que utilitza força espai 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.

## Arquitectures

Bàsicament existeixen dues arquitectures de computadors, i per descomptat, estan presents al món dels microcontroladors: Von Neumann i Harvard. Es diferencien en la forma de connexió de la memòria al processador i en els busos que cadascuna necessita.

### Arquitectura Von Neumann

L'arquitectura Von Neumann utilitza el mateix dispositiu d'emmagatzematge tant per a les instruccions com per a les dades, i és la que s'utilitza als ordinadors personals perquè permet estalviar una bona quantitat de línies d'I/S, que són bastant costoses. També aquesta organització estalvia als dissenyadors de plaques mare una bona quantitat de problemes i redueix el cost d'aquest tipus de sistemes.
En un ordinador personal, quan es carrega un programa en memòria, a aquest s'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 (disc dur, memòria RAM, memòria flash, unitat de disc òptic...).
En el cas dels microcontroladors, existeixen dos tipus de memòria ben definides: la memòria de dades (típicament algun tipus de SRAM) i la memòria de programes (ROM, PROM, EEPROM, flash o d'un altre tipus no volàtil). En aquest cas l'organització és diferent de les de l'ordinador personal, 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.
A pesar que en els sistemes integrats amb arquitectura Von Neumann la memòria estigui segregada, i existeixin diferències pel que fa a la definició tradicional d'aquesta arquitectura; els busos per accedir a tots dos tipus de memòria són els mateixos, del processador solament 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.
Algunes famílies de microcontroladors com la Intel 8051 i la Z80 implementen aquest tipus d'arquitectura, fonamentalment perquè era la utilitzada quan van aparèixer els primers microcontroladors.

### Arquitectura Harvard

L'altra variant és l'arquitectura Harvard, i és, per excel·lència, la que s'utilitza en supercomputadors, en els microcontroladors, i en els sistemes integrats 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 grandària dels busos a les característiques de cada tipus de memòria; a més, el processador pot accedir-hi a cadascuna de forma simultània, la qual cosa 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 està en el fet que consumeix moltes línies d'E/S del processador; pel que en sistemes on el processador està situat en el seu propi encapsulat, només s'utilitza en supercomputadors. No obstant això, en els microcontroladors i altres sistemes integrats, on usualment 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.
Per això és important recordar que un microcontrolador es pot configurar de diferents maneres, sempre que es respecti la grandària de memòria que aquest requereixi per a funcionar correctament.

## Processador en detall

En els anys 1970, l'electrònica digital no estava suficientment desenvolupada, però dins de l'electrònica ja era una especialitat consagrada. Per aquell temps les computadores es dissenyaven perquè realitzessin algunes operacions molt simples, i si es volia que aquestes màquines poguessin fer coses diferents, era necessari fer canvis bastant significatius al maquinari.
A principis de la dècada de 1970, una empresa japonesa li va encarregar a una jove companyia nord-americana que desenvolupés un conjunt de circuits per produir una calculadora de baix cost. Intel es va dedicar de ple a la tasca i entre els circuits encarregats va desenvolupar-ne un de molt especial, una cosa que encara no s'havia creat fins aleshores: el primer microprocessador integrat.
L'Intel 4004 va sortir al mercat en 1971, i é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 està en el fet 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 del qual està determinat pel tipus d'operació i els operands involucrats.
Vist així, no hi ha res d'especial en un microprocessador; la meravella està en el fet que la combinació adequada dels codis d'entrada, la seva execució seqüencial, poder saltar cap enrere o avançar en la seqüència de codis sobre la base de decisions lògiques o ordres específiques, permet que la màquina realitzi un munt d'operacions complexes, no incloses en els simples codis bàsics.
Avui estem acostumats als sistemes amb microprocessadors, però en el llunyà 1971 aquesta era una forma de pensar una mica diferent, fins i tot, escandalosa, fins a tal punt que Busicom, l'empresa que va encarregar els xips a Intel, no es va mostrar interessada en l'invent, per la qual cosa Intel ho va comercialitzar per a uns altres que van mostrar interès; la resta és història: una revolució sense precedents en l'avenç 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 avanç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 satisfer la copa de la revolució cientificotècnica, perquè va permetre desenvolupar aplicacions impensades o accelerar-ne algunes ja d'encaminades.
Ara començarem a veure com és que està fet un processador, no serà una explicació gaire 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. En la figura 'Esquema d'un microcontrolador' 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ò així i tot ens permet conèixer cadascun dels seus elements bàsics i les seves interrelacions.

### Registres

Són un espai de memòria molt reduït però necessari per a qualsevol microprocessador, des 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 sentim que un processador és de 4, 8, 16, 32 o 64 bits, ens estem referint a processadors que realitzen les seves operacions amb registres de dades d'aquesta grandària, i per descomptat, això determina moltes de les potencialitats d'aquestes màquines.
Com més gran sigui el nombre de bits dels registres de dades del processador, més grans en seran les prestacions, quant al 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, encara 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

Aquesta unitat és de les més importants en el processador, hi recau la lògica necessària per a la descodificació i execució de les instruccions, el control dels registres, la ALU, els busos i tot allò que es vulgui introduir en el processador.
La unitat de control és un dels elements fonamentals que determinen les prestacions del processador, ja que el seu tipus i estructura determinen 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 parar 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 descodificació, unitat d'execució, controladors de memòria cau, controladors de busos, controlador d'interrupcions, pipelines, entre altres elements, depenent sempre del tipus de processador.

### Unitat aritmètica-lògica

Com 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, poden fer-se en temps molt curts tasques més o menys complexes, com per exemple, els càlculs en coma flotant.

### Busos

Són el mitjà de comunicació que utilitzen els diferents components del processador per intercanviar informació entre si, eventualment els busos 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 busos estiguin reflectits en l'encapsulat del circuit, ja que aquests es destinen bàsicament a les I/S de propòsit general i perifèrics del sistema.
Existeixen 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: s'utilitza per moure les dades entre els dispositius de maquinari (entrada i sortida).
* Control: s'utilitza per gestionar els diferents processos d'escriptura lectura i controlar l'operació dels dispositius del sistema.

### Conjunt d'instruccions

Encara que no aparegui en l'esquema, no podíem deixar el 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.
Existeixen dos tipus bàsics de repertoris d'instruccions que determinen l'arquitectura del processador: CISC i RISC.
CISC, de l'anglès Complex instruction set computing, computadora de conjunt d'instruccions complexes. Els microprocessadors CISC tenen un conjunt d'instruccions que es caracteritza per ser molt ampli i que permeten realitzar operacions complexes entre operands situats en la memòria o en els registres interns. Aquest tipus de repertori dificulta el paral·lelisme entre instruccions, per la qual cosa en l'actualitat, la majoria dels sistemes CISC d'alt rendiment converteixen les instruccions complexes en diverses instruccions simples del tipus RISC, generalment conegudes com a microinstruccions.
Dins dels microcontroladors CISC podem trobar la popular família Intel 8051 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 Set Computer, computadora amb conjunt d'instruccions reduït. Se centra en l'obtenció de processadors amb les següents característiques fonamentals:
* Instruccions de grandària 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, implementen mecanismes de traducció d'instruccions CISC a RISC, per aprofitar els avantatges d'aquest tipus de processadors.
Els processadors dels microcontroladors PIC són de tipus RISC.

## Memòria

Anteriorment havíem vist que la memòria en els microcontroladors ha d'estar situada dins del 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 es troben gigaoctets de memòria com passa a les computadores personals. Típicament la memòria de programes no excedirà de 16 K-localitzacions de memòria no volàtil (flash o eprom) per contenir els programes.
La memòria RAM està destinada a l'emmagatzematge d'informació temporal que serà utilitzada pel processador per realitzar càlculs o un altre tipus d'operacions lògiques. A l'espai d'adreces de memòria RAM se situen, 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 grandària determinada, la quantitat de memòria RAM que 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, la qual cosa evita haver d'implementar sistemes d'actualització com en el cas de les computadores personals, que utilitzen gran quantitat de memòria, típicament alguna tecnologia DRAM. A pesar que la memòria SRAM és més costosa que la DRAM, és el tipus adequat per als microcontroladors perquè posseeixen petites quantitats de memòria RAM.
En el cas de la memòria de programes s'utilitzen diferents tecnologies, i l'ús d'una o una 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:
* Màscara ROM. 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 la 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, no obstant això, 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.
* Memòria PROM (Programmable Read-Only Memory) també coneguda com a OTP (One Time Programmable). Aquest tipus de memòria també és coneguda com a 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 a sistemes que requereixen serialización de dades, emmagatzemats com a constants en la memòria de programes.
* Memòria 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 damunt una finestreta de vidre des de la qual pot veure's l'hòstia de silici del microcontrolador. Es fabriquen així perquè la memòria EPROM és reprogramable, però abans ha d'esborrar, i per a això cal exposar-la a una font de llum ultraviolada, el procés d'enregistrament és similar a l'empleat per a les memòries OTP. En aparèixer tecnologies menys costoses i més flexibles, com les memòries EEPROM i FLAS, aquest tipus de memòria han caigut en desús, s'utilitzaven en sistemes que requereixen actualitzacions del programa i per als processos de desenvolupament i posada a punt.
* Memòria EEPROM (Electrical Erasable Programmable Read Only Memory). Van ser el substitut natural de les memòries EPROM, la diferència fonamental és que poden ser esborrades elèctricament, per la qual cosa la finestreta de cristall 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 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-se els sistemes de programació en el sistema que eviten haver de treure el microcontrolador de la targeta que ho allotja per fer actualitzacions al programa.
* Memòria 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. Als avantatges de les memòries flash se li afegeixen la seva gran densitat respecte de les seves predecessores, fet que permet incrementar la quantitat de memòria de programes a un cost molt baix. Poden, a 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à situada tota dins del microcontrolador, de fet, actualment són pocs els microcontroladors que permeten connectar memòria de programes en l'exterior de l'encapsulat. Les raons per a aquestes “limitacions” estan donades perquè l'objectiu fonamental és obtenir la integració més gran possible i connectar memòries externes consumeix línies d'I/S, que són un dels recursos més preuats dels microcontroladors.
Malgrat que l'anterior existeixen famílies com la Intel 8051, els microcontroladors de la qual 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 a memòria de programa que podem trobar en els microcontroladors. La configuració (a) és la típica i podem trobar-la 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, no obstant això l'Intel 8031 é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 cal augmentar la quantitat de memòria de dades, el més freqüent és col·locar dispositius de memòria externa en forma de perifèrics, d'aquesta forma es poden utilitzar memòries RAM, FLASH o fins i tot discos durs com els dels ordinadors personals, mentre que per als càlculs i altres operacions que requereixin emmagatzematge temporal de dades s'utilitza la memòria RAM interna del microcontrolador. Aquesta forma d'expandir la memòria de dades està determinada, en la majoria dels casos, pel 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'I/S que s'aconsegueix amb l'ús de memòries amb busos de comunicació seriï.

## Perifèrics

Quan observem l'organització bàsica d'un microcontrolador, assenyalem que dins d'aquest se situen un conjunt de perifèrics. A continuació descriurem alguns dels perifèrics que amb més freqüència trobarem en els microcontroladors.

### Entrades i sortides de propòsit general

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 altra cosa que 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 pins amb altres perifèrics. Per utilitzar un pin amb qualsevol de les característiques que li són assignades, hem de configurar mitjançant els registres que li són destinats.

### Temporitzadors i comptadors

Són circuits sincrònics per al recompte dels polsos que arriben al seu poder per aconseguir l'entrada de rellotge. Si la font d'un gran 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 comptatge és externa, llavors tenen associat un pin configurat com a entrada, aquest és el 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, el mesurament 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ípiques dels registres de recompte són 8 i 16 bits, i es poden trobar dispositius que només tenen temporitzadors d'una grandària o amb més freqüència amb ambdós tipus de registre de recompte.

### Convertidor analògic/digital

Com és molt freqüent el treball amb senyals analògics, aquestes han de ser convertides a digital i per això molts microcontroladors incorporen un convertidor analògic-digital, el qual s'utilitza per a prendre dades de diverses entrades diferents que se seleccionen mitjançant un multiplexor. Les resolucions més freqüents són 8 i 10 bits, que són suficients per a aplicacions senzilles. Per a aplicacions en control i instrumentació estan disponibles resolucions de 12bit, 16bit i 24bit. També és possible connectar un convertidor extern, en cas de necessitat.

### Ports de comunicació

Port sèrie 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 la manera sincrònica 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 comuna de completar el port sèrie és per comunicar-lo amb un PC mitjançant la interfície EIA-232 (més coneguda com a 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ó. En aplicacions industrials s'utilitza preferiblement RS-485 pel seu abast superior en distància, velocitat i resistència al soroll.
SPIAquest tipus de perifèric s'utilitza per comunicar al microcontrolador amb altres microcontroladors o amb perifèrics externs que hi estan connectats, per mitjà d'una interfície molt senzilla. Hi ha només un node controlador que permet iniciar qualsevol transacció, la qual cosa és un desavantatge en sistemes complexos, però la seva senzillesa permet l'aïllament galvànic de forma directa per mitjà d'optoacopladors.
I2C Compleix les mateixes funcions que la SCI, però requereix menys senyals de comunicació i qualsevol node pot iniciar una transacció. És molt utilitzat per connectar les targetes gràfiques de les computadores personals amb els monitors, perquè aquests últims informin de les seves prestacions i permetre l'autoconfiguració del sistema de vídeo.
USB Els microcontroladors són els que han permès l'existència d'aquest sistema de comunicació. És un sistema que treballa per polling (monitoratge) d'un conjunt de perifèrics intel·ligents per part d'un amo, que és normalment un computador personal. Cada mode intel·ligent està governat inevitablement per un microcontrolador.
Ethernet És el sistema més estès en el món per a xarxes d'àrea local cablejades. Els microcontroladors més poderosos de 32 bits s'usen per implementar perifèrics prou poderosos perquè puguin ser accedits directament per la xarxa. Molts dels encaminadors casolans de petites empreses estan construïts basant-se en un microcontrolador que fa del cervell del sistema.
Can Aquest protocol és del tipus CSMA / CD amb tolerància a elevats voltatges de manera comuna i orientat al temps real. Aquest protocol és l'estàndard més important en la indústria automotriu (OBD). També s'usa com a capa física del "field bus" per al control industrial.

#### Altres ports de comunicació

Hi ha una enorme quantitat d'altres busos disponibles per a la indústria automotriu (linbus) o de mitjans audiovisuals com el I2S, IEEE 1394. L'usuari se'ls trobarà quan treballi en alguna àrea especialitzada.
Comparadors 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 a detectar canvis en senyals d'entrada de les quals només ens interessa conèixer quan està en un rang determinat de voltatge.
Modulador d'ample de polsos 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: inversió DC / AC per UPS, conversió digital analògica D / A, control regulat de llum (dimming) entre d'altres.
Memòria de dades no volàtil Molts microcontroladors han incorporat aquests 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 pel 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 permeten utilitzar part de la memòria de programes com a memòria de dades no volàtil, de manera que el processador té la capacitat d'escriure en la memòria de programes com si aquesta fos un perifèric més.

## Famílies de microcontroladors

Els microcontroladors més comuns en ús són:
| Empresa | 8 bits | 16 bits | 32 bits |
| Atmel | AVR (mega i tiny), 89Sxxxx familia similar 8051 | | SAM7 (ARM7TDMI), SAM3 (ARM Cortex-M3), SAM9 (ARM926), AVR32 |
| Freescale (abans Motorola) | 68HC05, 68HC08, 68HC11, HCS08 | 68HC12, 68HCS12, 68HCSX12, 68HC16 | 683xx, PowerPC, ColdFire |
| Holtek | HT8 | | |
| Intel | MCS-48 (família 8048) MCS51 (família 8051) 8xC251 | MCS96, MXS296 | x |
| National Semiconductor | COP8 | x | x |
| Microchip | Família 10f2xx Família 12Cxx Família 12Fxx, 16Cxx y 16Fxx 18Cxx y 18Fxx | PIC24F, PIC24H y dsPIC30FXX,dsPIC33F amb motor dsp integrat | PIC32 |
| NXP Semiconductors (abans Philips) | 80C51 | XA | Cortex-M3, Cortex-M0, ARM7, ARM9 |
| Renesas (abans Hitachi, Mitsubishi i NEC) | 78K, H8 | H8S, 78K0R, R8C, R32C/M32C/M16C | RX, V850, SuperH, SH-Mobile, H8SX |
| STMicroelectronics | ST 62, ST 7 | | STM32 (ARM7) |
| Texas Instruments | TMS370 | MSP430 | C2000, Cortex-M3 (ARM), TMS570 (ARM) |
| Zilog | Z8, Z86E02 | | |

## Bibliografia

* Gridling, Gunther; Weiss, Bettina. Introduction to Microcontrollers (en anglès). Viena: Vienna University of Technology, 19/03/2006. Arxivat 2019-08-28 a Wayback Machine.
* Augarten, Stan. «The Most Widely Used Computer on a Chip: The TMS 1000». A: State of the art : a photographic history of the integrated circuit (en anglès). New Haven: Ticknor & Fields, 1983. ISBN 0-89919-206-8.
* Laws, David (coord.). Oral History Panel on the Development and Promotion of the Intel 8048 Microcontroller (en anglès). Computer History Museum, 30/07/2008.
* Svendsli, Odd Jostein. Atmel’s Self-Programming Flash Microcontrollers (en anglès). Atmel Corporation, 2003.

## Vegeu també

* Microprocessador
* Arduino
* Microbòtica
* Programador (hardware)

## Enllaços externs

* How to Program a Microcontroller
* Microcontrolador a Curlie
* Embedded Systems Design Arxivat 2007-06-09 a Wayback Machine. magazine
* TechOnline - Fundaments de Microcontroladors