# Mikrokontrollers

Divi mikrokontrolleri *ATmega*
**Mikrokontrolieris** (starptautiskā saīsinājumā MCU, µC vai sarunrakstībā uC) ir mazs dators, kas sastāv tikai no vienas vienkristāla mikroshēmas. Mikrokontrolieris satur vienu vai vairākus procesorus, atmiņu un programmējamu ievades/izvades perifēriju. Mikrokontrolierus izmanto automātiski vadītām ierīcēm, piemēram, automobiļu dzinēja vadības sistēmās, elektroniskos medicīnas implantos, tālvadības pultīs, biroja tehnikā, elektroinstrumentos, rotaļlietās un citās t. s. iegultās sistēmās. Samazinoties mikrokontrolleru izmēriem un cenai, kļūst iespējami un ekonomiski izdevīgi digitāli vadīt arvien plašāku ierīču un procesu klāstu. Liela daļa mikrokontrolleru ietver sevī arī analogos komponentus, kuri ļauj vadīt neciparu elektroniskās sistēmas.

Daži mikrokontrolleri izmanto 4 bitu datu vārdus un maza enerģijas patēriņa labad darbojas frekvencēs, zemākās par 4 kHz. Šādu mikrokontrolleru jauda atrodas dažu milivatu vai pat mikrovatu diapazonā. Gaidīšanas režīmā, kad procesora taktētājs un vairums perifērijas ierīču ir izslēgti, bet mikrokontrollers, saglabājot savu funkcionalitāti, tikai gaida kādu notikumu (piemēram, pogas nospiešanu vai citu ārējo signālu), enerģijas patēriņš var būt mērāms tikai nanovatos. Tas ļauj ilgstoši darbināt daudzus mikrokontrollerus no baterijas. Citi mikrokontrolleri, savukārt, spēj kalpot jomās, kurās ir kritiski svarīga ātra datu plūsmas apstrāde. Šādi mikrokontrolleri tiek darbināti ar augstu taktētāja frekvenci gigahercu diapazonā un augstu enerģijas patēriņu.

## Vēsture

Pirmais mikroprocesors bija 4 bitu *Intel 4004*, kas tika izlaists 1971. gadā. Bet šī mikroprocesora darbības nodrošināšanai bija nepieciešamas arī ārējas mikroshēmas. Pirmais mikrokontrollers, t. i. mikroprocesors ar lasāmatmiņu, RAM, procesoru un taktētāju vienā mikroshēmā, bija firmas *Texas Instruments* *TMS 1000*, kuru sāka tirgot 1974. gadā. 1977. gadā *Intel* laida apritē savu pirmo mikrokontrolleru *MCS-48* uz procesora *Intel 8048* bāzes. Turpmākajos gados tika saražoti vairāk kā miljards šo mikrokontrolleru eksemplāru. Tas tika plaši izmantots datoru tastatūrās un daudzās citās ierīcēs.

## Izplatība un ražošanas apjomi

2002. gadā aptuveni 55% no visiem pasaulē pārdotiem procesoriem bija 8 bitu mikrokontrolleri un mikroprocesori. 2006. gadā tika pārdoti vairāk nekā četri miljardi 8 bitu mikrokontrolleru. 2010. gadā mikrokontrolleru tirgus pieauga par 36,5%, bet 2011. gadā par 12%.

Tipiskajās attīstīto valstu mājās ir atrodami tikai četri dažādi universāli mikroprocesori (pārsvarā datoros), un tajā pat laikā ap trīsdesmit dažādiem mikrokontrolleriem. Vidējas klases auto satur apmēram 30 vai vairāk mikrokontrolleru. Tos var atrast arī daudzās sadzīves elektriskās ierīces, piemēram, veļas mazgājamās mašīnās, mikroviļņu krāsnīs, cepeškrāsnīs, fotoaparātos un telefonos.

Vēsturiski mikrokontrolleru tirgū dominēja 8 bitu ierīces. 16 bitu mikrokontrolleri pirmo reizi apsteidza 8 bitu ierīces 2011. gadā. 2017. gadam prognozēts 32 bitu mikrokontrolleru īpatsvars 38%, 16 bitu — 34%, bet 4 un 8 bitu — 28% no pārdoto vienību skaita. 32 bitu modeļiem paredz strauju pieaugumu sakarā ar augošo pieprasījumu pēc augstās precizitātes iegultām sistēmām un savienojamības caur internetu.
2015. gadā 8 bitu mikrokontrollerus varēja nopirkt par 0,3 eiro (pērkot 1000 vienības), bet 16 un 32 bitu — par 0,37 eiro.

## Tipisks aprīkojums

Mikrokontrollers *18F8720* korpusā ar 80 kontaktiem
Mikrokontrolleri parasti satur no dažiem līdz vairākiem desmitiem universālā lietojuma ievades/izvades kontaktu (GPIO). Šo kontaktu funkcija ir programmējama — tie var kalpot gan par izejas, gan par ieejas kontaktiem. Ja tie ir nokonfigurēti kā ieejas, tad tos parasti izmanto sensoru vai citu ārējo signālu saņemšanai. Ja tie ir nokonfigurēti kā izejas, tad tos var izmantot ārējo ierīču vadīšanai, piemēram, lai ieslēgtu gaismas diodes, dzinējus, sildelementus u. tml., vai izvadītu informāciju uz displejiem. Mikrokontrolleru digitālo izeju sprieguma līmenis mēdz būt 5 V vai 3,3 V, ar tendenci vispārējai pāriešanai uz 3,3 V. Ja ārējo ierīču patērējama strāva ir mērāma dažos miliampēros vai desmitos miliampēru, tad tos var pieslēgt tieši pie mikrokontrollera izejām. Lielāku patērējamo strāvu gadījumā tās pieslēdz caur ārējiem elektroniskiem interfeisiem un izmantojot neatkarīgus ārējos barošanas avotus.

Parasti vairākas universālas digitālās ieejas/izejas var nokonfigurēt kā impulsu platuma modulētas izejas (PWM) ārējo ierīču regulēšanai (piemēram, gaismas spilgtums, servodzinēju griešanās ātrums).

Daudzi mikrokontrolleri spēj apstrādāt analogus signālus, piemēram, no temperatūras devējiem. Šīm nolūkam mikrokontrolleri tiek aprīkoti ar analogciparu pārveidotājiem (ADC), kuri ienākošus analogos (strāvas vai sprieguma) signālus pārvērš cipardatios, kurus var apstrādāt procesors. Dažus mikrokontrollerus aprīko arī ar ciparanalogiem pārveidotājiem (DAC), kuri ļauj izvadīt uz izejās kontaktiem analogos strāvas vai sprieguma signālus.

Moderni mikrokontrolleri arvien plašāk tiek aprīkoti ar ārējās komunikācijas interfeisiem. Vispirms tas ir universālās asinhronās komunikācijas modulis (UART), kurš ļauj saņemt un nosūtīt datus pa vienkāršu virknes jeb seriālo līniju. Tam seko dažādi specifiski moduli ciparu sakariem, piemēram, I²C, SPI, USB un Ethernet.
Bez tam daudzi mikrokontrolleri ir aprīkoti ar dažāda tipa taimeriem.
Mikrokontrolleru barošana var notikt no baterijām, caur USB kabeli (5 V) vai no ārējā stabilizēta līdzstrāvas avota (parasti 7...20 V).

## Programmēšana

Mikrokontrollera programmai jābūt mazai un racionālai, lai tā iekļautos nelielajā mikrokontrollera atmiņā un spētu iztikt ar trūcīgiem mikrokontrollera resursiem. Agrīnos mikrokontrollerus programmēja asamblervalodā. Vēlāk tam sāka izmantot augsta līmeņa programmēšanas valodas, pārsvarā C. Šajā gadījumā pirms ielādēšanas mikrokontrollerī programma tiek kompilēta mašīnkodā. Arvien pieaugot mikrokontrolleru resursiem, ir radusies iespēja izpildīt augstās valodas programmu tieši uz mikrokontrollera, ar iepriekš ielādēta interpretatora palīdzību. Sākot no 2014. gada šim nolūkam attīstās *Python* valodas paveids mikrokontrolleriem — *MicroPython*. Līdz ar to mikrokontrolleru programmēšana kļūst pieejama miljoniem amatieru.

## Atsauces