# Mikrokontrolagailu

Mikrokontrolagailu bat (batzuetan μC, uC edo MCU bezala laburtua) barruan konputagailu baten hiru unitate funtzionalak dituen zirkuitu integratu bat da: Prozesatzeko Unitate Zentrala (PUZ), memoria eta sarrera-irteerako unitateak. Mikrokontrolagailuak aplikazio txertatuetarako diseinatu ohi dira, konputagailu pertsonaletan erabiltzen diren mikroprozesadoreak edo helburu orokorreko beste aplikazio batzuk ez bezala.
Mikrokontrolagailuak automatikoki kontrolatzen diren produktu eta gailuetan erabiltzen dira. Esate baterako, automobil-ingeniaritza kontrol-sistemak, inplanteetarako gailu medikuak, urruneko kontrolak, bulego-makinak, jostailuak, etab. Nahiz eta edozein konputagailu pertsonalekin alderatuz gero prestazio gutxiago dituzten, berezitasun maila handiko gailuak izan ohi dira. Zigilu baten tamaina eduki dezakete, baina are txikiagoak izatea da normalena kontrolatzen duten gailuaren parte baitira.
Mikrokontrolagailu batzuk lau biteko hitzak erabiltzen dituzte eta 4kHz-etako maiztasunarekin funtzionatzen dute, energia kontsumo txikiak lortuz (miliwatt-en ordenakoak). Orokorrean gertaera baten zain daudenean (botoi bat edo bestelako etengailuren bat sakatzea, adibidez) beraien funtzionalitatea mantentzeko gaitasuna dute. Energia kontsumoa “lo” dauden bitartean (PUZ-aren erlojua eta periferiko gehienak itzalita) nanowatt-en ordenakoa izan beharko litzateke, mikrokontrolagailu gehienak bateriak asko iraun behar duen aplikazioetarako egoki bihurtuz. Beste batzuetan mikrokontrolagailuek errendimendua kritikoa deneko rolak bete ditzakete Seinale Prozesadore Digitalek (DSP) bezala jokatuz, erloju abiadura eta energia kontsumo handiekin.
Sistema jakin baten energia kontsumoa eta kostu ekonomikoa murrizteko diseinatuak izaten dira. Horregatik, PUZ-aren tamaina, memoria kopurua eta sarrera irteerako unitateen aukeraketa aplikazioaren araberakoak izaten dira. Irabiagailu bat bezalako etxetresna elektriko sinple baten kontrolak prozesadore txikia erabiliko du oso (4 edo 8 bit), automata finitu bat ordezkatuko duelako. Musika edo bideo digital erreproduzitzaile batek berriz (mp3 edo mp4), 32 edo 64 biteko prozesadore bat beharko du. ABS (Antilock Brake System) balazta sistema bat normalean 16 biteko mikrokontrolagailu batean oinarritzen da, automobilaren motorraren kontrol sistema elektronikoa bezala.

## Diseinu Txertatua

Mikrokontrolagailu bat prozesadorea, memoria eta periferikoak dituen sistema autonomo bezala kontsidera daiteke, eta sistema txertatu bezala erabili. Gaur egun erabiltzen diren mikrokontrolagailu gehienak beste makineriaren batean txertatuta daude, esate baterako, kotxeak, telefonoak, eta konputagailu sistemetarako periferikoak. Sistema txertatu bat, finean, funtzio jakin batzuk bete ditzan diseinatutako sistema informatiko bat da. Sistema txertatu batzuk oso sofistikatuak izan daitezke, eta beste batzuk berriz memoria eta programa luzera minimoekin nahikoa izan dezakete, sistema eragilerik gabe ere funtzionatzeko gai izanik. Ohiko sarrera-irteerako gailuak izaten dira etengailuak, pultsadoreak, LEDak, LCD pantaila txikiak, irrati-maiztasuneko gailuak, eta tenperatura, hezetasuna, argitasun-maila, etab. bezalako datuak jasotzeko sentsore ezberdinak. Sistema txertatuek ez dute ez pantailarik, ez teklaturik, ez disko eta inprimatzailerik edo bestelako konputagailu pertsonaletan aurkitu ohi ditugun sarrera-irteera gailurik izaten, eta gerta daiteke gizakiarekin zuzenean elkarreragiteko inolako gailurik ez izatea ere.

### Etenak

Mikrokontrolagailuek kontrolatzen ari diren sistema txertatuko gertaerei denbora errealean erantzuteko gai izan behar dute. Gertaera jakin batzuk ematen direnean, eten-sistemak prozesadoreari seinale bat bidal diezaioke une horretan exekutatzen ari den agindu-sekuentzia utzi eta etenaren zerbitzu errutinarekin (ISR) has dadin. ISRak etenaren sorburuan oinarritutako edozein prozesamendu-behar beteko du jatorrizko agindu sekuentziara itzuli aurretik. Etenak edozein menpeko gailuk sor ditzakete, eta maiz, horrelako gertaerek sortzen dituzte: barruko erloju baten gainezkatzeak, analogikotik digitalerako bihurketa baten bukaerak, sakatua izan den botoi batek eragindako sarrera baten maila logikoaren aldaketak, eta komunikazio loturaren batean datu bat jaso izanak. Bateriarekin funtzionatzen duten eta beraz energia kontsumoak garrantzia handia duen sistemetan eten bat izan daiteke mikrokontrolagailua kontsumo baxuko “lotan” funtzionamendu modu batetik aterako duena, periferiko baten eskaeraren baten aurrean.

### Programak

Mikrokontrolagailuko programak txiparen barruan dagoen memorian kabitu behar dute, garestia izan baitaiteke kanpoko memoria hedagarri sistema bat. Konpilatzaile eta mihiztatzaileak erabiltzen dira goi mailako lengoaietatik eta mihiztadura lengoaiatik mikrokontrolagailuaren memorian sartuko den makina-kode konpaktu bat sortzeko. Gailuaren arabera, memoria-programa iraunkorra izan daiteke, irakurri bakarrik egin daitekeena, eta beraz fabrikazio garaian programatu behar dena, edo aldatu daitekeen memoria batean egon daiteke, flash motakoan esate baterako.

### Mikrokontrolagailuen beste ezaugarri batzuk

Mikrokontrolagailuek normalean bizpahiru eta dozenaka artean helburu orokorreko sarrera/irteerako pin izaten dute (GPIO). GPIO pinak software bidez konfiguratu daitezke sarrera edo irteerako egoera batean egon daitezen. Irteerako pin bezala konfiguratuz gero, GPIO pinek LEDak eta motorrak bezalako gailuak kontrola ditzakete. Pinout esaten zaio zirkuitu integratu baten pinen esleipenari.
Sistema txertatu askok seinale analogikoak produzitzen dituzten sentsoreak irakurri beharra izaten dute. Hau da bihurgailu analogiko-digitalaren betebeharra (ADC). Prozesadoreak datu digitalak interpretatu eta prozesatzeko prestatuta daude, hau da, 1ekoak eta 0koak, eta ez dira seinale analogikoekin zuzenean ezer egiteko gauza. Beraz, ADCa sarrerako datu analogikoak prozesadoreak erabili ahal izango dituen datu digitaletan bihurtzeko erabiltzen da. Hain ohikoa ez den arren digital-analogiko bihurgailuak (DAC) ere aurki daitezke mikrokontrolagailuetan, prozesadoreari irteeran seinale analogikoak eta boltajeak emateko gaitasuna ematen diotenak.
Bihurgailuez gainera mikroprozesadore txertatu askok timer edo denboragailu ezberdinak izaten dituzte. Ohikoenetako bat, epe programagarriko timer-a da (PIT). PIT batek balio jakin batetik behera zeroraino konta dezake, edo erregistro kontagailuaren gaitasuneraino, gorantz, gainezkatzean zerora bueltatuz. Zero balioa hartzen duen bakoitzean, eten bat bidaltzen dio prozesadoreari kontatzen bukatu duela adierazteko. Oso erabilgarria da mekanismo hau periodikoki tenperatura konprobatu behar duen termostato baten funtzionamendua kontrolatzeko adibidez, beste adibide askoren artean.
Denboraren prozesamendu unitatea (TPU) timer sofistikatua da. Gutxituz kontatzeaz gainera, sarrerako gertaerak detektatu ditzake eta irteerako gertaerak sortu, beste eragiketa erabilgarri batzuk burutzeaz gain.
Pultsu zabaleraren modulazio (PWM) bloke dedikatuak berriz PUZak potentzia bihurgailuak, karga erresistiboak, motorrak, etab. denbora begizta estuetan PUZaren baliabide gehiegi erabili gabe kontrolatu ahal izatea ahalbidetzen du.
Igorle/Jasotzaile unibertsal asinkrono blokeak berriz (UART) serie hari batean datuak bidali eta jasotzeko aukera ematen du PUZarentzako karga oso txikiarekin. Txiparen hardware dedikatuak askotan beste gailu (txip) batzuekin formatu digitalean komunikatzeko tresna edo gaitasunak (I2C eta serie interfaze periferikoa, SPI) barneratzen ditu.

## Integrazio handiagoa

Mikrokontrolagailuetan ez da, helburu orokorreko PUZetan bezala, kanpoko helbide edo datu-bus bat inplementatzen, RAM memoria eta memoria iraunkorra PUZa dagoen txip berean baitaude.
Memoria eta beste periferiko batzuk txip bakar batean integratu eta unitate bakar bat bezala probatzeak txip horren kostua igo dezake, baina sistema txertatuaren koste netoa, multzo guztia kontuan izanda, jaitsi egin ohi da. Nahiz eta periferikoak integratuta dauzkan PUZ bat garestiagoa den PUZ bat eta kanpoko periferiko batzuk baino, txip gutxiago izateak zirkuitu plaka txikiago bat edukitzea ahalbidetzen du, eta plaka hori frogatu eta muntatzeko lana txikiagotzen du.
Mikrokontrolagailua normalean ezaugarri hauek izaten dituen zirkuitu integratu bakar bat da:
* Prozesu Unitate Zentrala – Hasi 4 biteko prozesadoreetatik eta 32 edo 64 biteko prozesadore konplexuetara
* Datuak gordetzeko memoria aldagarria (RAM)
* ROM, EPROM, EEPROM edo Flash memoria programak eta bestelako parametroak gordetzeko
* Pin bakoitzaren egoera logikoa zein den detektatzea eta kontrolatzea ahalbidetuko duten sarrera eta irteerako bit diskretuak.
* Serieko sarrera-irteera (UART serie portua esate baterako)
* Beste serie komunikazio interfazeren bat: I2C, SPI, CAN... sistema ezberdinak elkar-konektatzeko.
* Denboragailu, gertaera kontagailu, PWM sortzaile eta watchdog-a (sistemak egoki funtzionatzeari uzten diola detektatzeko eta automatikoki berrabiarazteko gai den mekanismoa) bezalako periferikoak.
* Erloju sortzaileak – Sarri kuartzo kristalezko denboragailu oszilatzaile bat, erresonante bat edo RC zirkuitu bat
* Askok ADCak dituzte, eta batzuk DACak ere bai.
* Zirkuiteria programatzeko eta debuggeatzeko (pausoz pauso exekutatzea, funtzionamendu akatsak atzemateko adibidez) aukerak.
Integrazio honek drastikoki txikitzen du txip kopurua, hari kopurua, eta zirkuiteria-plakan behar den espazioa zirkuitu berdina txip ezberdinekin osatuta behar direnekin alderatuz gero. Are gehiago: Pin gutxiko gailuetan bereziki, pin bakoitzak barruko periferiko ezberdinekin izan dezake lotura, pinaren funtzioa momenturo software bidez aukeratu daitekeelarik. Horrela, pin bakoitzari funtzio jakin bat esleituta izanda baino aplikazio gehiagotan erabili daiteke.

## Mikrokontrolagailuaren nukleoa

Mikrokontrolagailua zirkuitu integratu baten barruan dagoen konputagailu txertatu bat izan arren, nukleo batek eta zirkuitu osagarri batzuek osatzen dute. Nukleoaren barruan prozesadorea eta memoria daude, konputagailu arkitektura jakin batean oinarrituta egituraturik.

### Konputagailu arkitekturak

Oinarrian, bi dira konputagailu arkitekturak, eta noski, mikrokontrolagailuen munduan presente daude: Von Neumann eta Harvard. Bien arteko aldea memoria eta prozesadorearen arteko konexioan eta bakoitzak behar dituen bus-etan dago.
Von Neumann arkitektura da konputagailu pertsonaletan erabiltzen dena. Memoria bakarra izaten du, eta bertan gordetzen dira programa-agindu zein datuak. Memoria atzitzeko helbide-busa, datu-busa eta kontrol-busa erabiltzen dira.
Mikrokontrolagailuen kasuan ordea ongi bereizitako bi memoria mota izaten dira: datuen memoria (SRAM motakoa tipikoki) eta programa memoria (ROM, PROM, EEPROM, FLASH edo beste edozein memoria ez-hegazkor). Kasu honetan, egituraketa konputagailu pertsonaletan erabiltzen denaren ezberdina da, memoria bakoitzarentzat zirkuitu ezberdina erabiltzen delako.
Hala ere, memoria mota bakoitza atzitzeko erabiltzen diren busak berdinak dira: kontrol-busa, helbide-busa eta datu-busa, eta beraz, oinarrizko arkitekturaren printzipio bera jarraitzen du.
Beste aukera Harvard arkitektura da. Superkonputagailuetan, mikrokontrolagailuetan eta orokorrean sistema txertatuetan gehien erabiltzen den aukera da. Kasu honetan, bus banatuak erabiltzen dira, memoria mota bakoitzak datu-bus bat, kontrol-bus bat eta helbide-bus bat dituelarik.
Arkitektura honen abantaila nagusia busen tamaina memoria mota bakoitzera egokitzeko aukera ematen duela da. Gainera, prozesadoreak bi memoriak aldi berean atzi ditzake, prozesamendu abiadura handiago bat lortuz. Arkitektura hau jarraitzen duten sistemak Von Neumann arkitektura jarraitzen dutenak baina bi aldiz azkarragoak izan ohi dira.
Desabantaila arkitektura honekin prozesadorearen sarrera/irteera lerro gehiago erabiltzen direla izan daiteke, memoria eta prozesadorea txip berean kapsulatuta ez badaude. Bestela, horrek ere arazo izateari uzten dio, eta horregatik aurkituko dugu Harvard arkitektura mikrokontrolagailu gehienetan.

## Bolumenak

Munduan saltzen diren PUZen %55 gutxi gorabehera, 8 biteko mikrokontrolagailu eta mikroprozesadoreak dira. SEMICOk dioenez, 2006an 4 bilioi 8-biteko mikrokontrolagailu saldu zen.
Etxean helburu orokorreko prozesagailu bat edo bi edukitzen ditugu normalean, baina litekeena da dozena bat edo bi mikrokontrolagailu izatea etxeko gailuetan banatuta. Ia edozein gailu elektronikotan aurki daitezke: autoak, garbigailuak, labeak, mikrouhin labeak, telefonoak, etab.
Fabrikatzaileek beraien mikrokontrolagailuen bertsio bereziak egin izan dituzte software eta hardware garatzaileei garapena errazte aldera. Bertsio hauetan argi ultramoreak erabiliz EPROM memoria borratu ahal izateko “leiho” bat egoten zen, horrela programatu (“erre”) eta probatu eta gero programa-memoria berriz idatzi ahal izateko. 1998az geroztik EPROM bertsioak arraroagoak dira, eta haien lekuan EEPROMak eta flash-ak aurki daitezke: edukia elektronikoki ezabatu daiteke eta beraz errazago erabili, eta gainera fabrikazio lana merkeagoa da.
Beste bertsio batzuetan ROM memoria kanpoko memoria bat bezala atzitzen da, eta ez barruko memoria bat bezala, baina hauek ere gero eta arraroagoak dira.
Mota honetako gailu programagarriak ibiltzeak firmwarearen eguneraketak eta produktua fabrikatik atera eta gero ere aldatu ahal izatea ahalbidetzen du. Memoria programagarriak produktu berriak garatzeko behar den denbora ere txikitzen du.
Ehunka edo milaka gailu berdin behar direnean, fabrikazio garaian programatutako piezak erabiltzea aukera merkea izan daiteke.

## Programazio inguruneak

Mikrokontrolagailuak tipikoki mihiztadura lengoaian bakarrik programatu izan dira, baina gaur egun ohikoa da goi-mailako lengoaia batzuk erabiltzea ere. Lengoaia hauek helburu horrekin bereziki diseinatuak izan daitezke, edo helburu orokorreko lengoaien bertsioak, C programazio lengoaiaren kasuan bezala. Helburu orokorreko lengoaien konpilatzaileek murrizketak izaten dituzte mikrokontrolagailuen ezaugarri bereziekin bat egin ahal izateko. Mikrokontrolagailu batzuk aplikazio mota jakin batzuk garatzeko ingurune propioak izaten dituzte. Mikrokontrolagailu saltzaileek askotan tresnak doan eskaintzen dituzte beraien hardwarea errazago erabiltzea erraztu eta bultzatzeko.
Mikrokontrolagailu batzuk hain dira bereziak, beraien dialekto propioak behar izaten dituztela. Horien adibidea da SDCCa 8051rentzako: ez du kode liburutegi estandarrik eta analisi estatikorako tresnarik erabiltzen uzten, ezta hardwarearen ezaugarriekin loturarik ez duen kodearekin ere. Interpretatzaileak erabiltzen dira askotan maila baxuko bitxikeria hauek ezkutatzeko.
Mikrokontrolagailu batzuk simulagailuak ere eskaintzen dituzte: Microchip-en MPLAB inguruneak adibidez. Garatzaileari programak eta mikrokontrolagailuak nola jokatuko duten ikusteko edo simulatzeko aukera ematen diote. Simulagailuak prozesadorearen egoera eta irteeren balioak erakutsi ditzake, eta sarrerei balio ezberdinak emanez frogak egitea ahalbidetzen du. Alde batetik, simulagailuak mugatuak izaten dira, eta ez dute sistema bateko hardware guztia simulatzeko aukerarik ematen, baina bestetik, exekuzio fisikoan erreproduzitzea oso zailak izan daitezkeen egoera eta baldintzetan sistemak nola funtzionatuko duen ikusi eta arazoak konpontzeko modu azkarrena izan daitezke.
Mikrokontrolagailu berrienek zirkuitu araztaile bat izaten dute txipean bertan JTAG baten bidez atzituta firmwarearen arazketa bat egin ahal izateko.

## Mikrokontrolagailu motak

Mikrokontrolagailu arkitektura eta saltzaile ezberdinak daude. Hauek dira ezagunenetako batzuk:
* Parallax Propeller
* Freescale 68HC11 (8-bit)
* Intel 8051
* Silicon Laboratories Pipelined 8051 Microcontrollers
* ARM prozesadoreak (saltzaile ezberdinenak) ARM7 edo Cortex-M3 nukleoak erabiliz, orokorrean mikrokontrolagailuak izan ohi dira ARM-en MicroSTM32 Prozesadorea. 2011an ARM prozesadoreak munduko telefono mobilen %95ean eta gailu elektronikoen laurdenetan erabiltzen dira
* STMicroelectronics STM8 (8-bit), ST10 (16-bit) eta STM32 (32-bit)
* Atmel AVR (8-bit), AVR32 (32-bit), eta AT91SAM (32-bit)
* Freescale ColdFire (32-bit) eta S08 (8-bit)
* Hitachi H8, Hitachi SuperH (32-bit)
* Hyperstone E1/E2 (32-bit, lehenengo RISC inplementazio oso bat eta DSPa prozesadore baten nukleoan [1996])
* Infineon Microcontroller: 8, 16, 32 Biteko mikrokontrolagailuak automozio eta industri-aplikazioetarako.
* MIPS (32-bit PIC32)
* NEC V850 (32-bit)
* PIC (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24)
* PowerPC ISE
* PSoC (Programmable System-on-Chip)
* Rabbit 2000 (8-bit)
* Texas Instruments Microcontrollers MSP430 (16-bit), C2000 (32-bit), eta Stellaris (32-bit)
* Toshiba TLCS-870 (8-bit/16-bit)
* XMOS XCore XS1 (32-bit)
* Zilog eZ8 (16-bit), eZ80 (8-bit)
eta baita beste asko ere. Mikrokontrolagailuen merkatua zatituta dago oso, saltzaile, teknologia, etab. ezberdin askorekin. Ikus daitekeen bezala, saltzaile askok arkitektura ezberdinak egiten dituzte gainera.

## Etenen latentzia

Helburu orokorreko konputagailuetan ez bezala, sistema txertatuetan erabiltzen diren mikrokontrolagailuetan aginduen eraginkortasuna handitzeko etenen latentzia optimizatzen saiatzen da. Latentzia txikituz eta iragartzen errazagoak eginez lor daiteke hau (benetako denboran lan egin ahal izateko).
Gailu elektroniko batek eten bat sortzen duenean, tarteko emaitzak, hau da, erregistro batzuen balioak, gorde egin behar dira etena eragin duenaren zerbitzu errutina exekutatu aurretik. Eta errutinarekin amaitzean berriz ere berreskuratu behar dira baliook. Gero eta erregistro gehiago, orduan eta gehiago kostako da prozesuak gorde eta leheneratzea, ondorioz latentzia handituz. Testuinguru gordetze/berreskuratze horren latentzia txikitzeko bideetako bat, PUZean bertan erregistro gutxi batzuk jartzea da (ez da desiragarria etenen tratamenduarekin zer ikusirik ez duen prozesamenduaren abiadura dezente jaitsi dezakeelako), edo guztia gordetzeko adina hardware ez jartzea (ez du balio softwareak egin behar badu “eskuz” hardware bidez automatikoki egingo ez dena). Beste teknika batek “itzal erregistroetan” siliziozko ateak jartzea proposatzen du: etenaren softwareak bakarrik erabiliko dituen bikoiztutako erregistroak.
Etenen latentziari eragiten dioten beste faktore batzuk hauek dira:
* PUZ-aren uneko ekintzak bukatzeko behar den ziklo kopurua. Kostu hau txikitze aldera, mikrokontrolagailuek pipeline edo exekuzio-hodi motz bat izan ohi dute (sarri 3 agindu edo gutxiagokoa), idazketa buffer txikiak, eta agindu luzeak berriro hasi daitezkeela edo utzitako puntutik aurrera jarrai daitekeela bermatzen dute. RISC diseinu irizpideek agindu guztiek ziklo kopuru bera izan behar dutela diote, horrela errazagoa izanez jarraipen/berrabiarazketa logika ekiditea.
* Etena gertatzen denean exekutatzen ari den edozein sekzio-kritikoren luzera. Sekzio kritiko bat exekutatzen ari denean, uneko datuak blokeatu egiten dira, eta beraz, etena ezin da exekutatu sekzio-kritikoa bukatzen den arte. Sekzio honen luzerak beraz eragin zuzena du etenaren latentzian.
** Ohikoa da oso sekzio-kritikora sartzerako etenak galaraztea. Hartara, errazagoa da etenaren tratamenduak orokorrean zenbat iraungo duen aurreikustea.
** Beste teknika konplexuago batek, uneko datuak atzitu beharra duten etenak bakarrik galarazten ditu, etenen arteko lehentasunak ezarrita. Teknika hau oso baldintza zurrunak dituzten testuinguruetan bakarrik erabili ohi da.
** Prozesadoreek sekzio kritiko batzuentzat hardware euskarria izan dezakete. Hitz baten barruko bit edo byte bakar baten atzipen zuzena edo atzipen atomikoko beste primitiba mota batzuk (ARMv6 arkitekturan sartu zen LDREX/STREX primitiba adibidez) dira adibideetako batzuk.
* Etenen habiaketa. Mikrokontrolagailu batzuk lehentasun handiagoko etenei lehentasun txikiagoko etenak eteten uzten diete. Software bidez denbora-kritikoa duten etenei lehentasun handiagoa eman eta latentzia kudeatzeko aukera ematen du teknika honek.
* Eten bat beste baten ondotik gertatzen denean, mikrokontrolagailuak gorde/berreskuratu ziklo bat aurreztu dezake.

## Historia

Txip bakarreko lehen mikroprozesadorea Intelen 4 biteko 4004a izan zen, 1971an sortua. Hurrengo urteetan Intelen 8008a eta beste mikroprozesagailu gero eta kapazagoak sortu ziren.
Baina lanerako sistema bat osatu ahal izateko, txip osagarriak behar zituzten guztiek. Sistemak asko garestitzen ziren, eta ezinezkoa zen gailu ezberdinak informatizatzea.
Kontrol aplikazioetarako optimizatutako txip batean eraikitako lehen konputagailu sistema Intel MCS 48 seriea izan zen, 1976ean sortua. RAM eta ROM memoriak zituen txipean bertan. Txip hau bilioi bat konputagailu-teklatutan eta beste hainbat aplikaziotan erabili zen. Garai hartan Inteleko Presidentea zen Luke J. Valenter-ek txip hura enpresaren historiako arrakastatsuena izan zela adierazi zuen, bere saileko produkzioa %25a igoz.
Garai hartako mikrokontrolagailuak bi motatakoak izan ohi ziren: Batzuk EPROM programa-memoria ezabagarria izaten zuten, eta PROM motako memoria zutenak baina dezente garestiagoak izaten ziren. Azken hauek behin bakarrik programa zitezkeen.
1993an EEPROM memorien sarrerak mikrokontrolagailuak elektrikoki ezabatzeko modu azkar eta merkea ekarri zuen. Lehena Microchip-en PIC16x84-a izan zen. Prototipatu azkarra eta In-System programazioa ahalbidetu ziren.
Urte berean, Atmel-ek Flash memoria erabiltzen zuen lehen mikrokontrolagailua atera zuen.
Beste konpainiek azkar jarraitu zituzten pausook, bi memoria mota horiek beraien diseinuetan sartuz.
Kostua ikaragarri jaitsi da denborarekin: 2009an milaka erosiz gero, 8 biteko mikrokontrolagailuak 0.25$ baina gutxiagoan eros zitezkeen eta 32 biteko mikrokontrolagailuak $1 inguruan.

## Mikrokontrolagailuen memoria-txertatu teknologiak

Mikrokontrolagailuen eboluzioan memoria teknologia ezberdinak erabili dira. Mikrokontrolagailu gehienek bi memoria mota izaten dituzte gutxienez: firmwarea gordetzen duen memoria ez-aldakor bat, eta behin-behineko datuentzako irakurri eta idatzi daitekeen memoria.

### Datuak

Lehenengo mikrokontrolagailuetatik gaur arte, 6 transistoreko SRAM da Irakurri/idazteko memoria bezala gehien erabili izan dena, erregistro fitxategian biteko erregistro pare bat gehiago erabiliz. Litekeena da MRAM-ek ordezkatzea 4-10 aldiz dentsitate handiagoa izanik kostu aldetik eraginkorragoa izango delako.
SRAM memoriaz gainera mikrokontrolagailu batzuk barruko EEPROM memoria bat izaten dute datuak gordetzeko. Eta hala ez dutenak (edo nahikoa ez dutenak) sarri kanpoko EEPROM txip batera edo flash memoria txip batera konektatzen dira.

### Firmwarea

Lehen mikrokontrolagailuek ROM erabili ohi zuten firmwarea gordetzeko. Hurrengoek (Freescale -en 68HC11ak eta lehengo PIC-ek kasu) argi ultramorearekin EPROM memoria borratu ahal izateko leiho bat gehitu zuten.
Microchip-en PIC16C84, 1993an sortua, firmwarea gordetzeko EEPROM memoria erabiltzen lehena izan zen. 1993an aurkeztu zuen Atmel-ek ere NOR Flash memoria erabiltzen zuen lehen mikrokontrolagailua.
2002an aurkeztu ziren SONOS flash memorietan firmwarea gordetzen zuten PsoC mikrokontrolagailuak .
Litekeena da MRAM memoria izatea etorkizunean firmwarea biltegiratzeko erabiliko dena.

## Erreferentziak

* ↑ http://books.google.com/books?id=BjNZXwH7HlkC&pg=PA11#v=onepage&q&f=false Embedded systems design
* ↑ https://web.archive.org/web/20110527082226/http://www.atmel.com/dyn/resources/prod_documents/doc2464.pdf Atmel’s Self-Programming Flash Microcontrollers
* ↑ http://www.semico.com/
* ↑ http://www.arm.com/about/company-profile/index.php
* ↑ http://www.infineon.com/cms/en/product/channel.html?channel=ff80808112ab681d0112ab6b2dfc0756

## Ikus, gainera

* Mikroprozesadore

## Kanpo estekak

* Datuak: Q165678
* Multimedia: Microcontrollers / Q165678