Jump to content

Mikrokontrollerid

From Wikiversity

Maailma esimese mikrokontrolleri arendas välja Intel 1976. aastal. Esimesed mudelid olid 8048, 8035, 8748 (MCS-48 seeria kontrollerid). Olgugi, et MCS-48 seeria mikrokontrollerid vahetati välja Intel MCS-51 seeria omadega, on vanema seeria mudelid endiselt kasutusel, kuna nad on hinna poolest odavamad, laialdaselt levinud, kergesti kättesaadavad ning omavad ühebaidilist käsustikku, mis oskab mälu ratsionaalselt kasutada.


Mikrokontroller on arvuti, mahutatuna ühe kiibi peale. Tegemist on integraalskeemiga, mis sisaldab mälu, protsessorit ja sisend-väljundliideseid. Mikrokontroller programmeeritakse täitma mingit kindlat ülesannet nii, et kui funktsionaalsust tahetakse muuta või täiendada, siis tuleb kiibile uus programm peale laadida.

Mikrokontrollerid on välja töötatud perifeeriad, et hõlbustada suhtlemist teiste mikrokontrollerite ja arvutitega, aru saada füüsilistest reaalse maailma protsessidest (näiteks lüliti, lülitus, temperatuuri mõõtmine) ja ise mõjutada ümbritsevat keskkonda (näiteks mootori käitamine, alarmsignaali käivitamine).

Leidub väga palju seadmetes, mida inimesed igapäevaselt kasutavad, näiteks kodutehnika (mikrolaineahi, telekas), mänguasjad, sõiduvahendid (kesktaseme autos on umbes 30 või rohkem mikrokontrollerit) jms. Nende laialdane kasutus on olnud võimalik tänu sellele, et oma programmeritavuse ja laialdase funktsionaalsuse tõttu on seadmetele lihtne lisada uusi omadusi.


Mikrokontrollerid erinevad tavaarvutist järgmiste aspektide poolest:

[edit]
  • Kõik funktsioonid on paigutatud ühe kiibi peale väiksemas ja kompaktsemas mahus.
  • Programmeeritakse kindla ülesande täitmiseks. Funktsionaalsuse muutmiseks tuleb uus tarkvara peale laadida.
  • Väiksem voolutarve. Arendajad tihtipeale rõhuvadki just madalale voolutarbele, mis on mobiilsete seadmete puhul väga oluline.
  • Sihtotstarbelised sisendid ja väljundid.

[1]


Mikrokontrollerid (hobi)robootikas

[edit]
Hobirobootikas levinumad mikrokontrollerid:
[edit]
  • Atmel AVR perekonna mikrokontrollerid

Ühekiibiline mikrokontroller, mille arendas välja Atmel 1996. aastal. Üks esimesi mudeleid. mis kasutas ühekiibilist flash mälu programmi mäluks. AVR'i arhitektuur sai alguse tänu kahele Norra üliõpilasele. Algupärane AVR MCU arendati välja Norras Trondheimis, samas kohas, kus "Atmel Norra" asutajad õpilastena töötasid. Sisemist arhitektuuri arendati omakorda veel edasi, kui tehnoloogia Atmel'ile maha müüdi.
AVR ei ole akronüüm, mida on kinnitanud nii Atmel, kui ka esialgsed loojad.
AVR on modifitseeritud Harvardi arhitektuuriga masin, milles on programm ja andmed eraldi füüsiliste mälusüsteemide peal. Nendel on erinevad aadressi ruumid, kuid nad on võimelised lugema andmeid programmi mälult, kasutades spetsiaalseid juhiseid.

  • Microchip Technology PIC perekonna mikrokontrollerid

PIC on samuti Harvardi arhitektuuriga mikrokontroller, mida hakkas tootma Microchip Technology (pärines PIC 1640'st). Esmajoones arendas seda General Instruments mikroelektroonika osakond. PIC tähendas algselt programmeeritava liidesega kontrollerit ("Programmable Interface Controller").
PIC'id on populaarsed nii tehnika arendajate hulgas kui ka asjaarmastajate seas, kuna nad maksavad vähe, arendustarkvara on kergesti kättesaadav ja rakendusmärkmete kollektsioon on ulatuslik.
Microchip teatas 2008 aasta Veebruaris, et on valmis saanud 6 miljardit PIC protsessorit.

  • ARM tehnoloogial põhinevad mikrokontrollerid

ARM on 32 bittine vähendatud käskude arvuga arvuti (RISC), mille arhitektuuri arendas välja ARM Holdings. Kõige laialdasemalt kasutuses olev 32 bittine ISA. Kuna nende ehitus on suhteliselt lihtne, on ARM i mikrokontrollerid ja mikroprotsessorid leidnud rakendust mitmetes madala voolutarbega seadmetes, mis on teinud need domineerivaks mobiilsetes elektroonikaseadmetes.


Olulisemad füüsilised näitajad:
[edit]
  • protsessori töösagedus - määrab kiibi töökiiruse
  • programmimälu - kui suure mahuga programmi on võimalik kiibile peale laadida
  • andmemälu maht - kui suures mahus andmed on võimalik käsitleda programis
  • sisend-väljundviikude arv ja nende funktsioon - erinevatel väljaviikudel on erinevad võimalused
  • taimerite arv - oluline ajakriteeriumite täitmisel
  • voolutarve - oluline mobiilsetes lahendustes

[2]


Programmeerimine

[edit]

Mikrokontrolleritele kirjutatakse valmis tema tegevuse juhtimiseks programm ja talletatakse programmimällu. Protsessor saab juhised ükshaaval ja tegutseb vastavalt nendele. Juhised tuleb talletada nii, et protsessor neid mõistaks. Seda keelt, millest mikrokontroller aru saab nimetatakse masinakeeleks. Enamus mikrokontrollerid mõistavad kaheksast binaar bittist koosnevaid kogumeid. Mõned juhised vajavad rohkem kui ühte kohta programmimälus. Selleks et käivitada mitmest byte'ist koosnevaid juhiseid, peab protsessor tegema mitmeid päringuid programmi mälule, et täita käsk. Kuna viimane variant on aeganõudvam, siis kasutatakse seda võimalikult vähe.

Protsessorit saab programmeerida, kirjutades ridamisi käske binaarkoodis, mida masin saab otse tõlgendada. See on masinkeeles programmeerimine ning on väga kasulik, kuna kirjutatav programm on väike ja rakendus eeldab, et projekteerija omaks head teadmist mikrokontrollerist. See seab eelduse sellele, et programmeerija saab kasutada spetsiaalseid programmerimis võtteid, et kirjutada võimalikult kompaktne ja tõhus kood.



Ehitus

[edit]


Plokk süsteemid on head, kuna nad annavad põhaliku ülevaate seadmest ning näitavad, kuidas allsüsteemid ühendatud on. Samuti aitab see leida tähtsamaid kontrollerite osasid. Siit on näha, et A\D konverter on ühendatud E pordiga. Selgub, et antud kontrolleril on olemas EEPROM (Electrically Erasable Programmable Read Only Memory), ROM (Read Only Memory) ja RAM (Random Access Memory). Skeem näitab ka seda, et C port on kahesuunaline ja port B on ainult väljund ja palju muud.

Kasutuses on ka Flash EEPROM'id, mille hea omadus on kiirus. 1 baidi programmeerimine võib aega võtta vaid mõnisada mikrosekundit ning mälumaht on suur, mis on eelis EEPROM'iga võrreldes. Negatiivseks omaduseks on aga see, et terve mälu tuleb teha tühjaks enne, kui seda on võimalik programmerida.

ATmega32

[edit]

[3][4]

Nagu kõik teisedki kiibid, on AVR pakendatud mingi standardkesta sisse. Traditsiooniline kest on DIP (nimetatakse ka DIL). DIP on nii-öelda jalgadega kest - kõik kiibi viigud on umbes 5-millimeetriste jalgadena näpuotsasuurusest mustast plastist korpusest välja toodud. DIP kest on mõistlik valik hobirakendustes ja prototüüpide puhul, sest selle jaoks on saada odavad pesad, kust saab mikrokontrolleri läbipõlemise korral lihtsalt kätte ja uuega asendada. Samas on jalad ka DIP kesta miinuseks, sest nende jaoks on vaja trükiplaadile auke puurida.

Palju kompaktsemad on pindliides ehk SMT (nimetatakse ka SMD) kestad, sest neil on jalad mõeldud mitte plaadi läbistamiseks, vaid otse rajale kinnijootmiseks. SMT kestas on kiibid õhukesed umbes mündi suurused neljakandilised mustad korpused, mille jalad on umbes millimeetri pikkused. SMT kestas kiipide jootmisel on vaja täpsemat kätt ja paremaid töövahendeid.


AVR-e on saada nii DIP kui SMT kestades. Viikusid on püütud loogiliselt ning elektriliselt ühtlaselt paigutada. Näiteks on maa ja toiteviigud suurematel kiipidel toodud mitmesse kiibi külge, välise kvartsi viigud on maa viigu lähedal, siinide viigud on numbrilises järjekorras, andmesideliideste viigud on kõrvuti jne. AVR digitaalsed viigud ühilduvad TTL/CMOS standardsete pingenivoodega. 5 V toitepinge juures tähistab pinge 0 kuni 1 V loogilist nulli, mida nimetatakse ja kirjutatakse elektroonikute kõnepruugis ka kui: null, 0, madal, maa, mätas, ground või GND. Sama toitepinge juures tähistab pinge 3 kuni 5,5 V loogilist üht, mille nimetused on: üks, 1, kõrge, high. Selline suur loogiliste väärtuse pingeskaala kehtib sisendite kohta - väljundpinge on ilma koormuseta AVR viikudel vastavalt olekule ikkagi 0 V või toitepinge lähedane. Tehnoloogiast tingituna on ka analoogpinge (ADC kanalid) väärtused lubatud sarnases 0 kuni 5,5 V vahemikus.


Viited

[edit]

  1. Viide allikale
    , Erinevused.

  2. Viide allikale
    , Füüsilised näitajad.

  3. Viide allikale
    , ATmega32.

  4. Viide allikale
    , ATmega32.


Kasutatud kirjandus

[edit]

Raivo Sell, Mikk Leini, Peeter Salong : "Mikrokontrollerid ja praktiline robootika"
http://home.roboticlab.eu/et/microcontrollers
http://en.wikipedia.org/wiki/Intel_MCS-48
http://www.cpu-world.com/Arch/8048.html
http://en.wikipedia.org/wiki/Atmel_AVR
http://en.wikipedia.org/wiki/PIC_microcontroller
http://en.wikipedia.org/wiki/ARM_architecture
http://www.seattlerobotics.org/encoder/sep97/basics.html


Raul Liinev