31. januarja, 2010

Kratka šola programiranja mikrokontrolerjev

Slike PZBA PZBA 11 - Kratka šola programiranja mikrokontrolerjev

KLIK za povečavo

Priče smo silnemu napredku na vseh področjih tehničnih znanosti. Novodobne tehnične znanosti se imajo temu napredku zahvaliti predvsem razvoju procesorske moči osebnih računalnikov, kar je omogočilo razvoj novih zmogljivih programskih orodij. Elektroniki poznamo veliko programskih orodij, brez katerih si sodobnega dela ne znamo več predstavljati. Podobno velja tudi za moderne elektronske komponente, izmed katerih bi poudaril mikrokontrolerje, ki so v zadnjih 15 letih tudi naredili ogromen korak naprej.

Slike PZBA PZBA 11a - Kratka šola programiranja mikrokontrolerjev

KLIK za povečavo

Ta napredek se vidi na cenovnem predvsem pa na tehničnem področju. Tako danes za nekaj € dobimo izredno zmogljiv ARM mikrokontroler (32-bitni mikrokontroler), ki ima izredno zmogljivo periferijo, kot so analogni/digitalni in digitalno/analogni (A/D in D/A) pretvorniki, Ethernet, CAN ter USB vmesniki, krmilniki za motorje, moduli za realno uro in podobno. Pri tem pa ne zamešajmo izrazov: v PC-ju ne deluje mikrokontroler, pač pa zmogljiv procesor (64-bitni), ki signale po vodilu pošilja na razne enote, kot so video, spominska, krmilnik trdih diskov itd. Razlika med procesorjem in mikrokontrolerjem je v tem, da procesor nima vgrajene periferije.

 

V članku, ki je pred vami, se z ARM mikrokontrolerji ne bomo spoznavali, pač pa smo pripravili osnovne informacije, da bi lahko suvereno začeli programirati mikrokontrolerje družine AVR. Takšen mikrokontroler bo brez težav poganjal motorje, vklapljal ter izklapljal releje, sprejemal signale z različnih senzorjev in tipk, signale obdeloval ter s pomočjo LCD prikazovalnika prikazoval podatke. To poglavje ima več delov, kjer bomo prikazali osnove programiranja mikrokontrolerjev. V zadnjem poglavju boste suvereno znali sprogramirati mikrokontroler in sami nadgrajevati osvojeno znanje. Za tiste, ki vas bo programiranje pritegnilo naj povem, da v AX elektroniki organiziramo vsak mesec osnovni Bascom-AVR tečaj, ki traja nekaj več kot 3 ure in na katerem se naučite osnov, ki jih potem lahko sami nadgrajujete.

Mikrokontrolerji, procesorji in krmilniki

Poskusimo najprej definirati razliko med mikrokontrolerjem, procesorjem in krmilnikom. Izraz krmilnik uporabljamo takrat, kadar govorimo o industrijskih PLC krmilnikih, kot so npr. Simatic in podobno. Krmilnik je torej naprava v svojem ohišju s priključnimi konektorji. Velikokrat je na ohišju tudi nekaj tipk in prikazovalnik. Procesor je izraz za zmogljiv čip, ki se po navadi nahaja v naših PC-jih in ne vsebuje periferije, kot so A/D ali D/A pretvorniki, spomin in podobno. Procesor podatke prejema in jih pošilja preko vodila na ostale enote. Mikrokontroler pa je čip, ki vsebuje šibak procesor in že ima vgrajeno periferijo ter spomin.

AVR mikrokontrolerji so eni izmed popularnih mikrokontrolerjev, ki so dobavljivi že približno 10 let. Ker bom poglavje skušal napisati kar se da razumljivo, naj predstavim mikrokontroler kot “črno škatlo“, ki ima vhodne in izhodne priključke. Mikrokontroler brez programa je mrtev in kot tak res neuporaben. Zaživi le, ko se v njem vpisani program prične izvajati. Jasno pa je, da je za to potrebna tudi napajalna napetost. Mikrokontrolerje dandanes uporabljamo v praktično vsaki napravi, bodisi da je to igrača ali zahteven industrijski PLC krmilnik. V vseh teh napravah je vsaj en mikrokontroler, vemo pa, da v sodobnih avtomobilih deluje več mikrokontrolerjev. Obstaja več vrst mikrokontrolerjev, od 1, 4, 8 pa tja do 32-bitnih. Danes se največ uporabljajo 8 in 32-bitni, redko pa še kakšni drugi. Mikrokontrolerji, o katerih bo govora v seriji člankov so 8-bitni. AVR mikrokontroler vsebuje ALU (arithmetical logical unit) enoto, več vhodno/izhodnih (V/I, v tuji literaturi je uveljavljen izraz I/O – input/output port) vrat ali portov, FLASH spomin in še več enot, o katerih bo govora kasneje. V FLASH spomin s pomočjo programatorja naložimo naš program, ki ga v zaporednih korakih izvaja ALU. V/I porti so večinoma dvosmerni s tem, da moramo s programom definirati ali bo posamezni pin vhodni ali izhodni. Mikrokontroler za svoje delovanje potrebuje napajalno napetost in večinoma tudi kvarčni kristal oziroma keramični resonator, ki ALU-ju daje t.i. taktni signal, s katerim ALU izvaja programsko kodo. V kolikor ALU nima takta se njeno delovanje ustavi in se spet nadaljuje, ko obnovimo taktni signal. V določenih primerih pa tudi kvarčni kristal ali resonator nista potrebna, saj imajo AVR mikrokontrolerji vgrajen t.i. RC oscilator, ki daje takt ALU-ju in s tem omogoča delovanje mikrokontrolerja. Izbor med RC oscilatorjem ali zunanjim kvarčnim kristalom oz. resonatorjem definiramo med postopkom programiranja.

Slike PZBA PZBA 11b - Kratka šola programiranja mikrokontrolerjev

KLIK za povečavo

Kot vidite je v notranjosti mikrokontrolerja veliko blokov, o katerih ne bomo izgubljali besed. Za enkrat naj bo mikrokontroler za nas črna škatla z vhodi in izhodi, ki jo bomo sprogramirali z našim programom. Program v mikrokontrolerju se odvija glede na ukaze t.i. strojne kode, ki ALU-ju določa, kaj bo naredila. Ker ALU deluje z binarno matematiko je ukaz v strojni kodi sestavljen iz ničel in enic – pač v binarni kodi. V začetkih mikrokontrolerjev so programerji za programiranje uporabljali strojno kodo, vendar so kmalu ugotovili, da je to izredno nepraktično. Zato so pričeli uporabljati zbirnik (v tuji literaturi se uporablja izraz assembler), dandanes pa vedno bolj posegamo po višjih programerskih jezikih, kot so C, različne vrste „visual basic“ programov ter basic programov, ki programsko kodo napisano v basic-u prevedejo v strojno kodo. Med basic programe spada tudi programski jezik Bascom, ki se je v Evropi, pa tudi v Sloveniji lepo uveljavil. Avtor se zaveda, da ima Bascom (kot tudi drugi višji programski jeziki) svoje prednosti in slabosti, vendar trdno stojim za stališčem, da je Bascom idealno programsko orodje za začetnike v programiranju, kar bom pokazal v nadaljevanju.

Tags: