Tokrat si bomo ogledali uporabo ukazov iz knjižnice Obuf$SE.sub. Prav tako bomo spoznali osem demo programov, ki ilustrirajo način uporabe in zmogljivosti novih Bascomovih OLED ukazov. Programi so napisani za mikrokontroler ATmega328P v vezavi, ki jo vidimo na sliki 2 (slika je v prejšnjem nadaljevanju), privzeto pa je, da pri tem uporabimo I2C komunikacijski protokol. Lahko jih uporabimo tudi v drugačni vezavi, o čemer bomo govorili malo kasneje.
Izbira mikrokontrolerjev, ki so primerni za izvajanje programov in ki lahko uporabljajo ukaze iz knjižnice Obuf$SE.sub, je omejena s potrebno kapaciteto internega SRAM pomnilnika – 2 kB. 1300 bajtov tega pomnilnika bodo „porabili“ podprogrami, ostalo pa je na voljo programerju, da ga uporabi za druge namene.
Priprava programa za uporabo ukazov iz knjižnice Obuf$SE.sub
Če želimo v svojem Bascom-AVR programu uporabljati ukaze iz knjižnice Obuf$SE.sub, moramo program pripraviti na isti način, kot ga pripravimo za uporabo ukazov iz knjižnice Oled$SE.sub (postopek je opisan v prejšnjem prispevku). Edina razlika je, da moramo zdaj v uvodnem delu programa vključiti knjižnico z drugimi podprogrami, ki se nahajajo v datoteki Obuf$SE.sub:
$include "Obuf$SE.sub"
Ko je to urejeno, lahko v programu uporabljamo OLED ukaze iz obeh knjižnic (knjižnice Oled$SE.sub ni treba posebej navajati). Izhajamo iz izhodišča, da se knjižnici nahajata v isti mapi, v kateri je tudi sam program; v nasprotnem primeru pa je treba navesti pot do obeh map. Da pa bi OLED ukazi res delovali tako, kot je bilo zamišljeno, moramo nastaviti še I2C povezavo med mikrokontrolerjem in OLED prikazovalnikom in jo uskladiti z načinom povezovanja. Ta del programa je prav tako popolnoma enak opisu, ki ga imamo v prejšnjem članku.
Z dodajanjem Obuf$SE.sub knjižnice ste svoj program obogatili z možnostjo uporabe dvanajst novih ukazov, ki so namenjeni delu z OLED prikazovalnikom. Programska koda posameznega ukaza bo postala sestavni del vašega programa šele takrat, ko boste ta ukaz dejansko uporabili. Vendar pa je dobro vedeti, da z vključitvijo Obuf$SE.sub knjižnice svoj program “obremenimo” s pomnilnikom velikosti 1152 B, neodvisno od ukazov, ki jih bomo iz te knjižnice uporabljali (in če jih sploh bomo):
Dim Obuf$(1152) As Byte
Prvih 1024 bajtov predstavlja “vidni” del medpomnilnika (bufferja), ostalo pa uporabljajo določeni ukazi, ki manipulirajo z njegovo vsebino. Skupaj z medpomnilnikom ste v svoj program sprejeli tudi nekaj globalnih spremenljivk:
Dim Obuf$ind As Word
Dim Obuf$$1 As Byte , Obuf$$2 As Byte
Dim Obuf$$12 As Word At Obuf$$1 Overlay
Prvo spremenljivko uporabljajo podprogrami iz knjižnice za naslavljanje vsebine medpomnilnika, ostale pa so namenjene preračunavanju naslovov iz enodimenzionalne matrice (medpomnilnik) v dvodimenzionalno (zaslon OLED prikazovalnika) in obratno. Te spremenljivke uporabljajo ukaze iz knjižnice, lahko pa se jih uporablja tudi iz uporabniškega programa, če je programer dobro seznanjen z načinom naslavljanja OLED (to smo si podrobno ogledali v prvem članku te serije).
Demo programi (knjižnica OBUF$SE)
Uvodni del vseh demo programov je napisan v skladu z doslej napisanimi navodili. Glavni del programa izvaja neko specifično nalogo, v kateri ilustriramo uporabo posameznih ukazov iz Obuf$SE.sub knjižnice. Analizirali bomo le tiste dele programa, ki se nanašajo na uporabo “novih”OLED ukazov. Za popolno razumevanje delovanja programa si bomo morali ogledati celoten program (demo programe lahko brezplačno dobite v uredništvu revije SE.)
Program:Obuf_demo_1.bas
Knjižnica: Obuf$SE.sub
Uporabljeni ukazi: Obuf$clear, Obuf$send, Obuf$send_page, Obuf$send_block
Knjižnica Obuf$SE.sub vsebuje skupino ukazov, s katerimi lahko menjamo vsebino Obuf$ medpomnilnika. Vsebina, ki se nahaja v Obuf$ medpomnilniku, pa bo na zaslonu OLED vidna šele takrat, ko jo prenesemo v njegov RAM pomnilnik. Program demonstrira uporabo ukazov za prenos celotne vsebine medpomnilnika, posamezne strani ali pa samo dela neke strani.
Tiskano vezje Program4 - OLED_Mitrovic4 Celotni članek
Bascom-AVR knjižnica za OLED prikazovalnik (4)
2015_SE236_54