Sodobni mikrokrmilniki v pedagoškem procesu * Janez POGORELC Izvleček: Prispevek predstavlja sodobni 16-bitni mikrokrmilnik družine Texas Instruments MSP 430. Načrtovan in razvitje demonstracijski panel z množico senzorjev in aktuatorjev, ki so povezani z vmesniki mikrokrmilnika srednje kategorije s 64 priključki. Izvedena je aplikacija merjenja temperature in regulacije v toplotni coni. Namen dela je podpora študentom in učiteljem za področja avtomatike in robotike. Ključne besede: mikrokrmilnik, programski model, vhodno/izhodni vmesniki, ANSI C-jezik, nabor funkcij, ■ 1 Uvod Nenehno naraščajoč trg vgrajenih sistemov narekuje uporabo mikrokrmilnikov v aplikacijah od avtomobilske, vesoljske industrije, širokopotrošne elektronike, laboratorijskih naprav, telekomunikacijskih produktov pa vse do gradnikov procesnega vodenja [1, 2, 3, 4]. V večini od navedenih aplikacij se uporabljajo mikroprocesorski sistemi, zgrajeni na osnovi mikrokrmilnikov, pri čemer velja, da so najprimernejši tisti, ki so majhnih dimenzij, preprosti za integracijo in načrtovanje naprav, imajo nizko porabo ter vsebujejo ustrezno zmogljivo procesno enoto in aplikaciji prikrojeno konfiguracijo vhodno/ izhodnih vmesnikov, torej so kar najugodnejši glede na faktor: stroški - lastnosti. Mag. Janez Pogorelc, univ. dipl. inž., Univerza v Mariboru, Fakulteta za elektrotehniko, računalništvo in informatiko * Pri delu sta sodelovala diplomant visokošolskega strokovnega študijskega programa UM-FERI Niko Otorepec, dipl. inž. el., in absolvent istega študijskega programa Darijan Leskovar. Z ozirom na zelo veliko razširjenost uporabe mikrokrmilnikov (skoraj vsi pomembnejši svetovni proizvajalci mikroprocesorjev imajo v programu tudi mikrokrmilnike v cenovnem razponu nekaj manj od 1 USD do nekaj 10 USD) je smiselno, da jih vključujemo v pedagoški proces na dodiplomskem izobraževanju elektrotehnikov za področje avtomatike, robotike in mehatronike, vendar z večjim poudarkom na uporabnosti in manj na gradnji naprav. V članku opisujemo nekatere izkušnje pri pripravi razvojnega kompleta relativno preprostega in zelo dostopnega 16-bitnega mikrokrmilnika [2, 3, 5]. Pri tem smo si za izhodišče postavili, da naj študent spozna mikrokrmilnik kot element (gradnik) mikroprocesorskega sistema s stališča zgradbe, električnih lastnosti, načina povezovanja z drugimi mikroelektronskimi elementi, zlasti pa kot element s stališča uporabe v avtomatiki, robotiki in meha-troniki (programiranje v zbirnem in/ali C-jeziku, poudarek na vhodno/izhodnih vmesnikih, njihovem povezovanju s senzorji in aktuatorji, celoštevilčna aritmetika, prekinitve, časovne zahteve pri izvajanju opravil v realnem času). V preteklosti je veljalo mnenje [1], da lahko dovolj učinkovito programira- mo v C-jeziku le zmogljivejše 16- in 32-bitne mikrokrmilnike. V zadnjih letih so se na tržišču pojavili tudi komercialni C-prevajalniki, ki učinkovito podpirajo tudi skromnejše 8- in 16-bitne mikrokrmilnike, npr. Texas Instruments MSP430, ki ponuja predstavnike v ohišjih od 14 do 100 priključkov. Odločili smo se za obravnavo 16-bitnega mikrokrmilnika srednjega cenovnega in zmogljivostnega razreda z enočipno izvedbo, s čim preprostejšim programskim modelom in kvalitetnimi ter dostopnimi programskimi orodji. Tudi pri tem so na izbiro vplivale izkušnje in oprema iz raziskovalnega dela ter dostopnost. Pomagalo nam je podjetje Texas Instruments [6], ki nam je v okviru evropskega univerzitetnega programa doniralo nekaj razvojnih kompletov za mikrokrmilnike MSP430 različnih konfiguracij - od 20 do 100 priključkov, vključno z razvojnimi programskimi orodji. V nadaljevanju bosta opisana mikrokrmilniški sistem in demonstracijski predstavitveni panel, ki ga uporabljamo za izvajanje nalog, namenjenih elementarnemu in projektnemu delu v okviru laboratorijskih vaj, seminarjev in praktikumov [5]. Sledil bo opis programske opreme, programskih orodij in pripomočkov s knjižnico osnovnih uporabniških funkcij vhodno/izhodnih vmesnikov. ■ 2 Mikrokrmilniki MSP430 Za demonstracijo zmogljivosti mi-krokrmilnikov smo si izbrali serijo integriranih vezij s 64 priključki: MSP430F149 [6] in MSP430F169 [7]. Na tej osnovi smo izdelali preizkusni predstavitveni panel, s pomočjo katerega testiramo osnovne vhodno/izhodne funkcije in razpoložljiva programska orodja. Na panelu so preko vhodno/izhodnih vmesnikov priključene periferne naprave, kot so LCD-prikazovalnik, tipke, temperaturna komora s senzorjem temperature in grelnikom ter ventilatorjem, kar med drugim omogoča zanimivo in nazorno demonstracijo programske aplikacije za regulacijo temperature. Proizvajalec Texas Instruments je v zgodnjih 90. letih predstavil prvega predstavnika družine MSP 430 (»mixed signal processor«) MSP430x3xx. Mikrokrmilniki te družine imajo integriran LCD-gonilnik in so bili uporabljeni pri zahtevnejših meritvah (izjemno nizka poraba). Družina MSP430x3xx deluje na napetostnem območju od 2,5 do 5,5 V. Prva serija mikrokrmilnikov vsebuje le programski pomnilnik v izvedbi OTP in ROM. Novejša družina MSP430x1xx se pojavi v letu 2000, ko proizvajalec vpelje »Ultra - Low Power Flash« verzijo »FLASH ROM« (mnogokrat programirljivega) pomnilnika z zelo nizko porabo toka. Procesna enota ima zmogljivost 8 MlPS-ov in napajalno napetost nižjo tudi od 1,8 V. Razpon družine MSP430x1xx sega od MSP430C1101 ROM naprav pa do MSP430F16xx (slika 1) z največ integriranimi sklopi (uporabljeni MSP430F169 vsebuje več kot 60 kB FLASH ROM pomnilnika, 12-bitni ADC, 12-bitni DAC, DMA-krmilnik in nad 10 kB pomnilnika RAM). MSP430x4xx je podoben seriji MSP430x1xx, le da vsebuje gonilnik za LCD. Serija 4xx ponuja visoko ločljiv 16-bitni »sigma-delta« A/D RISC CPU 15BII Digilal Peripheral Slika 1. Blokovna zgradba mikrokrmilnikov MSP430x16x programskega modela in kodiranje programov v zbirnem jeziku, ker ima majhno število ukazov z visoko stopnjo ortogo-nalnosti, po drugi strani pa so C-prevajalniki zaradi nabora ukazov skupaj z registrsko strukturo in načini naslavljanja zelo učinkoviti. pretvornik, operacijske ojačevalnike in ostale vgrajene analogne funkcije. MSP430F2xx in MSP430x5xx se razvijajo naprej in nadgrajujejo serijo MSP430x1xx, omogočajo pa med drugim dvakrat večjo zmogljivost in še nižjo porabo. Zaradi izjemno nizke porabe (250 pA/MlPS) so mikrokrmilniki družine MSP430 prirejeni za baterijsko napajanje, zato so zelo primerni za vgrajene sisteme, kot so npr. inteligentni senzorji, prenosni merilniki in naprave široko-potrošne ter zabavne elektronike. Posebno pozornost zahteva tudi moderna 16-bitna procesna enota tipa RlSC, ki ima vsega 27 strojnih ukazov (izvajajo se po en cikel), 7 načinov naslavljanja in 16 namenskih ter splošno uporabnih registrov dolžine 16-bitov. Tako je procesna enota mikrokrmilnikov MSP zelo primerna tudi za obravnavo ■ 3 Razvojna in programska orodja Proizvajalec ponuja razmeroma poceni razvojne komplete MSP-FET430P(U)140 (slika 2), ki vsebujejo [5, 7]: - Vmesnik MSP-FETP430IF FET (Flash Emulation Tool) s paralelnim PC-izhodom (novejši vsebujejo tudi USB) na eni strani Slika 2. Razvojni komplet MSP-FET430Uxx in s 14-polnim komunikacijskim vmesnikom JTAG na drugi strani. Slednji omogoča funkciji programiranja v vezju in razhroščanja (»debugging« - kontroliranega izvajanja programa) mikrokrmil-nika na testni ploščici s pomočjo IDE-programskega orodja na PC-računalniku. - Testno plošiico MSP-TS430PM64 (slika 2), na kateri je vgrajeno 64-polno podnožje za serije integriranih vezij MSP430F13xIPM, xxF14xIPM, xxF15xIPM, xxF16xIPM in xxF161xIPM. Na njej je tudi 14-polni konektor s priključkom JTAG ter rumena LED-dioda (priložena sta elementa MSP430F149 in MSP430F169). - Navodila v pisni obliki za prvo uporabo. - Zgoščenko MSP430 z orodji, navodili, literaturo. Programska orodja obsegajo IDE KickStart paket proizvajalca IAR Systems, ki omogoča v preizkusni različici kreiranje do 4 kB programske kode (www.iar.se). Na zgoščenki so tudi povezave in orodja drugih proizvajalcev razvojnega orodja za mikrokrmilnike MSP430. ■ 4 Demonstracijski predstavitveni panel Demonstracijski predstavitveni panel (slika 3) je zaradi večje nazornosti vstavljen v ohišje iz prozornega pleksistekla, tako da so na njem vidne in dostopne vse komponente z obeh strani. Na predstavitveni panel smo namestili komponente, ki jih lahko uporabimo za demonstracijo nekaterih vhodno/izhodnih modulov in funkcij mikrokrmilnikov MSP430. Elementi na samem panelu so narejeni modularno, tako da se lahko brez težav zamenjujejo [5]. Zamenjujemo lahko ne le mikrokrmilnike z enakim ohišjem, ampak ob predhodni zamenjavi testne ploščice MSP-TS430PMxx izbiramo med praktično vsemi mikrokrmilniki s 14 do 100 priključki. Nameščene so naslednje komponente: 1. osnovna plošča z vstavljeno testno ploščo z mikrokrmilnikom Slika 3. Demonstracijski predstavitveni panel v prozornem ohišju MSP430F169 in LCD-prikazoval-nikom L2432 proizvajalca Seiko; 2. napajalnik, zgrajen s stabilizatorji napetosti z izhodi 3,3 V, 5 V, 12 V; 3. temperaturna komora z ventilatorjem (motor FAN) z digitalnim temperaturnim senzorjem DS1631 proizvajalca Dallas in 5-vatno žarnico kot grelnim telesom; 4. voltmeter za prikaz napetosti iz digitalno/analognega pretvornika; 5. enosmerni motor z bipolarno Hallovo sondo H501 proizvajalca Micronas; 6. analogni temperaturni senzor LM335 proizvajalca National Semiconductor; 7. dva digitalna temperaturna senzorja DS1631 proizvajalca Dallas; 8. analogni temperaturni senzor LM35 proizvajalca National Semiconductor; 9. vmesnik MAX3232C za serijsko komunikacijo (RS-232C) z osebnim računalnikom za izpis na terminal. Osnovno ploščo s testno ploščico MSP430, LCD-prikazovalnikom, tipkami, LED-indikatorji in priključki za periferne naprave prikazuje slika 4. Slika 4. Fotografija osnovne plošče z modulom MSP-TS430PM64 Slika 5. Priključitev LCD- prikazovalnika na mikrokrmilnik Med perifernimi napravami omenimo LCD-prikazovalnik in elemente temperaturne komore. Kot izvor toplote ali grelno telo uporabljamo kar običajno (5 W) žarnico z žarilno nitko. Slika 6. Fotografija temperaturne komore mostat. Temperaturno območje ima od -55 °C do +125 °C, natančnost pa je ±0.5 °C v območju med 0 °C in 70 °C. Temperaturne meritve ne zahtevajo nobenih zunanjih komponent. Izhodno resolucijo nastavimo programsko, in sicer 9, 10, 11 ali 12 bitov. Napajalna napetost je med 2.7 V in 5.5 V. Temperaturo pretvori v digitalno besedo (število) v maksimalno 750 ms. S pomočjo registrov TH in TL lahko programsko nastavimo želeno histerezo. Podatki se berejo/pišejo preko dveh linij SDA in SCL v skladu s protokolom I2C. S pomočjo treh naslovnih priključkov lahko priključimo na vodilo do osem senzorjev. Motor FAN (ventilator) in žarnico krmilimo z vmesnikoma za pulzno širinsko modulacijo (PWM), medtem ko merjenje, zajemanje ter prenos podatkov temperature (DS 1631) poteka po vodilu I2C. ■ 5 Programska oprema Za demonstracijo delovanja predstavitvenega panela [4] je bila razvita programska oprema v jeziku C s pomočjo priloženega IDE-pro-gramskega okolja. Aplikacija obsega osnovni program, katerega algoritem prikazuje diagram poteka (slika Uporabili smo matrični LCD-prikazovalnik L2432 (proizvajalca Seiko) na tekoče kristale, ki je tanek, lahek, ima nizko tokovno porabo ter širok zorni kot gledanja ob visokem kontrastu. Vgrajeni vmesnik (slika 5) omogoča preprost 8-bitni način priključitve na mikrokrmilnik. Format prikaza je 24 znakov v dveh linijah ali skupaj 48 znakov. Znak je sestavljen na matriki 5 x 7, ki se izriše z »barvanjem« segmentov. Vpisovanje znakov teksta poteka kar v obliki znakov ASCII. V temperaturni komori (slika 6) se nahaja ventilator (FAN) s senzorjem za zajemanje vrtljajev (digitalni tahomeri-lnik), ki je sicer namenjen za hlajenje procesorjev v računalnikih, v naši komori pa kot izvor hladnega prezračevalnega zraka. Komora se seveda ne more ohladiti nižje od temperature zunanjega zraka. Slika 7. Temperaturni senzor DS1631S Za preverjanje in meritev temperature smo namestili digitalni temperaturni senzor DS1631S. Vsi ti elementi so vstavljeni v običajno instalacijsko dozo 100 x 100 mm in pokriti s prozornim pleksisteklom. DS 1631 (slika 7) je digitalni termometer, deluje pa lahko tudi kot ter- 8), in nabor funkcij za inicializacijo in za podatkovni dostop do vhodno/izhodnih vmesnikov (vmesnik za priključitev digitalnega temperaturnega senzorja I2C, časovnik WDT, vmesnik ADC, vmesnik PWM, vmesnik DAC, vmesnik UART1, tipke in LCD-prikazovalnik). Slika 8. Diagram poteka glavnega programa Programska oprema je kodirana modularno, tako da se lahko posamez- ne funkcije uporabljajo tudi v drugih aplikacijah. Zanimiv je tudi algori- Slika 9. Diagram poteka funkcije za komunikacijo 254 tem prenosa posameznega znaka med vmesnikom UART1 in terminalskim programom na PC-računal-niku (slika 9). Da bi programerjem čim bolj olajšali delo in jih »izolirali« od registrov vhodno/izhodnih vmesnikov ter »mukotrpnega« nastavljanja posameznih bitov, smo razvili knjižnico (nabor) funkcij za programski jezik C. Zgled programa ilustrira preprost način uporabe definiranih knjižničnih funkcij, pri čemer je potrebno le dodati izvorno vrstico (#in-clude ). Knjižnične funkcije preizkušeno delujejo tako v programskem okolju Texas Instruments Code Composer Essentials (CCE) kot tudi v okolju lAR Systems Embedded Workbench (IAR). Nabor pomembnejših funkcij in kratek opis: int adc (nacin, kanal); // analogno/digitalna pretvorba void dac (napetost, kanal); // digitalno/analogna pretvorba void microsec (us); // programska zakasnitev v ps void milisec (ms); // programska zakasnitev v ms void pwm (frekvenca, sirina, kanal); // pulznoširinski modulator void dco_nastavitev (frekvenca); // programska nastavitev takta oscilatorja ■ 6 Zaključek Obravnava mikrokrmilnikov v učnem procesu dodiplomskega izobraževanja avtomatikov in meha-tronikov je gotovo obsežna tema. Zato se je lotevamo sistematično in modularno [2, 3, 4]. Predstavitveni panel omogoča demonstracijo zanimivih aplikacij, vendar je bistveno, da vsak študent samostojno načrta, skodira in preizkusi določeno število programov. V ta namen je potrebno poznati programski model obravnavanega mikrokrmilnika, vhodne in izhodne vmesnike, periferne naprave, IDE-programska orodja in nenazadnje osnove programiranja v jeziku ANSI C. Navedeno mora nujno potekati v obliki vaj postopno /* Zgled programa za delo z moduli ADC, DAC in PWM, logičnimi vhodi/izhodi ter programskimi zakasnitvami */ #include #include int a,b,c,rezultat=0; void main() { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01;//dioda P1OUT = 0x00; dco_nastavitev(5000); for(;;) { pwm(1000,20,TB3); //sirina pulza 20 % na TB3 pwm(1000,a,TA1); //Sirina pulza se vsakih 10 ms poveca za 1 % milisec(15); microsec(5000); //Zakasnitev skupaj 10 ms a++; if(a==101) a=0; dac(c,1); //na DAC1 pinu dobimo trikotni signal 2 Hz dac(b,0); //na DAC0 pinu dobimo trikotni signal 4 Hz b=b+100; c=c+50; if(b>2500) b=0; if(c>2500) c=0; rezultat=adc(single,A2); if(rezultat>0x0CCC) //Vecje od 2V (Ref=2.5V=0xFFF,2V=0xCCC) P1OUT = 0x01; //Vklop, ce je na A2 napetost vec kot 2V else P1OUT = 0x00; } in sproti s predavanji, saj je le tako mogoče pridobiti veščino programiranja vgrajenega sistema na osnovi mikrokrmilnika. Takšna zasnova učnega kompleta omogoča študentom »učenje z delom«, kar je gotovo najprimernejše. Čeprav imajo navedeni mikrokrmilniki zelo primeren programski model (pre- dvsem preprost nabor ukazov!) tudi za obravnavo na strojnem nivoju (programiranje v zbirnem jeziku), priporočamo uporabo jezika ANSI C, ki je nekakšen standard za vgrajene sisteme. Pri tem je v pomoč dejstvo, da ima podjetje Texas Istruments na voljo kvalitetne in razmeroma dostopne razvojne komplete ter IDE-programska orodja, ki so povsem funkcionalna do 4 kB programske kode in delujejo tudi kot simulator na osebnem računalniku (možnost dela na domačem računalniku tudi brez ciljnega mikrokrmilnika). Podjetje je znano tudi po tem, da na zahtevo pošilja vzorce integriranih vezij (tudi mikrokrmil-nikov) brez posebnih zapletov. Literatura [1] J. M. Sibigtroth: Understanding small microcontrollers, Prentice-Hall, New Jersey, 1993. [2] J. Luecke: Analog and Digital Circuits for Electronic Control System Aplication, Elsevier Science (USA), 2004. [3] C. Nagy: Embedded System Design Using the TI MSP430 series, Elsevier Science (USA), 2003. [4] J. Pogorelc: Mikrokrmilniki v učnem procesu, Elektrotehniška in računalniška konferenca, Portorož 2005. [5] N. Otorepec: Uporaba mikro-krmilnikov Texas instruments družine MSP 430 v avtomatiki, diplomsko delo visokošolskega strokovnega študija, UM-FERI, Maribor 2006. [6] Texas instruments: SLAS386C, Navodila proizvajalca za MSP430F169 (www.ti.com). [7] Texas instruments: SLAS272F, Navodila proizvajalca za MSP430F149 (www.ti.com). Modern Microcontrollers in Education Abstract: An introduction to the modern 16-bit low-power microcontroller family from Texas Instruments MSP430 is presented. A demo board is designed and developed for teaching purposes in which various sensors and actuators interface with 64-pin mid-range microcontroller inputs and outputs. The application of measuring and controlling the temperature in the heating zone is implemented. The aim of the work is to assist students and teachers in the Automation and Robotics Department. Keywords: microcontroller, program model, input/output interface, ANSI C-language, function library, }