0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaElektronika za začetnike - Programiranje mikrokontrolerjev III (27)

    Elektronika za začetnike – Programiranje mikrokontrolerjev III (27)

    Mikrokontroler je računalnik v malem, saj ima poleg programskega in delovnega pomnilnika ter EEPROMA lahko vgrajeno še celo vrsto internih perifernih »naprav«, s katerimi komunicira interno, rezultate pa uporabi kot spremenljivke v katerem od podprogramov ali pa jih posreduje kot rezultat na svoje izhodne priključke.

     

    Prek svojih vhodov je sposoben brati tudi zunanjo vhodno periferijo, prek izhodov krmiliti izhodno periferijo, v notranjosti pa izvajati logične in računske operacije. Zdaj že vemo, da različna stanja na vhodih prožijo izvajanje različnih programov, njihove končne rešitve pa mikrokontroler »objavi« na svojih izhodih. Poleg internih, vgrajenih perifernih naprav imamo lahko tudi zunanje (eksterne), ki jih mikrokontrolerju dodamo na ploščico tiskanega vezja (TIV) in z njimi potem komunicira prek vhodno/izhodnih priključkov.

    Notranje periferne naprave

    Slike niNabor notranje periferije posameznega mikrokontrolerja je odvisen od tega, za kakšen je namen je bil izdelan. Vedeti je treba tudi to, da ima posamezen mikrokontroler lahko veliko izpeljank, ki se razlikujejo v glavnem le po naboru vgrajene periferije. Kaj vse spada k internim perifernim napravam? Poglejmo na sliko 1 in vse nam bo takoj jasno! Naj omenim le še to, da podobno velja za mikrokontrolerje vseh proizvajalcev, ne le družine AVR proizvajalca Atmel, ki jo obravnavamo v članku.

    Pomnilnik je najpomembnejši del mikrokontrolerja, kamor spadajo FLASH pomnilnik z vpisanim programom, RAM pomnilnik, EEPROM in notranji registri. V FLASH pomnilniku ostanejo podatki (programska koda) zapisani tudi do dvajset let brez baterijske podpore. RAM pomnilnik ob izgubi napajanja sicer izgubi vso vsebino, drugače pa je RAM (random access memory) pomnilnik z možnostjo naključnega branja in med izvajanjem programa hrani spremenljivke, rezultate, ohranja vmesne rezultate med izvajanjem logičnih in računskih operacij v notranjosti mikrokontrolerja in za programski sklad, kamor se pred skokom na podprogram v nekem zaporedju »odložijo« vrednosti vseh pomembnih registrov skupaj z naslovom vrnitve. Ko se v podprogramu izvede ukaz RETURN, se vse odložene vrednosti v obratnem vrstnem redu spet »poberejo« s sklada in vpišejo v registre, iz katerih so bili pobrani. Dokler programiramo v Bascom-AVR imamo srečo, da za vse te »ceremonije« poskrbi program sam, zato vam delovanje sklada omenjam le kot zanimivost.

    Slike niKazalec na trenutno prosto lokacijo na skladu (SP, stack pointer) se poveča, ko na sklad odložimo neko vrednost in zmanjša, kadar jo vzamemo iz njega, za kar samodejno poskrbi vgrajena strojna oprema mikrokontrolerja. Pri uporabi sklada pa velja naslednji zakon: kolikor podatkov smo položili na sklad, jih moramo z njega tudi vzeti, drugače se nam »zruši« – zraste čez vse meje ali se zmanjša pod spodnjo mejo in tako seže v območje spremenljivk, ki jih s tem »povozi«.

    EEPROM je vrsta pomnilnika, ki za ohranitev zapisanih vrednosti ne potrebuje baterijske podpore. Brišemo ga in vanj vpisujemo električno. Število vpisov v EEPROM je omejeno na nekaj tisoč. Notranji funkcijski registri so pomnilne lokacije, kjer ima mikrokontroler zapisane začetne (inicialne) vrednosti osnovnega nabora funkcij za delovanje mikrokontrolerja. Register je 8-bitna pomnilna lokacija, katere vrednost se ob izgubi napajanja ne ohrani, torej se obnaša podobno kot RAM, vendar ob priključitvi dobi tudi neko (vedno enako) privzeto vrednost (initial value), ki vpliva na osnovne lastnosti mikrokontrolerja ob priključitvi napajanja. Vzemimo kot primer le en register (ADMUX, slika 3), njegovo začetno vrednost in pomen posameznih bitov v njem. Označeno je tudi to, ali je register mogoče le brati ali vanj tudi pisati.

    Slike niSlike niOpis in pomen vsakega posameznega bita vseh registrov uporabljenega mikrokontrolerja bomo našli v njegovi dokumentaciji (datasheet, podatkovni listi). Opisani so tudi medsebojni vplivi posameznih bitov različnih registrov, ki lahko omogočijo, onemogočijo ali celo vklopijo ter izklopijo posamezne vgrajene periferne naprave mikrokontrolerja. S tem lahko občutno vplivamo na porabo, kar je zlasti pomembno pri baterijsko napajanih napravah. Notranji delovni registri so pomnilne celice, ki so priročna odlagališča operandov, rezultatov, vmesnih rezultatov, spremenljivk in tako naprej. Vso to notranjo arhitekturo mikrokontrolerja mora programer natančno poznati, če programira v zbirniku, ki je nižji programski jezik. Bascom je višji programski jezik, ki med prevajanjem sam poskrbi za nastavitev posebnih funkcijskih registrov in učinkovito uporabo delovnih registrov in RAM pomnilnika, zato se bomo te teme dotaknili le informativno. Če bi poskusil nižje in višje programske jezike slikovito primerjati s kakšnim bolj otipljivim primerom, bi bilo lahko tudi takole…

    Celotni članek

    Elektronika za začetnike – Programiranje mikrokontrolerjev III (27)

    2012_SE193_43

    www.svet-el.si