You are on page 1of 152

Bascom AVR za vse

Dopolnjena izdaja!

Gregor MAEK, Vilko SUSTI, Jure MIKELN, Matja SKUBIC, Bojan KOVA Bascom AVR za zaetnike

Uvod | Bascom AVR za zaetnike

Uvod
Jure Mikeln

Uvod v publikacijo
Prie smo silnemu napredku na vseh podrojih tehninih znanosti. Novodobne tehnine znanosti se imajo temu napredku zahvaliti predvsem razvoju procesorske moi osebnih raunalnikov, kar je omogoilo 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. Ta napredek se vidi na cenovnem, predvsem pa na tehninem podroju. Tako danes za nekaj evrov 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 zameajmo izrazov: v PC-ju ne deluje mikrokontroler, pa pa zmogljiv procesor (64-bitni), ki signale po vodilu poilja 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 teaju, ki je pred vami, se z ARM mikrokontrolerji ne bomo spoznavali, pa pa smo pripravili osnovne informacije, ki naj bi jih poznal zaetnik - programer, da bi lahko suvereno zael programirati mikrokontrolerje druine AVR. Taken mikrokontroler bo brez teav poganjal motorje, vklapljal ter izklapljal releje, sprejemal signale z razlinih senzorjev in tipk, signale obdeloval ter s pomojo LCDprikazovalnika prikazoval podatke in sodeloval z drugimi mikrokontrolerji ter tako predstavljal mikrokontrolerski sistem tudi za veje zahteve. Po potrebi bo alarmiral oskrbovalce sistema bodisi zvono, bodisi preko mobilnih telefonov ali radijskih postaj.

AVR mikrokontrolerji
AVR mikrokontrolerji so eni izmed popularnih mikrokontrolerjev, ki so dobavljivi e priblino 10 let. Mikrokontroler si predstavljajmo kot rno katlo, ki ima vhodne in izhodne prikljuke. Mikrokontroler brez programa je mrtev in kot tak res neuporaben. Zaivi le, ko se v njem vpisani program prine izvajati. Jasno pa je, da je za to potrebna tudi napajalna napetost. Mikrokontrolerje dandanes uporabljamo v praktino vsaki napravi, bodisi da je to igraa 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 32bitni, redko pa e kakni 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 pomojo programatorja naloimo na program, ki ga v zaporednih korakih izvaja ALU. V/I porti so veinoma dvosmerni s tem, da moramo s programom definirati ali bo posamezni pin vhodni ali izhodni. Mikrokontroler za svoje delovanje potrebuje napajalno napetost in veinoma tudi kvarni kristal oziroma keramini resonator, ki ALU-ju daje t.i. Bascom AVR za zaetnike | Uvod 3

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 doloenih primerih pa tudi kvarni kristal ali resonator nista potrebna, saj imajo AVR mikrokontrolerji vgrajen t.i. RC oscilator, ki daje takt ALU-ju in s tem omogoa delovanje mikrokontrolerja. Izbor med RC oscilatorjem ali zunanjim kvarnim kristalom oz. resonatorjem definiramo med postopkom programiranja.

Notranja blok shema mikrokontrolerja ATTiny2313 Kot vidite je v notranjosti mikrokontrolerja veliko blokov, o katerih ne bomo izgubljali besed. Zaenkrat naj bo mikrokontroler za nas rna katla z vhodi in izhodi, ki jo bomo sprogramirali z naim programom.

Uvod | Bascom AVR za zaetnike

Program v mikrokontrolerju se odvija glede na ukaze t.i. strojne kode, ki ALU-ju doloa, kaj bo naredila. Ker ALU deluje z binarno matematiko je ukaz v strojni kodi sestavljen iz niel in enic pa v binarni kodi. V zaetkih mikrokontrolerjev so programerji za programiranje uporabljali strojno kodo, vendar so kmalu ugotovili, da je to izredno nepraktino. Zato so prieli uporabljati zbirnik (v tuji literaturi se uporablja izraz assembler), dandanes pa vedno bolj posegamo po vijih programerskih jezikih, kot so C, razline 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. Zavedamo se, da ima Bascom (kot tudi drugi viji programski jeziki) svoje prednosti in slabosti, vendar trdno stojim za staliem, da je Bascom idealno programsko orodje za zaetnike v programiranju, kar bo pokazano v nadaljevanju.

Dovoljeno kopiranje publikacije ali dela le-te v elektronski ali papirni obliki, pri emer prosim navedite tudi vir in avtorje!

Bascom AVR za zaetnike | Uvod

Program Bascom AVR


Jure Mikeln

Predstavitev razvojnega okolja Bascom-AVR


Bascom trenutno obstaja v dveh verzijah: Bascom-AVR in Bascom-8051. Konnica nam nakazuje, za katero vrsto mikrokontrolerjev je namenjen prevajalnik. Mi bomo seveda uporabljali Bascom-AVR, ki si ga lahko brezplano snamete s spletne strani www.mcselec.com. Z navedene spletne strani si snemite DEMO verzijo, ki je popolnoma delujoa verzija z omejitvijo velikosti programske kode, ki jo lahko prevedemo. Kot programerji zaetniki nam bo DEMO verzija popolnoma zadostovala, saj bodo nai programi kratki in ne bodo dosegali omejitve DEMO verzije. Bascom je identien veini programov, ki teejo v MS Oknih (Windows), zato tukaj ne bi izgubljali besed. Ker je Bascom-AVR programsko orodje je prav, da se spoznamo z vrstami tevil - spremenljivk, ki jih lahko uporabljamo v naih programih. Na voljo so nam spremenljivke Bit (1 bit), Byte (8 bitov = 1 byte), Integer (2 byte, vrednost spremenljivke je lahko od -32,768 do +32,767), Word (2 byte, vrednost spremenljivke je lahko od 0 do 65535), Long (4 byte, vrednost spremenljivke je lahko od 2147483648 do 2147483647, Single (32 bitov, vrednost spremenljivke je lahko od 1.5 x 10^45 do 3.4 x 10^38), Double (64 bitov, vrednost spremenljivke je lahko od 5.0 x 10^324 do 1.7 x 10^308) in String (do 264 byte, spremenljivke so tipa byte z dodatnim byte-om vrednosti ni na koncu). Spremenljivke lahko imajo poljubna imena, ki jih ponavadi izberemo tako, da so med programiranjem prepoznavna. Naeloma lahko spremenljivke poimenujmo X1, X2, X3 itd., vendar bomo med programiranjem laje razumeli program, e bomo spremenljivko, ki ponazarja vklop/izklop npr. releja poimenovali Rele. Vsekakor pa ne smemo uporabljati t.i. rezerviranih imen. Teh je preve za ta prispevek, zato si jih le oglejte v Help-u. Nekaj teh imen pa lahko natejem za bolji obutek: OFF, ON, OR, OUT, OUTPUT, LCASE, LCD, LCDAT, LEFT, LEFT, LEN, LINE in podobno.

Program Bascom AVR | Bascom AVR za zaetnike

Shema vezave mikrokontrolerja

Preden bomo zaeli s programiranjem, se podrobno spoznajmo e z izrazi bit in byte. Oba izraza smo sreali e v osnovni oli v predmetu matematika, kjer smo spoznavali binarni tevilski sistem, ki ima samo dve tevili: 0 in 1. Spremenljivka vrste bit ima tudi dve vrednosti 0 ali 1. Medtem ko ima tevilo vrste byte vrednosti med 0 do 255 (binarno: 00000000 do 11111111).

Zdaj ko smo spoznali nekaj osnov pa lahko e prinemo s programiranjem. Za zaetek si zapomnimo enega najpogostejih ukazov: Do Loop. Ta ukaz pomeni, da se program, ki je napisan med Do in Loop teoretino odvija v neskonnost. Prine se pri Do, ko pa med izvajanjem od ukaza do ukaza pride do Loop se vrne na Do in tako naprej dokler ne izklopimo napajalne napetosti. Morda se bo komu to zdelo nelogino, vendar vam bom pokazal, da se veina programov odvija v Do Loop zanki, izjemno redki programski primeri so narejeni brez Do Loop zanke.

Bascom AVR za zaetnike | Program Bascom AVR

Prvi program
Prvi program bo izjemno enostaven. Na mikrokontroler bomo prikljuili LED-ice (enostavno povedano so to polprevodnike luke, ki se v primerjavi z lukami z areo nitko izjemno malo grejejo in so tudi fizino majhne), ki jih bomo z ustreznim programom vklapljali in izklapljali. LED-ice so zelo primerne za krmiljenje z mikrokontrolerjem saj za normalno svetilnost potrebujejo le nekaj voltov napetosti in nekaj mA toka, kar mikrokontroler, ki ga bomo obravnavali, z lahkoto zagotovi. Pozorni bralci bodo na shemi poleg mikrokontrolerja in LED-ic opazili tudi upore in resonator. Upor R1 slui za ustrezno resetiranje mikrokontrolerja, resonator slui generiranju takta, ki ga za svoje delovanje potrebuje ALU, ostali upori sluijo omejitvi toka, ki tee skozi LED-ice. Vezju je e dodan konektor za programiranje mikrokontrolerja in s tem je osnovni opis vezja zakljuen. Prvi primer programa, s katerim bomo vklapljali in izklapljali LEDice bo izgledal takole:
Dim Ledica As Bit Do Config Portd = Output Portd.0 = Ledica Ledica = Not Ledica Wait 1 Loop

V tem programu smo najprej definirali vrsto spremenljivke, ki jo bomo uporabili. Ker vklapljamo oziroma izklapljamo samo eno LEDico, je dovolj, da imamo spremenljivko vrste Bit. Sledi Do-Loop zanka, v kateri ni skoraj ni programa. Najprej je potrebno definirati ali je doloen port vhodni ali izhodni. V naem primeru je izhodni, zato smo ga tako tudi definirali. Nadalje smo definirali na katerem V/I portu se nahaja ta LEDica. V principu lahko LEDico prikljuimo na kateri koli prosti port mikrokontrolerja in to definiramo v programu kar je s stalia izdelave vezja zelo praktino. Pri zahtevnejih projektih je namre teje narediti enostavno tiskano vezje, kot pa spremeniti program. Sledi ukaz
Ledica = Not Ledica in Wait 1

Ta stavek negira vrednost spremenljivke Ledica: e je bila predhodno 1, bo zdaj 0 in obratno. Ukaz
Wait 1

je trivialen in pomeni, da mikrokontroler na tem mestu v programu poaka 1 sekundo. Enostaven program bo povzroil, da bo LEDica utripala v 1 sekundnem taktu.

Program Bascom AVR | Bascom AVR za zaetnike

Simulator v Bascom-u
V tem delu seminarja vam bomo prikazali uporabo Simulatorja v Bascomu. Bascom ima vgrajen softverski simulator, ki nam pomaga pri razhroevanju programa. Simulator je zgolj enostaven pripomoek in ne 100% zanesljivo orodje, saj v simulatorju ne moremo dobro simulirati prekinitev, asovnih zank in drugih zahtevnejih operacij. V simulatorju bomo lahko spremljali potek programa, vpisovali vrednosti spremenljivk med izvajanjem simulatorja ter na podlagi tega spremljali odziv na LCD simulatorju kot tudi na LEDicah. Simulator je razdeljen na ve oken. V glavnem oknu vidimo na program oziroma le del programa, saj za celoten program ni dovolj prostora v oknu. Nadalje vidimo okno, kjer so zavihki Variable, Locals, Watch, uP, Interrupts. Nadalje je tukaj e okno Interrupts in okno z zavihkoma UART0/UART1. Od teh oken bomo najbolj pogosto uporabljali okno s programom, okno z zavihki Variable ter okno z UART zavihkoma. V prvem oknu bomo spremljali potek izvajanja programa. Izvajanje programa lahko sproimo na dva naina: tekoe ali po korakih. e izberemo tekoe izvajanje progama bomo izredno teko spremljali, kaj se dogaja s programom, saj se bo program odvijal zelo hitro in tako bo spremljanje praktino nemogoe. Zato ponavadi izberemo izvajanje po korakih (F8). Vsaki ko pritisnemo tipko F8 se bo kazalec pri vrstici programa premaknil za eno vrstico naprej in izvedel napisan ukaz. e elimo v tem trenutku spremeniti vrednost doloene sprejemljivke kliknemo v okno Variables in rono vpiemo ime sprejemljivke oziroma jo izberemo iz padajoega menija. Potrdimo z Enter in v oknu Value vpiemo vrednost spremenljivke ter potrdimo z Enter. Nato lahko spet izvajamo program v simulatorju po korakih. V kolikor pa se izkae, da je izvajanje programa dolgo, lahko izberemo tekoe izvajanje programa. V tem primeru si v oknu s programom oznaimo t.i. Break toke, kjer se izvajanje simulatorja ustavi. break toke postavimo tako, da z desnim gumbom mike kliknemo pri odseku programa, kjer elimo imeti Break toko in kliknemo Toggle Break point. Na isti nain Break toko tudi odstranimo.

Bascom AVR za zaetnike | Program Bascom AVR

Simulator in UART Simulator lahko s pridom uporabljamo pri simulaciji RS232 komunikacije. Za ta namen je pripravljeno okno UART, v katerem se bo izpisovala vsebina (podatki), ki bi se sicer izpisovali na terminalu. V okno UART lahko tudi vnesemo spremenljivke, ki jih sprejemamo po UART-u recimo iz tipkovnice.

Simulator in LCD/LED Simulator lahko prikazuje izpis na LCD-ju oziroma na LEDicah. Kliknemo na ikono LCD in odprlo se bo okno, kot ga vidimo na sliki:

Okno LCD in LED simulatorja Simulator bo stanje na LEDicah izpisoval tako, da logina 1 vklopi LEDico. Ker vemo, da to ne ustreza realnim mikrokontrolerjem je spodaj levo okno, kjer odkljukamo Invert in s tem prepreimo to obnaanje simulatorja.

10

Program Bascom AVR | Bascom AVR za zaetnike

Programiranje AVR mikrokontrolerjev


Jure Mikeln

Opis MiniPin razvojnega orodja in programiranje


MiniPin razvojno orodje ni ni drugega kot ploica tiskanega vezja, na katerem so e prispajkani doloeni elektronski elementi, ki jih programer, ko programira mikrokontroler, s pridom uporablja. MiniPin lahko uporabimo tako za 20 kot tudi 40-pin mikrokontrolerje druine 8051 in AVR. Ker v naem nadaljevanju tee beseda o programiranju AVR-jev, se bomo osredotoili na AVR-je. Nadalje je na MiniPin e predviden prostor za kvarni kristal oziroma 3-pin keramini resonator, ki ga lahko uporabimo namesto kvarnega kristala. Na vezju najdemo 4x8 LEDic (ki so vezane tako, kot je prikazano na Sliki 2), 4 tipke + 1 reset tipko, prikljuke za LED in LCD prikazovalnike, 1Wire elemente, I2C spominske elemente, RS232, RS485 ter integriran regulator napetosti, s katerim napajalno napetost mikrokontrolerja nastavimo na 5V ali na vedno bolj popularnih 3,3V. MiniPin ima tudi ve raziritvenih konektorjev, ki jih bomo spoznali sproti. Fotografija MiniPin z oznaenimi elementi

MiniPin napajamo z enosmerno ali izmenino napetostjo od 9-15V. V vezje vtaknemo mikrokontroler ATTiny2313-20PU na mesto IC6, na mesto U1 vtaknemo 12 MHz kvarc ali resonator, stikalo S3 preklopimo v poloaj AVR in e smo pripravljeni, da poveemo MiniPin s programatorjem in sprogramiramo mikrokontroler. Bascom AVR za zaetnike | Programiranje AVR mikrokontrolerjev 11

Za programator lahko uporabimo Proggy programator ali pa si sami naredimo programator po nartu, ki ga vidite na sliki 4.

Shema Sample programatorja

Tako Proggy kot Sample programator poveemo na MiniPin na konektor K6. V Bascomu je potrebno nastaviti (Options/Programmer) izbrani programator, kot vidite na sliki 5.

12

Programiranje AVR mikrokontrolerjev | Bascom AVR za zaetnike

Nastavitev programatorja

V nastavitvah LPT-address morate nastaviti ustrezen naslov, ki ga najdete v BIOS nastavitvah. V koliko boste uporabljali Proggy svetujem, da najprej naloite program AVR Studio, kjer boste nastavili Tools/ProgramAVR/Connect in nastavili program, kot kae spodnja slika:

Bascom AVR za zaetnike | Programiranje AVR mikrokontrolerjev

13

e se bo Proggy uspeno povezal s PC-jem, se bo odprlo naslednje okno:

Proggy je pripravljen za programiranje v AVR Studiu

Zdaj smo pa e res pri koncu nastavitev strojne in programske opreme. Program, ki smo ga napisali v Bascom-u prevedemo (Compile ali tipka F7) in v primeru, da uporabljamo Sample programator kliknemo ikono Program Chip ali pritisnemo F4. e pa uporabljamo Proggy v AVR Studiu pritisnemo tipko ... in izberemo datoteko s konnico HEX.+ Podobno doseemo, e v Bascomu namesto Sample programatorja nastavimo STK500 in v oknu SKT500EXE izberemo, kje se nahaja exe datoteka za STK500 program. Pred tem e odstranimo kljukice pri Auto Program in Auto Verify ter postavimo kljukico na Upload Code and Data.

14

Programiranje AVR mikrokontrolerjev | Bascom AVR za zaetnike

Ne glede na uporabljeni programator nastavimo mikrokontroler, ki ga programiramo (ATTiny2313) in kliknemo Program. S tem smo sprogramirali mikrokontroler! Preden gremo na samo programiranje in Bascom se e malce ustavimo na t.i. Fuse in Lock bitih, ki znajo pri zaetnikih povzroiti kar nekaj teav. Fuse in Lock biti so posebni recimo temu konfiguracijski biti, ki (na alost) niso nastavljivi iz programske kode pa pa jih nastavljamo ob postopku programiranja.

Bascom AVR za zaetnike | Programiranje AVR mikrokontrolerjev

15

Fuse in Lock biti


Jure Mikeln

Iz Bascom-AVR programa ni mono nastavljati tako imenovane Fuse in Lock bitov. Zato za ta namen uporabimo AVR Studio. Tipini izgled okna, kjer nastavljamo Fuse bite vidimo na sliki:

16

Fuse in Lock biti | Bascom AVR za zaetnike

Ko odpremo AVR Studio kliknemo na zavihek Fuses. V tem oknu lahko nastavljamo sledee: Bootloader (BOOTSZ in BOOTRST) Onemogoanje reset-a (RSTDISBL) Omogoanje debugWIRE (DWEN) Omogoanje Watch Dog timerja (WDTON) Prepreitev brisanja EEPROM-a med programiranjem mikrokontrolerja (EESAVE) Vklop Brown-out detektorja in nastavitev BOD napetosti (BODLEVEL) Deljenje internega oscilatorja z 8 (CKDIV8) Omogoanje Clock signala (CKOUT) Izbira vira takta (SUT_CKSEL)

Najvekrat uporabljamo zadnji Fuse bit, kjer spreminjamo vir taktne ure za mikrokontroler. Izbiramo lahko med velikim tevilom monih virov takta. Pri izbiri moramo biti IZJEMNO previdni, da mikrokontrolerja po nesrei ne sprogramiramo na zunanji takt ali zunanji RC oscilator. V tem primeru je za normalno delovanje potrebno pripeljati takt iz zunanjega oscilatorja oziroma na mikrokontroler vezati R in C ustreznih vrednosti. Ve o tem si preberite v Data Sheet-u AVR-jev.

Bascom AVR za zaetnike | Fuse in Lock biti

17

Izbor razlinih taktnih virov za mikrokontroler.

Lock biti so namenjeni zaklepanju mikrokontrolerja pred nepooblaenim branjem programa iz mikrokontrolerja tako preko Boot loaderja kot tudi preko paralelno/serijskega naina branja. Po navadi uporabimo LB bit, kjer izberemo monost: Further programming and verification disabled.

18

Fuse in Lock biti | Bascom AVR za zaetnike

Bascom AVR za zaetnike | Fuse in Lock biti

19

Priklop periferije na mikrokontroler


Jure Mikeln, Gregor Maek

Vezava tipke

Tipko lahko veemo v t.i. pull-up vezavi (ko je tipka pritisnjena, je sklenjena proti masi, sicer pa preko 10k pull up upora proti VCC vhod ima pri pritisnjeni tipki vrednost 0) ali pull-down vezavi (ko je tipka pritisnjena, je sklenjena proti VCC, sicer pa preko 10k pull down upora proti masi vhod ima pri pritisnjeni tipki vrednost 1). Omenjeni upori so namenjeni definiranju stanja spuene tipke, saj se sicer lahko zgodi, da vhod zaplava in menja stanja brez, da bi bilo karkoli pritisnjeno. Na zgornji sliki je narisana pull up vezava (R1 na sliki je na primer tak pull up upor).

*Opomba: Na sliki je prikazan procesor z druine 8051. Priklop na druino AVR je enak.

20

Priklop periferije na mikrokontroler | Bascom AVR za zaetnike

Vezava LED diode

Tudi LED diodo lahko veemo proti masi ali proti VCC (kot na zgornji sliki); v slednjem sluaju bo LED prigana, ko bo izhod na logini 0, ugasnjena pa, ko bo izhod na logini 1. e pa veemo LED med izhod in maso, pa je LED prigana, ko je izhod na logini 1, ugasnjena pa, ko je izhod na logini 0. AVR druina mikrokontrolerjev je sposobna na izhodu direktno poganjati najve 20mA toka, ne glede na to ali veemo breme proti masi ali proti VCC. Kontrolerji prejnje, 8051 druine, pa so lahko taken tok zagotovili le pri vezavi bremena proti VCC, ne pa tudi proti masi. V vsakem primeru moramo zaporedno z LED diodo vezati upor, s katerim omejimo tok skozi diodo, saj lahko v nasprotnem primeru uniimo kontroler in/ali LED diodo.

*Opomba: Na sliki je prikazan procesor z druine 8051. Priklop na druino AVR je enak.

Bascom AVR za zaetnike | Priklop periferije na mikrokontroler

21

Vezava PFET in NFET tranzistorja


Mikrokontroler ima preibke izhode za krmiljenje monejih porabnikov - Rt (npr. relejev, arnic itd.), zato moramo njihov izhod ojaiti. To ponavadi naredimo s tranzistorjem, v zadnjem asu so popularni FET tranzistorji, zato bomo prikazali vezavo FET-ov. Pri programiranju bodimo pozorni: NFET vklapljamo z logino 1, PFET pa z logino 0. *Opomba: Na sliki je prikazan procesor z druine 8051. Priklop na druino AVR je enak.

22

Priklop periferije na mikrokontroler | Bascom AVR za zaetnike

Vezava LDC prikazovalnika


V tem seminarju bomo predstavili uporabo 2x16 LCD prikazovalnika, ki je nekako najbolj razirjen. Vsi tekstovni zasloni, ne glede na velikost, se priklapljajo enako, potrebno pa je preveriti v dokumentaciji posameznega zaslona, kje imajo pine za krmiljenje, saj razpored ni povsem standarden (predvsem kje je pin 1, pini v nadaljevanju so navadno po standardnem razporedu). e ima zaslon za priklop 16 pinov, sta pina 15 in 16 navadno uporabljena za priklop osvetlitve zaslona. Navadno tekstovni LCD uporabljamo v t.i. 4 bitnem nainu, kjer imamo med kontrolerjem in zaslonom 6 linij: 4 data linije, enable in reset. Obstaja pa tudi 8 bitni nain naslavljanja, kjer imamo 8 data linij ter enable in reset (torej skupno 10 linij).

*Opomba: Na sliki je prikazan procesor z druine 8051. Priklop na druino AVR je enak.

Bascom AVR za zaetnike | Priklop periferije na mikrokontroler

23

Krmiljenje DC motorja

DC motor lahko krmilimo zgolj preko tranzistorja (vklop/izklop), e pa elimo nadzorovati tudi smer vrtenja pa ga najlaje krmilimo preko namenskega vezja L272M. Omenjeno integrirno vezje omogoa krmiljenje izhoda z maksimalnim tokom 1A, pred preobremenitvijo pa je zaiten tudi s posebnim vezjem, ki izklopi izhod, e se vezje pregreje.

*Opomba: Na sliki je prikazan procesor z druine 8051. Priklop na druino AVR je enak.

24

Priklop periferije na mikrokontroler | Bascom AVR za zaetnike

Uporaba izhodov
Gregor Maek
Mikrokontrolerji imajo razlino tevilo vhodov in izhodov. Navadno je v portu, ki ga oznaujemo s rko, 8 vhodov/izhodov (lahko tudi manj). Tako imamo, na primer, v portu A pine 0 do 7, ki jih potemtakem deklariramo kot PA.0, PA.1 ... PA.7. Posamezen pin ima lahko zgolj funkcijo loginega vhoda ali izhoda (0/1), lahko pa taisti pin omogoa e druge funkcije. Dodatne funkcije pinov vidimo v datasheetu posameznega mikroprocesorja tu si kot primer oglejmo pinout Mega128:

Za informacije o dodatnih funkcijah posameznih pinov imamo v datasheetu vsak register posebej detajlno opisan. Ko piemo program, moramo najprej konfigurirati posamezne porte/pine tako, da prevajalnik ve, ali bomo posamezni pin/port uporabili kot vhod ali kot izhod. Izhode konfiguriramo z ukazom CONFIG:

Bascom AVR za zaetnike | Uporaba izhodov

25

Config Porta = Output Config Portb.0 = Output Config Portb.1 = Output

'Lahko nastavimo cel register kot output 'Lahko pa tudi zgolj posamezni pin iz registra

Z ukazom SET postavimo izhod na 1 (izhod na logini 1; +5V), z RESET pa na 0 (izhod na logini 0 GND). Naredimo enostavno zanko, kjer bo LED dioda na portu A.0 utripala:
Do Set Porta.0 Wait 1 Reset Porta.0 Wait 1 Loop 'Zaetek zanke 'Vklopim LED 'Poakam sekundo (ukaz wait; lahko tudi waitms ali waitus, max. vrednost pri posameznem ukazu je 255!) 'Izklopim LED 'Poakam sekundo 'Se vrnem na zaetek zanke

Direktno naslavljanje
V doloenih primerih je nastavljanje porta po posameznih pinih zamudno. In tudi nepotrebno... Uporabimo lahko namre ukaz za direktno naslavljanje &B:

Do Porta = Wait Porta = Wait Loop &B00000000 1 &B11111111 1 'Biti od 0-7 v portu A so izklopljeni 'Biti od 0-7 v portu A so vklopljeni

Sedaj lahko naredimo enostavni light-show s poljubnim zaporedjem utripanja in poljubno hitrostjo, na primer:
Do Porta = &B01010101 Waitms 250 Waitms 250 Porta = &B10101010 Waitms 250 Waitms 250 Loop 'Maksimalna vrednost za wait/waitms-/waitus je 255 'zato za as 500ms uporabimo 2 ukaza waitms 250

26

Uporaba izhodov | Bascom AVR za zaetnike

Uporaba vhodov
Gregor Maek
Najprej moramo v programu konfigurirati posamezne porte/pine tako, da prevajalnik ve, ali bomo posamezni pin/port uporabili kot vhod ali kot izhod. Vhode tako kot izhode konfiguriramo z ukazom CONFIG:
Config Porta = Input Config Portb.0 = Input 'Lahko nastavimo cel port kot output 'Lahko pa tudi zgolj posamezni pin iz porta

Da bomo lahko gledali spremembe, potrebujemo tudi kaken izhod...


Config Portc.0 = Output

Branje vhoda z ukazom IF-Then


Najenostavneje beremo stanje vhoda z IF stavkom. Naredimo program, ki prige LED na pinu C.0, e pritisnemo tipko na pinu B.0
Do If Pinb.0 = 1 Then Set Portc.0 Else Reset Portc.0 End If Loop 'Pogojni stavek: e je pin B.0 na stanju 1 (+5V - tipka stisnjena), potem ... 'prigem LED diodo na C.0 ... '... sicer ... 'ugasnem LED diodo na C.0 'Konec pogojnega stavka

Slabost omenjene reitve je, da tipka lahko pri pritisku/spustu odskakuje in v aplikacijah, kjer tejemo tevilo pritiskov itd. lahko dobimo napaen rezultat. Problem lahko reimo tako, da po prvem prebiranju tipke poakamo nekaj asa in nato e enkrat preverimo stanje tipke in ele e obe stanji sovpadata, izvrimo dejanje.
Do If Pinb.0 = 1 Then Waitms 50 If Pinb.0 = 1 Then . . . End If End If Loop 'malo poakamo 'ponovno preverimo stanje in e je tipka e vedno pritisnjena... 'naredimo eljeno operacijo

Bascom AVR za zaetnike | Uporaba vhodov

27

Branje vhoda z ukazom DEBOUNCE


Bascom pa omogoa taisto zadevo e enostavneje, s posebnim ukazom "debounce" ta ukaz ob pritisku tipke samodejno poaka prednastavljeno asovno periodo, nato stanje tipke preveri e enkrat in vkolikor ugotovi, da je tipka dejansko pritisnjena, skoi na nastavljeni kazalec oz. v podprogram (e je dodan e SUB parameter):
Config portb.0 = input Config portc.0 = output Config Debounce = 40 'Port b.0 konfiguriramo kot vhod 'Port c.0 konfiguriramo kot izhod 'Najprej konfiguriramo as, po katerem je pritisk tipke veljeven; v tem primeru 40ms

Main: 'Kazalec glavne zanke Do 'Zanka za preverjanje pritisnjene tipke Debounce Pinb.0 , 1 , Program 'Sintaksa: pin, stanje za aktiviranje, 'podprogram, kamor naj skoim ob 'izvrenem pogoju Loop Program: Set Portc.0 Wait 1 Reset Portc.0 Goto Main 'Podprogram, kamor skoim ob pritisku na tipko 'Prigem in ugasnem LED na C.0 'Vrnem se nazaj v glavno zanko

V programih se GOTO ukaza skuamo izogibati, saj potek programa z ve GOTO ukazi postane zelo nepregleden; raji uporabimo skok podprogram, iz katerega se z ukazom RETURN vrnemo tja, s kjer smo skoili:
Config portb.0 = input Config portc.0 = output Config Debounce = 40 Do 'Port b.0 konfiguriramo kot vhod 'Port c.0 konfiguriramo kot izhod 'Najprej konfiguriramo as, po katerem je pritisk tipke veljeven; v tem primeru 40ms

'Zanka za preverjanje pritisnjene tipke Debounce Pinb.0 , 1 , Program , Sub Loop Program: Set Portc.0 Wait 1 Reset Portc.0 Return 'Podprogram, kamor skoim ob pritisku na tipko 'Prigem in ugasnem LED na C.0 'Vrnem se nazaj v glavno zanko

28

Uporaba vhodov | Bascom AVR za zaetnike

Uporaba tekstovnega LCD zaslona


Gregor Maek

Konfiguracija zaslona
Zaslon moramo najprej konfigurirati - Bascomu povedati, katere pine uporabljati. To storimo v Options - Compiler LCD. Navadno moramo nastaviti le tip - velikost LCDja ter katere prikljuke uporabljamo. Ostale nastavitve pustimo takne, kot so. V samem zaetku programa zaslon "pobriemo" z ukazom CLS in izklopimo kurzor (e ga ne rabimo):
Cls Cursor Off 'Pobriemo zaslon 'Izklopimo prikaz kurzorja

Sedaj lahko na zaslon izpiemo enostaven tekst. To storimo z ukazom LCD

Izpis na zaslon ukaz LCD


Lcd "Testiranje"

e sedaj poljemo e en tekst, se zane pisati tam, kjer se je pisanje prvega nehalo:
Lcd "Nadaljujem"

Tega navadno ne elimo. Zato lahko, e elimo izpisati nov zaslon, le-tega najprej pobriemo in nato zapiemo
Cls Lcd "Nadaljujem 2"

Bascom AVR za zaetnike | Uporaba tekstovnega LCD zaslona

29

Pozicioniranje teksta na zaslon ukaz LOCATE


ali pa povemo, na kateri poziciji zaslona elimo pisati z ukazom LOCATE Y , X. e elimo npr. izpisati tekst "test" na 3. polju v 2. vrstici, to storimo tako:
Cls Locate 2 , 3 Lcd "test"

Lahko uporabljamo tudi ukaze LOWERLINE, THIRDLINE in FOURTHLINE, s katerimi se pomaknemo v izbrano vrstico - npr.
Cls Lcd "1. vrstica" Lowerline Lcd "2. vrstica"

Seveda lahko uporabimo prej omenjene ukaze glede na velikost LCD zaslona, ki ga uporabljamo (ne moremo npr. uporabljati ukaza THIRDLINE pri dvovrstinem zaslonu). V samih programih se nam dostikrat pojavi problem, ker se doloen tekst na zaslonu ne izpie. Najpogosteje je vzrok temu program, ki tee v zanki in v kateri imamo tudi ukaz CLS, ki zaslon izbrie. Ker zanka tee zelo hitro, izpisanega teksta ne vidimo, saj je prej izbrisan. Pri vsakem brisanju zaslona (CLS) zaslon tudi utripne, zato se ukaza CLS v zanki poskusimo imbolj izogibati in raje tekste in spremenljivke zgolj prepisujmo (uporabimo tudi ukaz LOCATE). Sedaj smo prikazovali statino vsebino - v narekovajih. Pri prikazu spremenljivk je zadeva podobna, le da spremenljivko ne napiemo v "narekovaje"
Dim A As Byte A = 0 Cls Do Incr A Locate 1 , 1 Lcd A Wait 1 Loop Until A = 30 'poveam A za 1 (isto kot bi napisal A = A + 1)

30

Uporaba tekstovnega LCD zaslona | Bascom AVR za zaetnike

Premik teksta po zaslonu v levo ali desno ukaz SHIFTLCD


Z ukazoma SHIFTLCD lahko vsebino zaslona premikamo po zaslonu levo/desno
A = 1 Cls Lcd Tekst na LCD For A = 1 To 10 Shiftlcd Left 'Shiftlcd Right Wait 1 Next 'premikamo v levo .... '... ali desno ... 'vsako sekundo za 1 znak 'spremenljivka za premikanje

Bascom AVR za zaetnike | Uporaba tekstovnega LCD zaslona

31

Kreiranje lastnih znakov


V kolikor elimo kreirati kaken poseben znak, ki ni v ASCII tabeli, to lahko storimo z Bascom orodjem LCD designer: Tools -> LCD Designer e prej se postavimo v prazno vrstico programa, kjer bo nato vneena koda za nov znak; najbolje, da je to v zaetku programa (poleg konfiguracije zaslona). Odpre se nam okno, kjer lahko s klikanjem naredimo eljen znak. Ko kliknemo OK, se nam v izbrano vrstico izpie naslednja koda: (variira glede na narejeni karakter)
Deflcdchar ?,16,16,8,8,4,4,3,3' replace ? with number (0-7)

Vpraaj moramo zamenjati za tevilko od 0 do 7 (kreiramo lahko 8 svojih znakov), torej naredimo npr.
Deflcdchar 1 , 32 , 7 , 5 , 7 , 32 , 32 , 32 , 32 'znak za stopinje

Prikaz taknega znaka v programu naredimo z ukazom LCD CHR(?), torej:


Lcd Chr(1)

Izpis v tekstu pa naredimo povsem navadno, kot izpis na LCD:


Lcd "Temp je 12" : Lcd Chr(1) : Lcd " Celzija"

Zgornji program izpie:


Temp je 12 Celzija

Pri emer smo znak za stopinje naredili sami. Vloga dvopija je ista kot da bi pisali vsako postavko v novo vrstico, le pregledneje je tako.

Inicializacija zaslona med delovanjem programa ukaz INITLCD


Vkolikor naredimo aplikacijo, kjer LCD priklopimo zgolj obasno (npr. ko elimo preveriti doloene parametre), nam le-ta pri on-line prikljuitvi ne bo deloval. Vzrok temu je to, da zaslon ni inicializiran, kar se zgodi ob zagonu programa (Bascom prevede kodo tako, da v zaetek programa postavi tudi inicializacijo samega displaya tudi, e INITLCD ne uporabomo). e pa v program vkljuimo omenjeno funkcijo, se zaslon inicializira tudi tekom delovanja programa in ga potemtakem lahko prikljuimo med delovanjem same aplikacije.

32

Uporaba tekstovnega LCD zaslona | Bascom AVR za zaetnike

Komunikacija UART poiljanje


Gregor Maek
Za komunikacijo s perifernimi napravami (GSM modem, GPS ...) najvekrat uporabljamo UART vmesnik. UART je kratica za universal asynchronous receiver/transmitter - torej univerzalni asinhroni prenos (poiljanje/sprejem) podatkov. Ve o samem standardu lahko zveste na Internetu.

RS-232 protokol
S pretvorniki (npr. MAX232, MAX485) lahko napetosti prilagodimo aplikaciji, ki jo delamo. Za kratke razdalje lahko uporabljamo kar direkten priklop UART <-> UART, vkolikor pa imamo vmes dalje kable ali v okolju motnje, uporabimo napetostni pretvornik.

Kot primer uporabimo MAX232, s katerim doseemo nivoje, potrebne za RS232 komunikacijo (Reccomended Standard 232), ki navadno uporablja +/-22V napetostne nivoje. Ker prenaamo vije napetosti je tudi vpliv motenj na samo komunikacijo manji. RS232 je tudi vmesnik, ki ga imamo najvekrat na razvojni ploi...

Bascom AVR za zaetnike | Komunikacija UART poiljanje

33

AVR mikroprocesorji imajo navadno 1 UART vmesnik (TX/RX), doloeni veji modeli pa tudi po ve (2 ali celo 4). Mi se bomo tokrat omejili le na en vmesnik, prav ni bistveno bolj pa ni komplicirana uporaba dveh ali ve.

Komunikacijske nastavitve v Bascomu


V Bascomu moramo najprej nastaviti parametre komunikacije. To storimo v Options -> Compiler -> Communication.Tu izberemo hitrost, s katero elimo komunicirati (baudrate) in nastavimo frekvenco procesorja. Vkolikor uporabljamo interni oscilator (1/4/8 MHz) nastavimo to vrednost, e pa uporabljamo kristal, pa nastavimo frekvenco kristala. e se malo igramo z nastavitvami, vidimo da je faktor napake najmanji (oz. ga sploh ni) pri frekvenci kristala 11,059MHz. Vkolikor uporabljamo drugo frekvenco, je vedno neka napaka (ki se seveda vea z vianjem hitrosti prenosa), a vrednosti pod 5% so najvekrat sprejemljive. Vse omenjene nastavitve lahko vpiemo tudi direktno v program in tako vpisane imajo prednost pred nastavitvami, izbranimi v meniju. Ravno tako lahko v sam program vkljuimo ostale informacije (o procesorju, pinih LCDja itd.) Primer:
$regfile = "m16def.dat" $crystal = 8000000 $baud = 19200 $hwstack = 32 $swstack = 8 $framesize = 24

Torej, ko smo opravili nastavitve komunikacije, poskusimo nekaj poslati na UART oziroma RS-232 izhod (na razvojni ploi je e MAX232, ki poskrbi za pretvorbo napetostnih nivojev). To storimo z enostavnim ukazom PRINT.

34

Komunikacija UART poiljanje | Bascom AVR za zaetnike

Poiljanje podatkov PRINT


Da bomo imeli kje spremljati komunikacijo, bomo RS232 vmesnik na razvojni ploi morali povezati z RS232 vmesnikom na raunalniku. Kabel mora biti t.i. crossover TX pin (izhod) mora biti povezan z RX pinom(vhod) raunalnika in obratno. Potem lahko komuniciramo z uporabo HyperTerminala (del Windows XP) oz. uporabimo napredneji program kot je npr. Brayev terminal. Slednji je priporoljiv tudi zato, ker HyperTerminal ne pokae vsega, kar se dogaja na ravni protokola (CR, LF ...).
Do Print "Posiljam podatke preko RS232 vmesnika" Wait 3 Loop

Zgornji program vsake 3 sekunde polje omenjeno sporoilo na RS232 port in v kolikor imamo raunalnik pravilno nastavljen (izbran pravilni port in hitrost) ter pravilno narejeno povezavo se le to prikae v oknu programa. Prazno vrstico enostavno kreiramo s praznim ukazom PRINT, torej:
Do Print "test" Print Print "test2" Wait 3 Loop 'prazna vrstica

e elimo ve vrednosti poslati v eni vrstici (brez CR), kot loilo uporabimo podpije:
Do Print "test " ; "naprej " ; "v eni " ; "vrstici" Wait 3 Loop

Isto kot pri izpisu na LCD za fiksne vrednosti uporabimo narekovaje, pri poiljanju spremenljivk pa lete izpustimo.

Bascom AVR za zaetnike | Komunikacija UART poiljanje

35

Poiljanje podatkov v binarni in esdesetiki obliki


e elimo izpisati esdesetiko ali binarno vrednost spremenljivke, to storimo z ukazoma PRINT HEX oz. PRINT BIN:
Dim A As Byte A = 20 Do Print Bin(A) Wait 3 Print Hex(A) Wait 3 Loop 'poljem A kot binarno vrednost 'poljem A kot esdesetiko vrednost

36

Komunikacija UART poiljanje | Bascom AVR za zaetnike

Komunikacija UART sprejemanje


Gregor Maek

Sprejem podatkov z ukazoma INKEY, WAITKEY


Podatke na UART lahko sprejemamo na razline naine, odvisno seveda od tega, za kakne podatke gre.
Dim A As Byte Do A = Inkey() 'akam na ASCII vrednost na UARTu If A > 0 Then 'e smo nekaj dobili Print "Dobili smo " ; A ; " (ASCII vrednost)" ' to izpiemo Print "Dejansko pa je to " ; Chr(a) 'in e dejanski znak! End If Loop

Podoben ukaz kot INKEY je tudi WAITKEY, s to razliko, da se v primeru uporabe WAITKEY program na tem mestu ustavi in stoji, dokler nekaj ne prejmemo.

Sprejem podatkov z ukazom INPUT


Tega ukaza se najvekrat posluimo, e elimo narediti komunikacijo med Hyperterminalom in nao aplikacijo z namenom spreminjanja parametrov sistema itd. Program

Dim A As Word Dim C As Integer Dim S As String * 15 Do Input "Vpisite spremenljivko A: " , A Print "Spremenljivka A je: " ; A Wait 3 Input "Vpisite tekst S" , S Print "Napisali ste tekst: " ; S Wait 3 Loop

Bascom AVR za zaetnike | Komunikacija UART sprejemanje

37

Multipleksiranje 7 segmentni LED


Vilko Susti
Svetlea dioda sveti, e tee skozi njo tok v prevodni smeri. Obiajno tok sklenemo in prekinjamo na strani katode, tako da potencial katode damo na 0V, med tem ko je anoda vezana na stalni vir energije +5V. POZOR, na slikah ni narisan upor, ki se vee v serijo z diodami, za omejitev toka, kajti 5V je previsoka napetost za diodo in bi jo pregala. Sheme v tem dokumentu obravnavajte samo za razlago delovanja.

Tok pa lahko prekinjamo tudi na strani anode, ali na obeh straneh Na strani anode si pomagamo s PNP tranzistorjem, ki ga odpremo z tokom skozi bazo, ki ga ustvarimo tako, da damo drugo stran upora na nizek potencial 0V . Da bo dioda svetila morata torej biti oba izhoda iz mikroprocesorja na nizkem potencialu. Ta koncept uporabimo, kadar elimo upravljati z velikim tevilom diod:

38

Multipleksiranje 7 segmentni LED | Bascom AVR za zaetnike

Uporabili smo 8 + 4 = 12 izhodov mikroprocesorja, in upravljamo z 8 x 4 = 32 diodami. Lahko prigemo katerokoli diodo, e le pravilno vzbujamo izhode s katerimi krmilimo potenciale na diodah. Problem postane, kadar bi radi, da bi svetilo ve diod hkrati. To se da samo takrat, e so diode, ki naj bi hkrati svetile bodisi v isti vrstici, bodisi v isti koloni. Oglejmo si vezje Minipin ploe. Na njej so tirje 7-segmentni prikazovalniki, od katerih ima vsak 8 diod in vse imajo skupno anodo, prav tako, kot ima 8 diod vezano skupaj anode na zgornji sliki. Katode so speljane ven, vsaka za en segment in ena za diodo, ki predstavlja decimalno piko. Vsaka dioda ima tudi svoje ime, pravzaprav rko:

Iz sheme lahko vidimo, kam so vezane katode posameznih diod in naredimo sledeo tabelo: Dioda A B C D E F G Dp Port Portb.7 Portb.1 Portb.5 Portb.4 Portb.2 Portb.3 Portb.0 Portb.6 0 x x x x x x 1 x x 2 x x x x x 3 x 4 x x x x x x 5 x x x x x 6 x x x x x x 7 x x x 8 x x x x x x x 9 x x x x x x

x x

Ni pa ne bo narobe, e se o tem prepriamo. Naredimo si program, ki bo dajal na 0V ciklino vsak portpin posebej, in istoasno bomo odprli tok skozi enega od tranzistorjev:
Reset Portd.7 Do For I = 0 To 7 Portb = 255 Portb.i = 0 Wait 3 Next Loop

Seveda moramo jumperje na Minipin ploi tudi pravilno postaviti, sicer ne bo ni videti. In potem poenemo program vaja2.bas:

Bascom AVR za zaetnike | Multipleksiranje 7 segmentni LED

39

Config Portb = Output ' dodamo/vklopimo 7seg displey na PD.7 Config Portd.7 = Output Reset Portd.7 Do Dim I As Byte For I = 0 To 7 Portb = 255 Portb.i = 0 Wait 3 Next Loop 'Zgraditi moramo tabelo za prevajanje - lookup tabelo. 'Kako ? Obrezloim na primeru: 'elimo prikazati recimo tevilko 1 'Da bo vidna tevilka ena, morata goreti diodi, ki odgovarjata pinom 1 in 5

'Odgovarjajoa pina morata biti na 0 ostali na 1 torej: 'Torej e so pini 7 6 5 4 3 2 1 0 ' 1 1 0 1 1 1 0 1 ' ali heksa D D &HDD ' 'Tako dobljene konstante, ki izvirajo iz samega vezja sestavim v tabelo. 'Zaporedje se mora zaeti z kombinacijo, ki odgovarja nili, in nato po ena 'naprej: ' 'Minipin7seg: 0 1 2 3 4 5 6 7 'Data &H41 , &HDD , &H64 , &H4C , &HD8 , &H4A , &H42 , &H5D 8 9 A B C D E F 'Data &H40 , &H58 , &H50 , &HC2 , &H63 , &HC4 , &H62 , &H72

To, kar vidimo, mora odgovarjati nartu. Vendar ne odgovarja, ker sem pri prenaanju narta v tabelo namerno naredil napako, prosim popravite jo. e veete v vaem projektu diode drugae, boste pa tudi krmilili malo drugae. In sedaj moramo dosei, da na 7-segmentnem prikazovalniku ne bo svetila samo ena dioda, temve, da bodo svetile vse tiste diode, ki bodo skupaj optino priarale vsebino, ki jo elimo prikazati. e elimo prikazati enojko, morata svetiti diodi B in C, e hoemo prikazati trojko, potem morajo svetiti diode A,F,G,E,D. in tako naprej za vse znake, ki jih elimo prikazati. Kako to naredimo? Za vsako vrednost spremenljivke, ki jo elimo prikazati, se pravi od 0 do 9, no morda do 15, naredimo bajt, ki ima odgovarjajoe bite na 0, ostale bite na 1. Razloim na primeru enice: Pri enici naj svetita samo diodi B in C, ki sta vezani na Portb.1 in Portb.5 Portb ima osem bitov ki so numerirani tako : 40 Multipleksiranje 7 segmentni LED | Bascom AVR za zaetnike

7 6 5 4 1 1 0 1 D

3 2 1 0 1 1 0 1 D

in vsebina le teh za enico bodi: kar heksadecimalno zapiemo kot

Tako moramo priti do vsej 10 (ali 15) konstant in jih postavimo v vrsto:
Minipin7seg: ' 0 1 2 3 4 5 6 7 Data &H41 , &HDD , &H64 , &H4C , &HD8 , &H4A , &H42 , &H5D ' 8 9 A B C D E F Data &H40 , &H58 , &H50 , &HC2 , &H63 , &HC4 , &H62 , &H72

In potem z lookup ukazom potegnemo iz te vrste tistega, ki odgovarja spremenljivki:


Portb = Lookup(i , Minipin7seg)

Preverimo to s programom vaja3.bas:


Dim Dim Dim Dim Dim I J K L S As As As As As Byte Byte Byte Byte String * 16

Config Portb = Output 'dodamo 7seg displey na PD.7 Config Portd.7 = Output Reset Portd.7 Do For I = 0 To 15 Portb = Lookup(i , Minipin7seg) ' lookup ukaz potegne iz tabele tisto vrednost, ki odgovarja po ' zaporedju ' vrednosti argumenta lookup ukaza, torej spremenljivki i Wait 2 Next Loop Minipin7seg: ' 0 1 2 3 4 5 6 7 Data &H41 , &HDD , &H64 , &H4C , &HD8 , &H40 , &H42 , &H5D ' 8 9 A B C D E F Data &H40 , &H58 , &H50 , &HC2 , &H63 , &HC4 , &H62 , &H72

S programom preverimo, ali smo tabelo pravilno sestavili. V tabeli je namerna napaka, in prosim popravite jo! Potem, ko smo popravili tabelo, gremo naprej, elimo prikazati kaj ve, kot samo eno mesto! Na vsa 4 mesta prikazovalnika bomo dali neko vsebino: Vaja4.bas: Bascom AVR za zaetnike | Multipleksiranje 7 segmentni LED 41

Dim Dim Dim Dim Dim

I J K L S

As As As As As

Byte Byte Byte Byte String * 16

Config Portb = Output 'dodamo 7seg displey na PD.7 Config Portd = Output

Do For I = 0 To 3 Portb = Lookup(i , Minipin7seg) Portd = 255 If I = 0 Then Reset Portd.4 If I = 1 Then Reset Portd.5 If I = 2 Then Reset Portd.7 If I = 3 Then Reset Portd.3 Wait 1 'Eksperimentiraj Z Razlinimi Zakasnitvami Waitms 5 Next Loop Minipin7seg: ' 0 1 2 3 4 5 6 7 Data &H41 , &HDD , &H64 , &H4C , &HD8 , &H4A , &H42 , &H5D ' 8 9 A B C D E F Data &H40 , &H58 , &H50 , &HC2 , &H63 , &HC4 , &H62 , &H72

Sedaj se prikazovalniki prikazujejo eden po eden po vrsti. e zakasnitveni as primerno zmanjamo, bo oko videlo, kot da delajo vsi hkrati, in to vztrajnost oesa uporabimo pri kot reemo mulitpleksiranemu krmiljenju 7-segmentnih prikazovalnikov. Vendar prikazati moramo neko vsebino! Prikaimo vsebino spremenljivke I!
' V zanki iz spremenljivke i napolnimo spremenljivke tis, sto, des in eni ' in le te prikaemo: Eni Des Des Sto Sto Tis = = = = = = I Mod 10 I Mod 100 Des / 10 I Mod 1000 Sto / 100 I / 1000

For K = 0 To 3 Portb = Lookup(i , Minipin7seg) Portd = 255

42

Multipleksiranje 7 segmentni LED | Bascom AVR za zaetnike

If K = 0 Then ' vsak displej posebej vklopimo Reset Portd.4 ' in za vsako mesto vzamemo svojo vrednost za prikaz: Portb = Lookup(tis , Minipin7seg) End If If K = 1 Then Reset Portd.5 Portb = Lookup(sto , Minipin7seg) End If If K = 2 Then Reset Portd.7 Portb = Lookup(des , Minipin7seg) End If If K = 3 Then Reset Portd.3 Portb = Lookup(eni , Minipin7seg) End If 'Wait 2 Waitms 5 Next experimentiraj z razlinimi zakasnitvami

In dodamo e preprosto spreminjanje vrednosti spremenljivke I . e pritisnemo tipko, se vrednost povea za 1:


Tipka1 Alias Pind.0 Config Pind.0 = Input Debounce Tipka1 , 0 , Dodaj Goto Preskok2 Dodaj: Incr I Preskok2:

Opazimo, da s pritiskom na tipko malo zmotimo prikazovanje, svetloba prikazovalnikov utripne. Se da to popraviti? Izboljati? Odgovor je seveda ja. A v ta namen si moramo pomagati z asovno prekinitvijo, timer interruptom. Mikroprocesor ima napravo, asovnik ali angleko timer. Le ta sicer ne meri asa, teme utripe kristala oziroma oscilatorja, ki poganja mikroprocesor, kar je pravzaprav nekaj podobnega.

Bascom AVR za zaetnike | Multipleksiranje 7 segmentni LED

43

Zaenkrat se ne bomo spuali v veliko teorijo o tem, temve si bomo pomagali s programom ki ga je prijazno dal brezplano na voljo gospod Ian Dobson. V okno ki izgleda tako:

Vtipkamo frekvenco kristala ali oscilatorja in eleni as prekinitve in e nam ponudi bascom avr kodo, ki jo iemo:

44

Multipleksiranje 7 segmentni LED | Bascom AVR za zaetnike

To kodo enostavno prenesemo v na program. Seveda pa moramo sami napisati v asovno prekinitveni podprogram, kaj naj naredi. Na prekinitveni podprogram naj prikae eno dekado, in se vrne, drugi drugo in tako naprej.
' PREKINITVENI PODPROGRAM Vaja 6 Timer0_isr: Load Timer0 , Timer0reload ' V prekinitveni rutini vsakokrat prikaemo eno od 4 tevilk ' in to neodvisno od dela glavnega programa, zato ni utripanja, kadar ' glavni program dela kaj drugega Dim Tis As Word 'Tisoice Dim Sto As Word 'Stotice Dim Des As Word 'Desetice Dim Eni As Word 'Enice 'Iz spremenljivke i napolnimo spremenljivke tis, sto, des in eni ' in le te prikaemo: Eni = I Mod 10 Des = I Mod 100 Des = Des / 10 Sto = I Mod 1000 Sto = Sto / 100 Tis = I / 1000 Incr K If K > 3 Then K = 0 Portb = Lookup(i , Minipin7seg) Portd = 255 If K = 0 Then ' vsak displej posebej vklopimo Reset Portd.4 ' in za vsak displej vzamemo svojo vrednost za prikaz Portb = Lookup(tis , Minipin7seg) End If If K = 1 Then Reset Portd.5 Portb = Lookup(sto , Minipin7seg) End If If K = 2 Then Reset Portd.7 Portb = Lookup(des , Minipin7seg) End If If K = 3 Then Reset Portd.3 Portb = Lookup(eni , Minipin7seg) End If Return

Glavni program sedaj se ne ukvarja ve z prikazovanjem na 7 segmentne prikazovalnike, temve se ukvarja za bistvenimi zadevami, rezulat da v spremenljivko I, prikazovanje le te pa opravi podprogram. Opazimo sedaj, da pritisk na tipko ne zaustavlja prikazovanja in svetloba ob pritisku na tipko ne utripne.

Bascom AVR za zaetnike | Multipleksiranje 7 segmentni LED

45

Prekinitve (Interrupti)
Vilko Susti
Mikroprocesorji omogoajo prekinitve delovanja glavnega programa. Zakaj? Vasih je nujno potrebno narediti kako malenkost takoj, in ne akati, da bo mikroprocesor po programu zakljuil nekaj, za kar potrebuje e nekaj asa, kajti takrat zna biti prepozno. Zato je prekinitev vedno vezana na mali podprogram, v katerem smo programirali, kaj je potrebno tako nujno narediti. Prekinitev je povzroena lahko na razline naine, lahko je asovna prekinitev, ki nastopi, ko mine doloen as, lahko je zunanja prekinitev, ki nastopi ob spremembi nivoja napetosti na kakem vhodu mikroprocesorja (port-pinu), lahko se proi, ko UART zazna in prebere nek bajt, ki pride po komunikacijski liniji v mikroprocesorski medspomin buffer. V splonem velja, da se prekinitev izvede tako, da se najprej spravi vse bistvene podatke o dogajanju v mikroprocesorju zaradi delovanja glavnega programa na odloie (stack) in se ele potem poene prekinitveni podprogram. Ko prekinitveni program zakljui svoje delo z ukazom Return, se potem iz odloia spet napolnijo vsi registri mikroprocesorja in glavni program nadaljuje svoje delo, kot da se ni ni zgodilo. No, je pa preteklo nekaj asa, in e samo to dejstvo lahko slabo vpliva na delovanje glavnega program, e recimo glavni program v tem asu ni opazil kake bistvene spremembe, ki bi jo bil moral upotevati. Zato velja naelo: prekinitveni podprogram bodi v naelu im bolj kratek, naj odvzame im manj asa glavnemu programu. Prekinitev bomo uporabili tudi v kasnejem programu za prikazovanje na 7-segmentnem prikazovalniku. Pa nadaljujmo kar z asovno prekinitvijo ali timer-interruptom. asovnik ni pravzaprav ni drugega kot tevec impulzov, ki prihajajo na vhod tevca. Le ti so obiajno kar impulzi istega oscilatorja, ki poganja mikroprocesor, ali pa impulzi, ki prihajajo iz zunanjega vira preko vhodov T0 ali T1 (PB0 ali PB1) To smo e uporabili pri prejnjem poglavju o multipleksiranju. Vaja1.bas program v novi varianti, ki prikazuje vsebino tevca sekund na 7-segmentni prikazovalnik in vsak pritisk na tipko zaustavi ali poene tetje. Ker merimo sekunde z ukazom wait 1 tisti as, ko je program v zanki, ki jo povzroi wait, ne zazna pritiska tipke.

46

Prekinitve (Interrupti) | Bascom AVR za zaetnike

Vaja2.bas pa odtipava tipko s pomojo externega interrupta. Definiramo:


Config Int0 = Falling On Int0 Int0_int Enable Int0

Sedaj ni problema z detektiranjem tipke, saj kadarkoli pritisnemo tipko, program takoj reagira. Toda e vedno je problem tako natannega tetja, kot tudi zaustavljanja tetja v trenutku, ko velja wait 1.

V vaja3.bas smo odpravili tudi to slabost. Da dokaemo, smo se odloili teti kar stotinke sekunde in imamo sedaj neke vrste uro toparico. Za tetje asa smo zadolili kar prekinitveni podprogram, ki je dolan prikazovati tevilke na 7-segmentni prikazovalnik.

Glavni program sedaj ne dela drugega, kot da popravi teto vrednost. In sedaj ga lahko obremenimo e z drugimi nalogami, ki ne bodo zaustavljane z raznimi wait ukazi.

V programu vaja4.bas smo iz te ure naredili merilnik odzivnega asa. Ko je tevec na 0, tedaj gremo v akanje za neznano tevilo sekund. To tevilo dobimo z ukazom
J = Rnd(17)

Funkcija Rnd nam da sluajnostno tevilo nekje med 0 in v funkciji omenjeno zgornjo mejo. Ko pretee ta sluajnostni as, se meritev zane, kar vidi testiranec tako, da zane tei prikaz na prikazovalniku. Sedaj mora im hitreje pritisniti tipko in s tem ustaviti tetje, in odmerjeni as si potem lahko na prikazovalniku ogleda.

Bascom AVR za zaetnike | Prekinitve (Interrupti)

47

1-wire protokol in termometer DS1820


Vilko Susti
Termometer spada v druino 1wire. To je Dallasov nain povezovanja in napajanja elementov po eni sami ici.

Ista ica lahko slui za napajanje, kot tudi za komunikacijo. Ko ne komuniciramo, je ica na high, visoko, in napaja naprave, ki si energijo akumulirajo, tako da so napajane e tisti as, ko signal na ici utripa v ritmu komunikacije. Naprave, ki jih je na ici lahko ve, loimo med seboj po unikatni identifikacijski oznaki, ki je vpisana v ROM naprave, termometra na primer in jo moramo poznati, e prikljuimo na ico ve kot eno napravo.

asovni diagrami, ki se jih je potrebno drati, da je komunikacija uspena, so dovolj zapleteni in doloeni: 48 1-wire protokol in termometer DS1820 | Bascom AVR za zaetnike

A za programerja, ki programira v Bascomu, za vse to poskrbi Bascom sam. Drugae je za programerja, ki programira v zbirniku, assemblerju. Programer v Bascomu mora samo toliko biti previden, da ne zavira izvajanje programa s kakimi prekinitvenimi podprogramu, kajti to lahko pokvari asovni potek komunikacije, kadar se ta izvaja v glavnem programu. Merjenje temperature gre tako: Najprej zahtevamo, da DS1820 izmeri temperaturo in si rezultat spravi v svoj pomnilnik.
1wreset 1wwrite &HCC 1wwrite &H44 Wait 1 'skip ROM velja za vse, ki ste na liniji 'merite temperaturo 'dajem vam as za merjenje

Ko DS1820 prejme tak ukaz, potrebuje energijo za delo, ki jo dobi tako, da mi drimo signal visok. as je lahko razlien, a najve asa, ki ga za to potrebuje je 750msec. Ko pretee ta as, damo ukaz: daj nam meritev.
1wreset 1wwrite &HCC 1wwrite &HBE 'reset 'skip ROM velja za vse, a je samo eden na liniji 'dajte podatke

Podatek o temperaturi dobimo v polovikah stopinje in ga daje v obliki dveh bajtov


T = 1wread(2) 1wreset T = T / 2 'Beremo podatke, prva dva bajta sta temperatura ' T je tipa integer 'Temperaturo dobimo v polovikah stopinje

Program DS1820-1 je primer branja temperature, e je na liniji en sam termometer Program DS1820-2 je izboljan v toliko, da uporablja timer namesto wait za zagotavljanje potrebnega asa za konverzijo rezultata v DS1820 Bascom AVR za zaetnike | 1-wire protokol in termometer DS1820 49

Program DS1820-3 je izboljan v toliko, da bere celotno vsebino, ki jo daje DS1820 in preverja dobljeno vsebino po CRC8 Vsebina, ki jo dobimo je:

e elimo imeti ve termometrov, potem potrebujemo za vsak termometer njegovo identifikacijo. Dobimo jo tako, da vsak termometer posebej prikljuimo, poenemo program DS1820-4 in informacijo, ki jo dobimo, prenesemo v program, ki bo zahteval temperaturo od konkretnega termometra. Program DS1820-5 je primer branja temperature konkretnega termometra Program DS1820-6 je primer branja temperature iz treh termometrov Beri tudi Bascp, AVR Help 'Using the 1 WIRE protocol'

50

1-wire protokol in termometer DS1820 | Bascom AVR za zaetnike

Stack odloie
Vilko Susti
Morda beseda odloie ni najbolja, toda smatram, da primerno pomensko odgovarja, kar bomo videli, ko si bomo ogledali stack - odloie v funkciji. V splonem se programerji ne ukvarjamo dosti s tem orodjem, uporablja ga mikrokrmilnik sam, (hardware stack) oziroma Bascom sam, (software stack). Nerodno je le to, da nam o tem dosti ne pove, in e v ta namen doloen prostor v pomnilniku (RAM-u) ni dovolj velik, se dogode nepredvidljive zadeve in program obiajno umre brez karknekoli diagnoze. Boste videli zakaj.

Najbolj tipina uporaba odloia je, kadar kliemo v glavnem programu podprogram, ali tudi v podprogramu e en podprogram. S klicem podprograma, glavni program, ali program vijega nivoja preda upravo podprogramu. To lahko naredi vekrat na razlinih mestih. Podprogram v splonem ne ve, od kod je bil klican. Ve pa, da je glavni program v samem klicu podprograma dal naslov predaje na odloie. Ko podprogram ree Return, dejansko skoi na naslov, ki ga najde na odloiu.

Odloie ali stack si je potrebno predsavljati kot skladovnico, kjer vedno odlagamo na vrh skladovnice in vedno jemljemo iz vrha, bajt po bajt. e se pri tem zaporedju zmotimo, dobimo, ko jemljemo podatke nazaj, napane vsebine in program gre v maloro. Temu reemo LIFO , kar je kratica za Last in first out, ali tisti ki zadnji pride, prvi odide. Bascom AVR razlikuje tri delovna podroja, ki so razvrema na sam vrh pomnilnika, hwstack, swstack in frame.

Bascom AVR za zaetnike | Stack odloie

51

Oglejmo si na programu stack-bas:


$regfile = $hwstack = $swstack = $framesize "m162def.dat" 64 64 = 64

Dim Reg14 As Iram Byte At 14 Overlay Dim Dim Dim Dim Dim I J K L M As As As As As Byte Byte Byte Byte Word

Declare Sub B Declare Sub Sestej(prvi As Byte , Drugi As Byte , Tretji As Byte) Declare Function Vsota(first As Byte , Second As Byte) As Byte I J K L M = = = = = &H11 &H12 &H13 &H14 &H1567 "Smo v Hex(i) A "Smo v Hex(i) glavnem programu" ; " " ; Hex(j) ; " " ; Hex(k) ; " " glavnem programu" ; " " ; Hex(j) ; " " ; Hex(k) ; " "

Print Print Gosub Print Print

Call B Print "Smo v glavnem programu"

Call Sestej(i , J , K) Print "Smo v glavnem programu" K = Vsota(i , J) Print "Smo v glavnem programu" End A: Push R14 Reg14 = I : Push R14 Reg14 = J : Push R14 Print "Smo v I = &H21 : J Print Hex(i) Gosub Aa Print "Smo v Print Hex(i) podprogramu A" = &H22 ; " " ; Hex(j) podprogramu A"

52

Stack odloie | Bascom AVR za zaetnike

Pop r14 : j = Reg14 Pop r14 : I = Reg14 Pop r14 Return Aa: Print "Smo v podprogramu Aa" Gosub Aaa Print "Smo v podprogramu Aa" Return Aaa: Print "Smo v podprogramu AAA" Gosub Aa Return B : Print "Smo v podprogramu B" Return Sub B Print "smo v subrutini B" End Sub Sub Sestej(prvi As Byte , Drugi As Byte , Tretji As Byte) Local Aha1 As Byte Aha1 = 2 Tretji = Prvi + Drugi End Sub Function Vsota(first As Byte , Second As Byte) As Byte Local Bebe1 As Byte Bebe1 = 7 Vsota = First + Second End Function End

Bascom AVR za zaetnike | Stack odloie

53

Ko ga prevedemo si oglejmo poroilo prevajalnika (compilerja). Vedno je priporoljivo, da si ogledamo poroilo (report) saj v njem dobimo zanimive podatke o naem programu. Poroilo o naem programu je skrajano sledee:
Report Date Time Compiler Processor SRAM EEPROM ROMSIZE ROMIMAGE ROMIMAGE FLASH USED BAUD XTAL BAUD error Stack start Stack size S-Stacksize S-Stackstart Framesize Framestart Space left : STACK : 02-13-2008 : 10:59:40 : : : : : : : : : : : : : : : : : : BASCOM-AVR LIBRARY V 1.11.8.5 M162 400 hex 200 hex 4000 hex 3F6 hex -> Will fit into ROM 1014 dec 6 % 9600 Baud 4000000 Hz 0.16% 4FF hex 40 hex 40 hex 4C0 hex 40 hex 47F hex 827 dec

------------------------------------------------------------------------------Variable Type Address(hex) Address(dec) ------------------------------------------------------------------------------HWSTACK Word 005D 93 SWSTACK Word 001C 28 FRAME Word 0004 4 ERR Bit 0006 6 REG14 000E 14 I Byte 0100 256 J Byte 0101 257 K Byte 0102 258 L Byte 0103 259
M Word 0104 260

Glede na to, da smo definirali:


$regfile = $hwstack = $swstack = $framesize "m162def.dat" 64 64 = 64

in ima mikrokrmilnik najviji naslov H4FF smo s tem definirali 54 Stack odloie | Bascom AVR za zaetnike

HWstack od SWstack od Frame od

&H4FF do &H4C0 &H4BF do &H480 in &H47F do &H440

Delovanje program si bomo ogledali na simulatorju, ker tam lahko izvajamo instrukcijo po instrukcijo in si ogledujemo, kaj se dogaja v mikroprocesorju. Startamo simulator in vidimo nekaj takega:

Simulator krmilimo tako, da nam pokae na program in zraven e vsebino pomnilnika-rama. Program poenemo poasi, korak po korak F8. Opazimo, da se nam pomnilnik pobrie na nile ele, ko naredimo prvi korak v program. To je programirano v Bascomu.

Ko ponovno pritisnemo na F8, vidimo, da se je izvedel ukaz I = &H11 in je vsebina naslov H100 postala H11. Pretaknimo na simulatorju okno tako, da nam pokae IO vsebine. Izgledalo bo nekako tako:

Bascom AVR za zaetnike | Stack odloie

55

Rad bi vas opozoril na SPL in SPH. To sta dva bajta, ki skupaj kaeta lokacijo v odloiu (stack-u) na sledee prosto mesto, angl. Stackpointer. V naem primeru je to naslov &H04FF To pa je v tem primeru tudi konni naslov pomnilnika, saj toliko pomnilnika ima programirani mikrokrmilnik.

56

Stack odloie | Bascom AVR za zaetnike

Sedaj pa previdno naprej, pritisnemo F8 e dvakrat in izvedemo e dve instrukciji:

To sta bila dva print ukaza in vsebina je vidna lepo na simulatorju. Opazimo pa e nekaj: vsebina bajtov okoli naslova 04ff se je spremenila! Nekdo je uporabil stack! Ja, seveda, bascom sam pri zahtevnih ukazih, kot so print tudi klie svoje podprograme, in pri vsakem klicu se naslov povratka iz podprograma spravi v stack. Oglejmo si sedaj spet Stackpoiner! (SPH in SPL v IO!) Le ta je lepo na 04FF, kot da se ni ni zgodilo. To je zato, ker smo spet v glavnem programu in uporabljeni bajti v stacku so dani nazaj na razpolago, no niso pa brisani na 0, ker to nima pomena.

e se vrnemo na okno pomnilnika, opazimo tudi, da je bascom spremenil tri bajte na naslovu &H440: in to v &H31 (znak enojka) &H33 (znak trojka) in &H00 (konec niza). To so zadnji znaki, ki so izpisani v oknu komunikacije in so bili zaukazani z ukazom Print. Kot vidimo je bascom uporabil tri bajte v podroju Frame kot delovni pomnilnik.

In sedaj e enkrat pritisnimo F8!

Bascom AVR za zaetnike | Stack odloie

57

Stackpointer sedaj kae &H04FD, dva bajta nie! To je zato, ker se nahajamo v podprogramu A in je tam spravljen naslov povratka v glavni program, ki ga bomo e rabili. Ko bomo rekli Return, se bo od tam vzel naslov, kam se vrniti, in prostor v Stacku se bo sprostil.

Tako poasi analizirajte delovanje naprej, korak po korak, dokler ne pridete to konca programa.

58

Stack odloie | Bascom AVR za zaetnike

Zakljuek mora biti slede: Hwstack upravljam mikroprocesor na osnovi LIFO principa, vanj spravlja in jemlje informacije, predvsem naslove, pri klicanju podprogramov in funkcij, lahko tudi implicitno (Print recimo). Hwstack se polni od najvijega naslova RAM-a navzdol, ne glede, ali je tam kaj programer pomotoma pisal. Ko se naslovi spet uporabijo, se prostor sprosti. e je programer na te naslove neprevidno napisal kake podatke, bo mikroprocesor z veliko verjetnostjo smatral te podatke kot naslove, kam nadaljevati program, in tako bo program se odvil v gozd in umrl. V splonem potrebuje mikroprocesor po dva bajta tega podroja za vsak gosub ali klic podprograma ali funkcije. Veliko ve pa potrebuje, kadar se starta prekinitveni podprogram brez NOSAVE opcije. Takrat se spravi na stack poleg naslova povratka tudi vsebina veine registrov, (vseh je 32!) NOSAVE opcijo pa si lahko privoite le, e potem sami v prekinitvenem podprogramu spravite na stack vse tiste registre, ki jih uporabite. Ker pa Bascom programerji ne vemo, katere registre uporabi Bascom, je tak nasvet brez smisla.

Software stack uporablja Bascom za naslove spremenljivk podanih kot paramater pri klicu Subroutine ali Funkcije. Pa tudi za vsako v subrutini ali funkciji definirano lokalno spremenljivko.

Frame uporablja Bascom kot delovno podroje in za lokalno v subroutini ali funkciji definirane spremenljivke. Take spremenljivke so v podroju Frame, njih naslovi v swstack.

Bascom AVR za zaetnike | Stack odloie

59

EEPROM pisanje in branje


Gregor Maek

SRAM pomnilnik, v katerem se shranjujejo podatki s katerimi operiramo, ima to slabo lastnost, da se ob izgubi napajanja izbrie. e elimo doloene podatke, parametre itn. shraniti tako, da ob izgubi napajanja podatki ostanejo, jih shranimo pomnilnik EEPROM. EEPROM je kratica za Electrically Erasable Programmable Read-Only Memory. AVR mikroprocesorji imajo doloeno koliino EEPROM pomnilnika e znotraj samega procesorja, e pa elimo pa lahko dodatni EEPROM poveemo s kontrolerjem preko I2C (ali drugega) protokola in tako poveamo prostor, namenjen podatkom. Da pa ne bo vse tako enostavno je potrebno omeniti neprijetno lastnost EEPROM pomnilnika, pravzaprav dve. Prva je relativno poasno branje in predvsem pisanje (napram SRAM pomnilniku), ki pa nam navadno ne povzroa vejih preglavic. Veja teava je omejeno tevilo prepisovanj pomnilnika, saj se po cca 10.000 100.000 zapisih mesto v EEPROM pomnilniku obrabi do te mere, da zapisovanje in branje s tega mesta ni ve mogoe. Temu se izognemo s pametno narejenim programom, ki spremenljivke v EEPROM zapisuje le tedaj, ko je to potrebno, sicer pa z njimi izvajamo operacije le v SRAMu. Kot eno izmed monih reitev naj navedem reitev napajanje mikroprocesorja tako, da je v napajalni veji tudi dioda in visokokapacitativni kondenzator, z enim od vhodov pa vseskozi tipamo prisotnost glavnega napajanja naprave. Vkolikor glavno napajanje izgine, zapiemo spremenljivke v EEPROM in procesor zaustavimo (napajanje nikakor ne sme izginiti med samim pisanjem v EEPROM!) dokler se glavno napajanje ne vrne. Tedaj vrednost spremenljivk iz EEPROM pomnilnika prepiemo nazaj spremenljivkam v SRAMu in program se nadaljuje. Druga, elegantneja (programska) metoda je, da spremenljivke zapisujemo le tedaj, ko se res spremenijo, ne pa ob vsakem prehodu do-loop zanke.

60

EEPROM pisanje in branje | Bascom AVR za zaetnike

Zapisovanje v EEPROM in branje le-tega preko ERAM spremenljivk


Najenostavneja varianta zapisovanja in branja pomnilnika EEPROM za zaetnika je preko zaasnih t.i. ERAM (EEPROM RAM) spremenljivk. Postopek je slede: 1. Kot navadno kreiramo SRAM spremenljivko XXX (ime je lahko poljubno)
Dim XXX as Word

2. Kreiramo e dodatno EEPROM spremenljivko eXXX (ime je lahko poljubno). Tip spremenljivke ERAM mora biti enak tipu spremenljivke SRAM!
Dim eXXX As ERAM Word

3. Ko elimo spremenljivko iz delovnega (SRAM) pomnilnika prepisati v EEPROM pomnilnik (torej pisanje v EEPROM), to enostavno storimo z:
eXXX = XXX

4. e pa elimo spremenljivko iz EEPROMa prebrati, storimo obratno:


XXX = eXXX

Torej povsem enostavno! Sedaj lahko npr. naredimo enostaven termometer, ki najvijo in najnijo izmerjeno temperaturo hrani tudi ob izpadu napajanja. Vkolikor imamo v EEPROMu shranjene doloene parametre programa (npr. telefonske tevilke, nastavitve) je potrebno paziti pri (pre)programiranju mikrokontrolerja, saj je pri veini programatorjev privzeto nastavljeno, da se prepie/izbrie tudi EEPROM pomnilnik. Vkolikor vrednosti v EEPROMu elimo obdrati, omenjeno monost izklopimo. Naj e enkrat opozorim, da ima EEPROM pomnilnik omejeno tevilo vpisov, zato je potrebno paziti na sam program, da v EEPROM ne piemo prepogosto.

Bascom AVR za zaetnike | EEPROM pisanje in branje

61

Zapisovanje v EEPROM in branje le-tega preko ukazov READEEPROM in WRITEEEPROM


Bascom pa omogoa tudi drug, napredneji nain pisanja in branja EEPROMa preko ukazov WRITEEEPROM in READEEPROM ter direktno pisanje konstant v EEPROM s pomojo $eeprom ukaza.

$eeprom Z vkljuitvijo omenjenega ukaza v program prevajalniku povemo, da bomo deklarirali konstante, ki bodo vpisane v EEPROM pomnilnik. Prevajalnik generira EPP datoteko, ki jo s programatorjem zapiemo v EEPROM mikrokontrolerja.
$eeprom P_eeprom: Data 1 , 2 , 3 , 4 , 5 $data 'Zapisujemo v EEPROM 'Deklariramo podatkovno polje P_eeprom ' in mu vnesemo podatke. 'Preklopimo nazaj v FLASH nain!

Readeeprom Sedaj bomo v programu (v FLASH pomnilniku) prebrali omenjene podatke:


Dim A as byte Readeeprom B , P_eeprom '1. vrednost iz Polje_eeprom prenesemo v spr. B Print B 'In to vrednost poljemo na RS232 terminal

Vkolikor bi bili sedaj v Do-Loop zanki, bi prebrali vse vrednosti iz polja Polje_eeprom, ob vsakem prehodu naslednjo vrednost.

Writeeeprom V EEPROM lahko tudi piemo:


Dim B as byte B = 10 Writeeeprom B , P_eeprom B = 11 Writeeeprom B 'Prvi moramo deklarirati tudi kam piemo ' za naslednji vpis pa to ni ve potrebno

62

EEPROM pisanje in branje | Bascom AVR za zaetnike

433 MHz komunikacija preko RFM12B modulov


Bojan Kova

Sploen opis
Raziritveni modul s transceiver modulom RFM12B uporabnikom Minipin razvojnega sistema ponuja osnovo za hiter razvoj poceni in zanesljive reitve brezinega prenosa blokov podatkov, predvsem zaradi monosti dvosmerne izmenjave podatkov.

Modul RFM12B je low-power razliica z razponom napajalne napetosti od 2,2 do 3,8 V, namenjen pa je aplikacijam, v katerih za komunikacijo potrebujemo sprejemnik in oddajnik, ker nam je pomembna dvosmerna komunikacija. Obe funkciji sta zdrueni v enem vezju, tako da imamo monost razvoja dimenzijsko majhnih in zmogljivih brezinih aplikacij. Gre za ozkopasovni sprejemnik/oddajnik, zato imamo monost ustvarjanja razlinih frekvennih kanalov znotraj dovoljenega frekvennega pasu, ki med sabo nimajo vpliva. S tem se izognemo motnjam, slabljenju in interferenci med kanali in doseemo robustnejo brezino zvezo. Poleg low-power razliice modula sicer obstajata e standardna razliica RF12 in monostna RF12BP, ki ob prej omenjenem napajanju zmore celih 500 mW oddajne moi. al je monost legalne uporabe teh modulov zaradi tolikne moi omejena le na frekvenni pas 868 MHz.

Bascom AVR za zaetnike | 433 MHz komunikacija preko RFM12B modulov

63

Tipini primeri uporabe


daljinsko upravljanje, varnost doma in alarmiranje, brezine tipkovnice, mi in druge PC periferne enote, upravljanje igra, daljinsko prepoznavanje in vstop brez kljua, nadzor pritiska v pnevmatikah avtomobilov, telemetrija, zajem podatkov o osebah / pacijentih, avtomatsko brezino oditavanje instrumentov/merilnikov.

Glavne znailnosti oddajnika


Stabilna in tona FSK modulacija s programabilnim odklonom Programabilna pasovna irina PLL zanke Diferencialni izhod za direktno prikljuitev antene Avtomatska prilagoditev prikljueni anteni Programabilni nivo oddajne moi Vgrajen programabilni kondenzator kvarca

Glavne znailnosti sprejemnika


Programabilni PLL sintesajzer visoke resolucije se hitro vzpostavlja Sposobnost hitrega preskakovanje frekvenc Direktni vhod/izhod za prikljuitev diferenciane antene Programabilna pasovna irina (67 v 400 kHz) na izbranem kanalu Analogni in digitalni RSSI izhodi Avtomatska regulacija frekvence (AFC) Zaznavanje kvalitete sprejetih podatkov (DQD) Notranje filtriranje podatkov in obnovitev takta Prepoznavanje RX vzorcev Upravljanje funkcij po SPI zdruljivem serijskem vodilu 16-bitni RX podatkovni FIFO Nain delovanja z nizko porabo (manj kot 0.5 mA v povpreju) Standardni 10 MHz kristal asovnik za samoprebujanje Zaznavanje prenizkega nivoja napajanja Deluje v obmoju napajanja od 2.2 do 5.4 V Majhna poraba ( - 9 miliamper v nizkofekvennem obmoju) Nizek tok v standby nainu (0.3A)

64

433 MHz komunikacija preko RFM12B modulov | Bascom AVR za zaetnike

Opis vezja
Raziritveni modul nam omogoa sprejemanje in poiljanje blokov sporoil (nizov znakov). Zanesljivost prenosa oziroma verodostojnost preneenih podatkov je v veji meri odvisna od dobre antene, razdalje med sprejemnikom in oddajnikom in trenutnih motenj na doloenem komunikacijskem kanalu. V odvisnosti od tega, kaken niz smo sprejeli, se ob delnem ali popolnem ujemanju niza lahko aktivirajo funkcije, ki nam na razline naine aktivirajo izhode. Sprejemno-oddajna antena je v naem primeru izvedena na tiskanem vezju, kar bo za testiranja povsem zadostovalo. Modul prikljuimo prek dveh univerzalnih PORT konektorjev Minipin razvojnega sistema in sicer prek porta B in D. Pin 1 konektorja je +Vcc, Pin 2 pa GND. Port B smo uporabili zato, ker so na njem e tovarniko doloene linije za SPI komunikacijo, po kateri procesor izmenjuje podatke z modulom. Port D pa smo uporabili zaradi prekinitvenih vhodov INT0 in INT1 in s tem monosti uporabe prekinitvenih rutin. Kot indikacija VF sprejemanja je vgrajena zelena, za VF oddajanje pa rdea LED dioda. Tipki uporabljamo za poiljanje znakovnih nizov v oddajnem nainu. Dodatni LED diodi sta namenjeni prikazu aktivnosti izhodov glede na sprejeti niz

Istoasno lahko na Minipinu uporabljamo le en RFM12 raziritveni modul. Za razline potrebe naloimo razline programe. Na voljo sta programa za oddajo in sprejem znakovnega niza. Primeren program, ki bo zdrueval funkcionalnost obeh, si iz predloenega gradiva in primerov lahko izdelate sami. Za preizkuanje komunikacije je najbolj prirono uporabiti dva Minipin razvojna sistema, saj bomo istoasno delali na vsaj dveh Bascom programih (oddajni in sprejemni). Na teajih Bascoma je to preprosto, saj se po dva in dva teajnika poveeta na isti frekvenci, s tem, da eden oddaja, drugi pa sprejema odposlane nize. Prikaz sprejetega niza prikaemo tudi na LCD displayu. e gre za dogovorjen niz, ki pripada tipki 1 ali tipki 2, se niza prikaeta za prvo tipko v zgornji in za drugo tipko v spodnji vrstici. Pred vsakim nazadnje sprejetim nizom se prikae znakec za anteno. V nizu poiljamo tudi zaporedno tevilko oddanega niza za pripadajoo tipko in sicer do niza 255, potem zanemo od zaetka. e sprejmemo niz, ki ni dogovorjen, ga ignoriramo, vendar vseeno izpiemo na LCD display v prvo vrstico. Pred taknim nizom je znakec za slab sprejem. Nakljune nize lahko pogosto sprejmemo, saj je radijska dejavnost na 433 Mhz vasih zelo ivahna. Naa naloga je sprejeti pravi niz, ga analizirati in izvriti naloge, ki so na sprejemni strani za posamezen niz predvidene.

Bascom AVR za zaetnike | 433 MHz komunikacija preko RFM12B modulov

65

Opis oddajnega programa


Oddajni program v principu deluje tako, kot je narisano v blok shemi na sliki. Dodali smo le e preverjanje, e je katera od tipk pritisnjena in v odvisnosti od tega, katera tipka to je, priredimo vsebino oddanega niza, da bomo pritisk te tipke na sprejemni strani lahko povezali z izvajanjem eljenih podprogramov. Za popestritev programa z raznimi monostmi smo v podprogram za prvo tipko vpeljali akanje, da je tipka spuena, torej niz oddamo le enkrat za vsak pritisk tipke. Pri drugi tipki niz poiljamo toliko asa, dokler je tipka pritisnjena.

Program tee takole:

Konfiguracija modula za oddajanje To naredimo isto na zaetku in samo enkrat. (Opis vseh 17-ih ukazov in pomen vsakega posameznega bita v registrih je opisan v originalni dokumentaciji. Slika s kratkim opisom posameznega ukaza je na zadnji strani. ) V konfiguracijskem delu je tudi vrednost, ki jo vpiemo za komunikacijo na posameznem kanalu in pomeni frekvenco, na kateri bo modul oddajal. Sprejemnik mora imeti za uspeno sprejemanje v ta registervvpisano enako vrednost.

Oznaka konca konfiguracije Zatem kot signalizacijo prigemo in ugasnemo Tx in Rx LED diodi, s karterima oznaujemo sprejemanje, oziroma oddajanje

66

433 MHz komunikacija preko RFM12B modulov | Bascom AVR za zaetnike

Vrtimo se v glavni programski zanki Preberemo stanje vhodov. Ugotovimo stanje tipk. e ugotovimo pritisk tipke, potem izvrimo njej doloen podprogram. e ni pritisnjena nobena od tipk, se vrnemo na zaetek glavne programske zanke

Konec glavne programske zanke

kratek opis podprogramov: Podprogram za 1. Tipko (odpolje niz le enkrat in poaka, da spustimo tipko) Odpoljemo niz T1 on :...., izpiemo isti niz na LCD display Preverimo stanje tipke 1 Poakamo, dokler ni tipka spuena Vrnemo se v glavno programsko zanko

Podprogram za 2. Tipko (poilja niz toliko asa, dokler ne spustimo tipke) Odpoljemo niz T2 on : ...., izpiemo isti niz na LCD display Preverimo stanje tipke 2 e je tipka e pritisnjena, gremo spet na zaetek tega podprograma e tipka ni ve pritisnjena, se vrnemo v glavno programsko zanko

Bascom AVR za zaetnike | 433 MHz komunikacija preko RFM12B modulov

67

Slika ploice tiskanega vezja raziritvenega modula

Opis sprejemnega programa

Sprejemni program v principu deluje tako, kot je narisano v blok shemi na sliki. Dodali smo e izpis na LCD display. Sprejeti niz analiziramo in e ustreza enemu od dogovorjenih nizov ob pritisku na tipko na oddajni strani, izvedemo predvideni podprogram.

68

433 MHz komunikacija preko RFM12B modulov | Bascom AVR za zaetnike

Konfiguracija modula za sprejem To naredimo isto na zaetku in samo enkrat. (Opis vseh 17-ih ukazov in pomen vsakega posameznega bita v registrih je opisan v originalni dokumentaciji. Slika s kratkim opisom posameznega ukaza je na zadnji strani. ) V konfiguracijskem delu je tudi vrednost, ki jo vpiemo za komunikacijo na posameznem kanalu in pomeni frekvenco, na kateri bo modul sprejemal. Oddajnik mora imeti za uspeno komunikacijo v ta register vpisano enako vrednost. Oznaka konca konfiguracije Zatem kot signalizacijo prigemo in ugasnemo Tx in Rx LED diodi, s karterima oznaujemo sprejemanje, oziroma oddajanje niza.

Vrtimo se v glavni programski zanki Preverjamo Test bit, ki oznauje, da smo sprejeli zakljuen niz e ta bit ni postavljen, se vrnemo na zaetek glavne programske zanke e je ta bit postavljen, analiziramo sprejeti niz v podprogramu Konec glavne programske zanke

kratek opis podprogramov: Prekinitvena rutina, ko prispe v modul nov znak (prekinitev se zgodi vsaki, ko sprejmemo nov znak) Znak dodamo nizu e je zadnji znak CR(ASCII=13 decimalno), je to konec niza, zato postavimo Test bit Vrnemo se v glavno programsko zanko na mesto zadnje prekinitve

Analiza sprejetega niza (primerjava nizov, akcije, izpis, zaetne vrednosti spremenljivk) Izloimo karakteristini del niza, ki vpliva na izhodne aktivnosti Primerjamo ga s tistimi nizi, ki so predvideni za aktiviranje posamezne aktivnosti e se sprejeti niz ujema s katerim od predvidenih nizov, izpeljemo ustrezne aktivnosti Niz izpiemo na LCD display izbriemo Test bit in postavimo tevec znakov na zaetno vrednost Vrnemo se v glavno programsko zanko

Bascom AVR za zaetnike | 433 MHz komunikacija preko RFM12B modulov

69

Komunikacija preko LAN omreja (modul MOXA NE-4100 serija)


Gregor Maek
V dandananjem asu se vse ve komunikacij seli v LAN svet. Sama implementacija LAN protokola v

obstojee reitve, narejene z mikrokontrolerjem, je lahko enostavna ali pa tudi ne. No, v primeru uporabe MOXA modulov, ki sem jih sluajno nael, ko sem zase iskal hitro reitev za integracijo obstojee aplikacije v LAN okolje, je to povsem enostavno. Od takrat sem te modulke uporabil v ve deset aplikacijah in lahko reem, da delujejo bp od prvega do zadnjega! Obstaja ve tipov modulov, pa odvisno od namena uporabe. Tako imajo nekateri moduli e vgrajeno RJ-45 vtinico, obstajajo tipi za razline tipe komunikacij (RS232, RS485, isti UART) in izberemo pa takega, ki nam glede na nae potrebe najbolj ustreza. e e nimamo razvitega tiskanega vezja, priporoam model NE4100-T, ki ima UART kompatibilni vmesnik (torej priklop direktno na DATA pina mikrokontrolerja) ter je brez RJ vtinice, ki jo pa damo na nae vezje. Sam modulek pa na nae vezje fiksiramo z dvema 2,54 letvicama.

70

/Komunikacija preko LAN omreja (modul MOXA NE-4100 serija) | Bascom AVR za zaetnike

Sam modulek, glede na svojo velikost, v sebi skriva veliko. Na omreju se predstavlja kot svoj strenik in lahko podatke poilja in prejema v ve nainih: TCP server (do 4 povezave), V tem nainu smo omejeni, da se lahko hkrati na modul priklopijo do tirje klientje in prejemajo ter poiljajo podatke po poljubnem portu. Dobra stran te reitve je, da je sistem neodvisen od klientov in deluje tudi, e klientov ni. TCP client, V tem nainu modul deluje kot TCP/IP klient in za poiljanje/prejemanje podatkov potrebuje imeti definiran strenik(e), kamor se povee. Slabost te reitve je, da smo omejeni na vnaprej tono doloene strenike, katerih delovanje je pogoj za prenos podatkov. Virtual COM port, V tem nainu na poljubnem raunalniku v omreju naloimo programsko opremo, ki ustvari virtualna COM vrata. Karkoli sprejme modul, se pokae na teh vratih (in obratho) torej, kot bi imeli kontroler priklopljen direktno na raunalnik. UDP mode. Nain poiljanja UDP paketov po celotnem omreju (je potrebno posluati na pravem naslovu).

Bascom AVR za zaetnike | /Komunikacija preko LAN omreja (modul MOXA NE-4100 serija)

71

Da ne bo zmede, gremo kar od zaetka. Torej pred seboj imamo omenjeni modul, ki za delovanje potrebuje naslednje povezava: Napajanje +5V Povezavo na LAN omreje TX in RX povezavo na mikrokontroler (ob predpostavki, da je GND od napajanja skupni tako mikrokontrolerju kot LAN modulku, sicer potrebujemo e GND povezavo). Odvisno od tipa uporabljenega modula zavisi, ali lahko modul priklopimo na kontroler direktno (UART) ali pa potrebujemo vmes e RS232 napetostni pretvornik (MAX232).

Spletni vmesnik modula - nastavljanje


Ko imamo modul povezan, priklopimo napajanje. ez par sekund lahko dostopamo do modula preko WEB vmesnika za nastavljanje (v brsklalnik vpiemo IP naslov vmesnika, ki ga v omreju samodejno najde priloeni program):

Izpiejo se nam osnovne informacije o modulu, z menijem na levo pa se lahko sprehodimo po vseh nastavitvah, ki jih modul ponuja. V publikaciji ne bom opisoval vseh nastavitev (tisti, ki se bodo s tem ukvarjali, jih najdejo v datasheetu proizvajalca), temve le glavne.

72

/Komunikacija preko LAN omreja (modul MOXA NE-4100 serija) | Bascom AVR za zaetnike

V mrenih nastavitvah doloimo, kako se modul predstavlja v omreju. Omogoa tako statino naslavljanje kot DHCP, kot bombonek pa omogoa tudi poiljanje alarmov preko SNMP protokola in tudi report lastnega IP naslova (e imamo DHCP okolje, kjer se IP modula menja samodejno).

V nastavitvah serijskega porta nastavimo hitrost in druge parametre komunikacijskega porta proti naemu mikrokontrolerju pa v skladu z naimi nastavitvami komunikacije kontrolerja.

Bascom AVR za zaetnike | /Komunikacija preko LAN omreja (modul MOXA NE-4100 serija)

73

Monosti delovanja tu lahko nastavimo e prej omenjene naine delovanja samega modula. Najvekrat bomo verjetno uporabili kar TCP Server, kjer moramo nastaviti tudi port!

e en bombonek modula: Modul ima e sam vgrajen 4 vhodno-izhodne pine, ki jih lahko programsko doloimo kot digitalni vhod ali izhod ter preko WEB vmesnika nadzorujemo ali spreminjamo. Torej, e imamo potrebo le po prenosu tirih signalov, ne potrebujemo niesar razen modula in stabilnega 5V napajanja!

74

/Komunikacija preko LAN omreja (modul MOXA NE-4100 serija) | Bascom AVR za zaetnike

Testiranje TCP/IP povezave med raunalnikom in modulom


Sedaj smo vse povezali, napisali testni program, ki periodino poilja nek tekst, in sedaj elimo ta tekst videti preko mree nekje drugje. Enostavno uporabimo Hyperterminal (ja, isto, kot bi delali s COM portom!). Le-ta ima namre vgrajen tudi TCP/IP (Winsock) protokol, ki ga izberemo ob zagonu (po tem, ko nas vpraa za ime povezave)!

e smo modul konfigurirali kot Server, v polje Host adress vpiemo njegov IP, v polje Port number pa uporabljeno tevilko vrat. Po kliku na OK moramo, e je kaj pravice na svetu e prejemati podatke iz naega kontrolerja in jih seveda (e nam napisan program to omogoa) tudi poiljati. e pa smo modul konfigurirali kot Client, pa smo morali samemu v nastavitvah samega modula doloiti IP strenika, ki je v tem primeru na raunalnik. V tem sluaju moramo v HyperTerminal kot Host adress napisati 127.0.0.1 (oz. njegov lasten IP), saj mora raunalnik delovati v tem primeru kot strenik. Od tu naprej ni ve problemov! e beseda ali dve o virtualnem COM portu, ki je tudi ena izmed monosti. Vsekakor je za zaetnika najenostavneja (saj dejansko deluje, kot bi imeli kontroler fizino priklopljen na raunalnik), vendar jo odsvetujem, saj je potrebno na vsakem raunalniku, kjer bi eleli dostopati do modula, intalirati tovrstno programsko opremo. Je pa to monost za izkoristiti, e elimo na mreo povezati kakno napravo, ki sedaj z nadzornim raunalnikom komunicira preko RS232 (UPS ...) v tem primeru ni potrebne nobene spremembe originalnega programa (npr. UPSa), ta pa lahko tee na katerem koli raunalniku razdalja ni ve problem!

Bascom AVR za zaetnike | /Komunikacija preko LAN omreja (modul MOXA NE-4100 serija)

75

Polja spremenljivk
Vilko Susti

Najprej na kratko o tipih spremenljivk. Le ti so:


Bit (1/8 byte ) Byte (1 byte). Bytes lahko spravi tevila od 0 do 255 brez predznaka. Glede na to, kako ga obravnavamo v programu, pa je to lahko tudi znak po ASCII tabeli, ki jo najdete v Help-u. Samo za primer, znak A tudi potrebuje en bajt prostora in je v njem tevilo 65 v binarni obliki, ali e napiemo drugae &H41 . e z njim raunamo (mu pritejemo recimo 3) bo rezultat 68, e ga izpiemo, bo to 65, e ga pa izpiemo kot znak, bo to A. Za razumevanje si napiimo kratek programek in ga testirajmo z simulatorjem:

76

Polja spremenljivk | Bascom AVR za zaetnike

Integer (dva bajta) Za tevila, ki jih ne moremo spraviti v en bajt, potrebujemo pa ve. V tip integer ki vsebuje dva bajta spravljamo cela tevila s predznakom v obsegu od -32,768 do +32,767. Word (dva bajta). Za cela tevila od 0 to 65535. Long (tiri bajte). Za cela tevila v obsegu od -2147483648 do 2147483647. Single. Kot ne moremo vsa deljena tevila z decimalkami doloiti popolnoma natanno ( vrednost 1/3 lahko samo z omejeno natannostjo napiemo, da je 0.33 ) tako tudi v tem zapisu le z omejeno natannostjo obravnavamo deljena tevila. V spremenljivki tipa Single, ki zasede 4 bajte lahko spravimo tevila v okviru od 1.5 x 10^45 to 3.4 x 10^38 V obe je to dovolj natanno. e pa ne, lahko izberemo Double ki zapie tevilo v 8 bajtih (64 bitih) tevila so potem lahko v obsegu od 5.0 x 10^324 to 1.7 x 10^308 String (do 254 bajtov). Za shranjevanje besed in stavkov. ti imajo vedno po ve znakov, definiramo spremenljivke tipa String. V tako spremenljivko spravimo niz znakov, ki mora biti zakljuen z bajtom vsebine 0. To se pravi, e damo v spremenljivko stavek Dober dan, alost. ki ima z loili vred 18 znakov, bomo porabili 19 bajtov, e enega z vsebino 00, ki pove, kje je konec niza znakov. S

Spremenljivke pa so lahko tudi z indeksom. e na primer v spremenljivki T spravimo izmerjeno temperaturo, moramo pri ve termometrih definirati ve spremenljivk. To lahko kot

(Integer zato, ker je merjena temperatura lahko tudi negativna, torej potrebujemo tak tip spremenljivke, ki pozna predznak) Ali pa definiramo spremenljivko T kot polje spremenljivk:

Na prvi pogled bi lahko rekli, pa kaj potem, saj je to isto, v obeh sluajih smo porabili 3 krat 2 bajta. No, ne gre za prihranek pri porabi bajtov ampak pri nainu programiranja. Sedaj lahko programiramo tako, da s pomojo dodatnega parametra indeksa, iste podprograme (podprogram za meritev temperature, podprogram za izpis temperature) uporabimo za obdelavo razlinih temperatur, termometrov. Primer:

Pri tako majcenem podprogramu ni videti velike prednosti, a pri bolj obsenih podprogrami se esto tak nain programiranja izplaa.

Bascom AVR za zaetnike | Polja spremenljivk

77

Je pa potrebno pri takem nainu paziti, da nam indeks ne 'uide' iz z definicijami doloenih mej. Kaj bi se zgodilo, e bi napisal

Ker sem v definicijah omenil, da je polje spremenljivk T v samo treh pojavah, in sem neposredno izza polja definiral spremenljivko X, Bascom ne more vedeti, ali bo spremenljivka x v okviru definicij ali ne, in bo vrednost 17 napisal na sledee mesto, na mesto, kjer bi sicer bilo etrto mesto v spominu, in bo s tem prekril tam definirano spremenljivko. V naem sluaju je to spremenljivka X. Preverite to na simulatorju. Pri uporabljanju spremenljivk z indeksi, take napake povzroe spremembe podatkov v pomnilniku, ki si jih ne znamo razloiti in jih je teko najti, ko so enkrat vgrajene v program. Program in mikroprocesor z njim 'podivja', in se nesmiselno obnaa. Viji programski jeziki poznajo vedimenzionalna polja, kjer spremenljivko oznaimo z ve indeksi, recimo T(x,y). Jeziki nivoja Basic, kar Bascom je, pa dovoljujejo le enodimenzionalne indekse.

e en primer uporabe spremenljivke z indeksi. Recimo, da moramo upravljati temperaturo. Od upravnika dobimo morda po SMS-u ali kako drugae informacijo 'elena temperatura je 22C' ki jo preberemo seveda v spremenljivko tipa String. Ne vemo natanno, kje v nizu se nahaja tevilo, ki je dejansko krmilna informacija. Moramo jo izluiti. Morda tako:

Vedno je dobro pogledati poroilo o prevedenem programu. Izvleek iz poroila:

78

Polja spremenljivk | Bascom AVR za zaetnike

Vidimo, da sta spremenljivki Text in Znaki postavljeni na isto mesto v pomnilniku. V for next zanki smo potem vse znake teksta, ki niso tevilke, spremenili v znak presledek (&H20). Po tej obdelavi bo v spremenljivki Text ostala le dva znaka, 22. S funkcijo Val lahko potem bascom ta dva znaka pravilno prevede v binarno tevilo in ga da v spremenljivko, v tem primeru Temperatura. Kot vidite, ta program ne opazi, da je elena temperatura -22C in ne 22C! Popravite program tako, da bo znak minus (&H2D) ostal na mestu in ne bo spremenjen v &H20. Potem bo funkcija Val zaznala znak minus in pravilno prevedla temperaturo v -22! S tem primerom prikaem pogost nain obravnavanja vsebine v poljih tipa String in sicer direktno znak po znak na osnovi poloaja znaka v samem nizu. Na ta nain lahko tudi sestavljamo informacijo znak po znak v nizu, ne smemo pa pozabiti, da mora biti niz zakljuen z znakom &H00 in paziti moramo, da nam indeks 'ne uide' iz okvira doloenega v definicijah.

Bascom AVR za zaetnike | Polja spremenljivk

79

GSM modem Wavecom)


Matja Skubic

Falcom

A2

(A2D,

GSM modem je zunanja naprava, ki jo prikljuite na raunalnik preko standardne RS232 povezave. V splonem je naprava narejena za povezavo dveh naprav, lahko pa se ga uporablja v kombinaciji s strenikom z ustrezno aplikacijo, ki generira SMS sporoila - SMS strenik. Modem uporablja standardni vmesnik RS232, zato je enostaven za priklop na mikrokontrolerske sisteme. Modem ima: Prikljuek za anteno Prikljuek za napajanje DSUB9 konektor (Rs232 vmesnik) RJ45 konektor priklop slualke in mikrofona.

Za kontrolo delovanja sta na RJ45 konektorju montirani dve LED diodi rumena - napajanje zelena signal GSM (ko je sistem povezan z omrejem zelena LED dioda utripa)

80

GSM modem Falcom A2 (A2D, Wavecom) | Bascom AVR za zaetnike

Opis vmesnikov za Modem Falcom:


Interface A - Napajanje sistema Sistem se napaja na konektorju - A (RJ-9). Napajalna napetost je 10.8 31.2 DC

Modem vkljuimo v delovanje, ko pin3 Ignition in pin4 prikljuimo na napajalno napetost. Pin3 in Pin4 sta lahko povezana skupaj. Pin3- Ignition se lahko uporabi za vklop oz. izklop modema. Interface B Seijski vmesnik V24 RS232

Za povezavo modema z raunalnikom potrebujemo klasini povezovalni kabel RS232C. Zadostuje e, da poveemo Pin2 (Txd), Pin3 (Rxd) in Pin5 (GND). e se modem prikljui na mikrokontrolerski sistem je potrebno uporabiti RS232 vmesnik (integrirano vezje MAX 232) za prilagoditev elektrinih nivojev med modemom in mikrokontrolesko napravo. Opcijsko je mono preko konektorja prikljuiti tudi napajalno napetost. To je odvisno od tipa modema in je potrebno pred priklopom obvezno preveriti.

Bascom AVR za zaetnike | GSM modem Falcom A2 (A2D, Wavecom)

81

Interface C RJ45 Vmesnik za Audio in opcijsko RS232

Audiointerface:

Electret-Microphone Loudspeaker>50OHM Ground

Na vmesnik C se lahko prikljuijo audio naprave mikrofon in slualka/zvonik. V kolikor se modem prikljuuje na neko drugo napravo je potrebno upotevati dejstvo, da je izhod simetrien, zato je potrebno vmesnik prilagoditi z napravo. e prikljuujemo interface C na mikrokontroleski sistem (DTMF sprejemnik) je potrebno vhod naprave prilagoditi. Ena izmed reitev je uporaba loilnega transformatorja.

Interface D GSM antena

Na modem se lahko prikljui katerakoli GSM antena z ustreznim FME konektorjem.

Odvisno od kvalitete signala GSM omreja se izbere ustrezna antena. 82 GSM modem Falcom A2 (A2D, Wavecom) | Bascom AVR za zaetnike

Na povezovalnem antenskem kablu modema Falcom se nahaja FME adapter.

Prostor za SIM kartico se nahaja na spodnji strani modema.

Nekatere izvedbe modemov Falcom imajo poleg navedenega nosilca SIM kartice tudi internega v notranjosti modema (A2).

Reset tipka
Modem ima na spodnji strani tudi Reset tipko, s katero se modem lahko resetira. Spodnja slika prikazuje vse vmesnike na modemu Falcom:

Bascom AVR za zaetnike | GSM modem Falcom A2 (A2D, Wavecom)

83

Tehnini podatki modema Falcom


Dimensions: 115mm x 54mm x 33mm (BxHxL) Weight: 160g Power Supply: 10,8...31,2VDC 235mA(max.)12VEGSM* 190mA(max.)12VDCS* 48mA(idle)12V* IF MODEM IS SWITCHED OFF (BYAT+CPOFORAT+CFUN=0), BUT POWER IS STILL SUPPLIED: 25mA(off)12V* *Serial interface is applied and working. Temperature Range: Storage:-20Cto+70C Use:-20Cto+55C Modem je Dualband 900/1800 MHz.

Kratice
ETSI GSM IMEI ME PLMN PIN PUK RP RXQUAL SIM SMS SMS/PP TA TE TP European Telecommunications Standards Institute Global Systemfor Mobile communications International Mobilestation Equipment Identity Mobile Equipment Public Land Mobile Network Personal Identification Number Personal Unblocking Key Receive Protocol Received Signal Quality Subscriber Identity Module Short Message Service Short Message Service/Point-to-Point Terminal Adapter Terminal Equipment Transmit Protocol

Priklop modema
Pred prvo uporabo je potrebno modem nastaviti. Za to se uporabljajo Hayes compatibil AT ukazi, ki jih poznamo tudi iz klasinih modemov. Podrobneji opis AT ukazov najdete na : http://www.bonusdata.ch/GSMModem/a2dman.pdf oz na priloenem CD-ju.

84

GSM modem Falcom A2 (A2D, Wavecom) | Bascom AVR za zaetnike

AT UKAZI
GSM 07.05 AND 07.07 COMMANDS
AT+CGMI AT+CGMM AT+CGMR AT+CGSN .IME informacija AT+CIMI AT+CCID NETWORK REGISTRATION COMMANDS AT+CPIN ................Vpis kode PIN AT+CREG ................Pregled t. bazne postaje AT+COPS AT+CSQ ..................Kvaliteta signala.0-30..od -113do -53dBm AT+CCED SERIAL LINK CONTROL COMMANDS ATE ATQ ATV AT&C AT&D AT&S AT+IPR ....................Nastavitev Baud rate (9600) AT+ICF AT+IFC CALL CONTROL COMMANDS AT+CICB ATD; .........................Klicanje Voice AT+SPEAKER AT+VGR ..................Nastavitev glasnosti zvonika AT+VGT ..................Nastavitev glasnosti mikrofona AT+VTS AT+VTD AT+SIDET AT+ECHO ATD ...........................Klicanje na telefonsko tevilko ATDL ATA ............................Javljanje na telefonski klic ATS0...........................Nastavitev avtomatsdkega javljanja t. pozivov ATH ............................Prekinitev zveze +++ .............................Prehod v AT mode ATO AT+CBST AT%C AT+DS AT\N Remote disconnection CALL INFORMATION COMMANDS AT+CR AT+CRC AT+ILRR AT+DR CALL SETTING COMMANDS AT+CCFC AT+CCWA AT+CLIP .....................Nastavitev CLIP prikaza tel. t. klicoega AT+CLIR ....................Nastavitev CLIR skrita tevilka AT+COLP

Bascom AVR za zaetnike | GSM modem Falcom A2 (A2D, Wavecom)

85

PHONEBOOK COMMANDS AT+CPBS AT+CPBR ...................Iskanje imenika po poziciji AT+CPBF .....................Iskanje imenika po tekstu AT+CPBW ...................Pisanje v imenik MESSAGE HANDLING COMMANDS AT+CSCA. Nastavitev tevilke SMS centra mobilnega operaterja prednastavljen Mobitel AT+CMGL AT+CMGR .................Branje SMS sporoila AT+CMGS .................Poiljanje SMS sporoila AT+CMSS AT+CMGW AT+CMGD MESSAGE SETTING COMMANDS AT+CSMS AT+CPMS AT+CMGF ..................Nastavitev naina poiljanja SMS TEXT/PDU AT+CSMP AT+CSDH AT+CSCS AT+CNMI AT+CSCB FAX CLASS 1 COMMANDS AT+FCLASS AT+FTM AT+FRM AT+FTH AT+FRH AT+FTS AT+FRS FAX CLASS 2 COMMANDS AT+FDT AT+FDR AT+FET AT+FPTS AT+FK AT+FBOR AT+FBUF AT+FCQ AT+FCR AT+FDIS AT+FDCC AT+FLID AT+FPHCTO Fax Class 2 indication messages FUNCTIONALITY COMMANDS A/ AT+GCAP AT+CLCK AT+CPWD AT+CFUN AT+CPAS AT+CPOF STORING/RESTORING COMMANDS AT&W ............................Shranitev vseh parametrov AT&F ..............................Nastavitev privzetih vrednosti AT+CSAS AT+CRES

86

GSM modem Falcom A2 (A2D, Wavecom) | Bascom AVR za zaetnike

Opomba: S sivo barvo so oznaeni vsi AT ukazi, ki jih pogosteje uporabljamo. Podrobneji opis najdete v datasheet-u.

GSM data services


300...14400 BPS, asynchronous, transparent and non-transparent (V.21, V.22, V.23, V.22bis, V.26ter, V.32, V.34, V.110)

Bascom AVR za zaetnike | GSM modem Falcom A2 (A2D, Wavecom)

87

MiniPin in SMS
Matja Skubic

Uvod
MiniPin je postal iroko namembno orodje. Na njega se lahko prikljui veliko tevilo naprav. Grafini LCD prikazovalnik, Touch screen, SD kartica, 1 Wire, i2C naprave, V tem prispevku elim prikazati e eno monost- priklop GSM modema na MiniPin in poiljanje ter branje SMS sporoil. Skozi lanke v reviji Svet Elektronike je bilo objavljenih veliko reitev, kaj in na kaken nain lahko prikljuimo na MiniPin. e smo izmerili temperaturo s sondo DS1820 smo lahko rezultat prikazali na LCD prikazovalniku, pritisk tipke oz. stanje doloenega izhoda/vhoda na led diodi Vse to lahko sedaj poljemo preko modema v obliki SMS sporoila, lahko pa preberemo SMS in s tem sproimo doloeno akcijo.

Primer poiljanja SMS:


Stanje Alarma na vikendu je: Dimni senzor: OK PIR senzor : OK Napetost 230V: Prisotna Pe-delovanje: Vkljuena T emperatura je: 42 st.C.

Primer Sprejema SMS : SMS poljemo na GSM modem- MiniPin


Vklop port Izklop port

Primer s tem ukazom postavimo PortB na 00000000 oz 11111111. LED diode na portu B svetijo takrat, ko je portB 0 - nizko stanje izhoda

88

MiniPin in SMS | Bascom AVR za zaetnike

Priklop Falcom modema na MiniPin


Na MiniPin prikljuimo GSM modem Falcom A2D

z namenskim kablom na konektor K1. (tam kjer imamo RS232 port). Modem ima e vgrajen konverter signalov RS232 MAX232, zato moramo na ploici MiniPin uporabiti port, ki je povezan na integrirano vezje MAX232 in nastaviti ustrezne mostike. Pred vklopom napetosti je potrebno v modem vloiti veljavno SIM kartico. Nosilec za SIM kartico se nahaja na spodnji strani GSM modema.

Priporoljivo je da pred vstavitvijo SIM kartice v modem izkljuite PIN kodo. To pomeni, da se bo modem po priklopu na napajanje sam prijavil na mobilno omreje. V tem primeru ne priakuje ukaza AT+CPIN =XXXX. To je zelo pomembno v primeru, ko piemo program v mikrokontroler. Zgodi se namre lahko, da se PIN pravilno ne bo vpisal. Postopek ponovimo 3 krat, potem pa se lahko SIM kartica zaklene. Za odklep je potrebna potem PUK koda. Postopek ni problematien, le zavedati se moramo, kaj delamo. Prav tako se prepriajte, da je na kartici SIM nastavljena tevilka SMS centra (Mobitel: +38641001333, Simobil: +38640441000). Na modemu je prednastavljen SMS center Mobitel. V kolikor uporabljate SIM kartico drugega operaterja (Simobil) je potrebno spremeniti tevilko SMS centra (+38640441000). Nastavitev preverimo z ukazom:
AT+CSCA? Vrne tevilko SMS centra.

Bascom AVR za zaetnike | MiniPin in SMS

89

tevilko SMS centra spremenimo z naslednjim ukazom:


AT+CSCA="tevilka" Vnos tevilke SMS centra (prej uporabi ukaz CMGF=1).

Za testiranje je dobro uporabiti predplaniko SIM kartico, ker nam na primer ob nekontrolirani uporabi Loop zanke lahko povzroi najve 5 EUR kode. Na konektor modema ( Interface D) prikljuimo 50 Ohm anteno z enskim FME konektorjem. Napajanje modema prikljuimo s posebnim kablom na interface A modema Pin 1 3 in 4 pri emer moramo paziti da so: PIN 1- GND PIN3-(ignition) + 10.8- 31.2V DC PIN4 (power) + 10.8- 31.2V DC

Napajalni kabel poveemo z napajalnim konektorjem razvojnega orodja MiniPin. Priporoljiva napetost napajanja je 12VDC. To je tudi napetost, s katero lahko brez teav napajamo MiniPin. Zaradi GSM modema je potrebno uporabiti zunanji napajalnik. MiniPin v kombinaciji programatorja e ponuja napajanje +5V preko USB povezave. Ko prikljuimo napajanje na modem se na njem (Interface C) prige rumena LED dioda. e je SIM kartica veljavna pa po cca. 10 sekundah zane utripati zelena LED dioda. To je tudi znak, da se je modem pravilno prijavil v GSM omreje. Modem smo prikljuili na napajanje. e se je povezal na omreje GSM (rumena sveti, zelena led utripa) je potrebno napisati program, ki bo poslal oz, sprejel SMS sporoilo. Preden smo GSM modem prikljuili na MiniPin je potrebno v modem vpisati doloene inicializacijske parametre. Te vpisujemo preko AT ukazov. Komunikacija modemov GSM z osebnim raunalnikom ali mikrokontrolerjem namre poteka ob pomoi Hayesovih ukazov oziroma ukazov AT. Gospod Hayes je leta 1977 postavil temelj modemski komunikaciji. Naelo le-te temelji na izmenjevanju podatkovnega (data mode) in ukaznega (command mode) prenosa podatkov. Ukaze AT poiljamo v ukaznem nainu za inicializacijo zaetnih nastavitev, spreminjanje hitrosti prenosa podatkov, klic nove telefonske tevilke itn. V podatkovnem nainu prenaamo iste podatke, na primer prenos datotek in elektronsko poto. 90 MiniPin in SMS | Bascom AVR za zaetnike

Ukaz AT izhaja od angleke besede attention (pozor) in opozarja, da za nizom AT sledi ukaz modemu. Inicializacijo lahko izvedemo na dva naina: 1. PC raunalnik - Pri nastavitvah, lahko uporabimo irok nabor AT ukazov za modem. To lahko storimo tako, da osnovne nastavitve modema izvedemo kar s pomojo PC raunalnika in uporabo terminal emulatorja (Hyper terminal, secure CRT, Terminal Bray, ) 2. Mikrokontroler - Mono pa je vse te ukaze vpisati miokrokontroler. Pri priklopu napajanja se vsakokrat izvede vpis vseh parametrov, ki jih nastavimo. Tukaj je dobro biti previden, ker je tevilo vpisov v interni pomnilnik modema omejeno. To pomeni, da e elimo vsakokrat, ko vkljuimo modem shraniti njegove nastavitve uporabimo en cikel pisanja. Verjetno je bolje, e modem pred uporabo nastavitmo preko serijskega kabla in terminal emulatorja, v mikrokontrolerju pa sprotno dodelimo posamezne (ne sistemske) ukaze, ki jih modem opravi za vsako nao operacijo posebej. Modem je prednastavljen na 9600, 8,n,1. Teh parametrov v principu ni potrebno spreminjati. Hitrosti prenosa (baudrate 9600) ustrezajo, ker pri poiljanju in sprejemu SMS sporoil (max 160 znakov s presledki) ne potrebujemo posebno velike hitrosti prenosa. Modem (interface B) poveemo z MiniPinom s povezovalnim kablom.

Kabel je IDC-> D-SUB9 M pri emer so uporabljeni le trije pini (2-Tx, 3-Rx, in 5-GND)

Bascom AVR za zaetnike | MiniPin in SMS

91

Poiljanje SMS sporoila


Za poiljanje sporoila SMS potrebujemo le dva osnovna ukaza AT. (AT+CMGF=1, AT+SMGS=''tel stevilka'') Nastavitve modema in serijkega porta MiniPin naj bodo naslednje: Baudna hitrost: 9600 tevilo podatkovnih bitov: 8 tevilo konnih bitov: 1 Pariteta: nobena
$crystal = 11059200 $baud = 9600

Nastaviti je potrebno pravilni Baud rate. V tem primeru 9600.


Tp3 Alias Pind.2 definicija tipke (e uporabimo zunanjo prekinitev to ni potrebno)

Definiramo tipko za poiljanje SMS sporoila (Int0).


On Int0 Send_sms Enable Int0

Z ukazom AT+CMGF=1 izberemo tekstovni nain poiljanja SMS sporoil. (1 tekstovni nain, 0PDU nain)
Print "AT+CMGF=1" 'definiram SMS nacin

Ukaz za poiljanje SMS sporoila.


Print "AT+CMGS=" ; Chr(34) ; "041999888" ; Chr(34)
Chr(34)

pomeni '' (dvopije) Telefonsko tevilko moramo modemu poslati kot tekst v narekovajih. Po ukazu za poiljanje je potrebno poakati cca 100ms in za tem lahko napiemo nae sporoilo. S pritiskom na tipko T3 sproimo poiljanje SMS sporoila.
" ; Portb ;

Print "Stanje PORTB

V tem primeru poiljamo tekst "Stanje PORTB " in stanje PortB. Vsak del teksta je zapisan v novi vrstici. Na koncu poljemo e ukaz za zakljuek poiljanja SMS sporoila:
Print Chr(26) Chr(26)pomeni ^Z (ctrl+Z)

Tekst, ki ga sprejmemo na telefonskem aparatu GSM kot SMS sporoilo je prikazan:


Stanje PORTB 11111111

92

MiniPin in SMS | Bascom AVR za zaetnike

Sprejem SMS sporoila


Za sprejem sporoila je uporabljena funkcija Getline. Funkcija omogoa branje vsega, kar prispe na serijski port mikrokontrolerja. Program je napisan tako, da prebere prvih pet SMS sporoil shranjenih na SIM kartici. Ciklino bere pet SMS sporoil. V kolikor se pojavi tekst sporoila Vklop port ali Izklop port se prigejo LED diode na PortuB - MiniPin. Ker program uporablja samo prvih pet SMS sporoil je potrebno prvih pet sporoil izbrisati. To storimo s pritiskom na tipko T4. Pri sprejemu podatkov je uporabljen serijski buffer velikosti 100 znakov.
Config Serialin = Buffered , Size = 100

Tukaj je j potrebno povdariti, da buffer zasede RAM. To pomeni, da moramo optimalno doloiti velikost bufferja. Funkcija Getline prebere vse znake do konca, dokler se ne pojavi CRLF. e elimo sprejeti 2 vrstico, kliemo funkcijo dvakrat. Znotraj funkcije Getline je uporabljena For zanka, ki omogoa izstop iz funkcije, kljub temu, da se na koncu ni pojavil CRLF. To je pomembno, ker bi se drugae program zazankal v neskonni zanki (e bi uporabili Do-Loop). Iz celotnega SMS sporoila izreemo uporabno informacijo:
Gsm = Mid(sret , 20 , 12)

GSM tevilko poiljatelja doline 12 znakov na poziciji 20.


Ukaz = Mid(sret , 1 , 12)

Ukaz je spremenljivka tipa String, ki omogoa sprejem ukaza, ki ga napiemo v SMS sporoilu. Tukaj je doloena dolina 12 znakov. Znotraj glavne zanke sta uporabljena dva if stavka, ki priigata LED diode portB glede na SMS sporoilo:
If Ukaz = "Vklop port" Then Portc = &B00000000 End If If Ukaz = "Izklop port" Then Portc = &B11111111 End If 'Led sveti

'Led ne sveti

Pritisk tipk Poiljanje SMS-T3 in Brisanje SMS -T4 je izveden z zunanjo prekinitvijo.
On Int0 Send_sms Enable Int0 On Int1 Delete_sms Enable Int1

Vse skupaj se prikazuje tudi na LCD prikazovalniku 16x2. V tem prispevku je bil namen prikazati enostaven nain, kako lahko poljete, preberete in na koncu izbriete SMS sporoilo. Od primera do primera pa je odvisno, kako boste zadevo uporabili. Vsak si bo to prikrojil po svojih eljah in potrebah. Bascom AVR za zaetnike | MiniPin in SMS 93

Kabel tester
Matja Skubic

Uvod
Velikokrat se nam pri prikljuevanju naprav na lokalno mreo, ISDN modem ali telefon zgodi, da kaj ne deluje. Prvo je potrebno preveriti kabel. Najvekrat je napaka na konektorju, ali pa je izbran napaen kabel. Kako najhitreje odpraviti takne teave? Uporabiti univerzalni tester za kable. Pred nekaj asa se mi je zgodilo, da sem prikljuil raunalnik na LAN mreo preko UTP CAT-5 kabla. Ker povezava ni in ni uspela, sem pomislil, da je napaka v napani nastavitvi gonilnikov na PC raunalniku. Toda po daljem eksperimentiranju sem ugotovil, da je napaka le na kabelski povezavi. Ko sem elel premeriti kabel sem naletel na naslednji problem, ker univerzalni merilnik (Ohm-meter) nima tako tankih prikljunih pipetk, da bi lahko ohmsko pomeril posamezne pine. Z nekaj teavami sem potem le reil problem. Seveda napaka je bila v kabelski povezavi, toneje kabel je bil prekinjen v doloenem poloaju. Sklenil sem, da si izdelam tester za kable, da bom v bodoe laje reeval tovrstne probleme. Tako je tudi nastala ta reitev. Napravica se mi zdi zanimiva. Mislim, da bi e komu prila prav, zato objavljam njen podroben opis.

94

Kabel tester | Bascom AVR za zaetnike

Tester omogoa testiranje naslednjih kablov: UTP 100 UTP 10 UTP cross connect ISDN Telefon Testiranje posameznih PIN-ov

Ostale funkcije pa so: Test RS232 PIEZZO

Kabel tester je sestavljen iz dveh osnovnih delov ter dveh dodatnih vezij. mikroprocesorska enota oddaljena enota z LED diodami vmesnik RS232 kabel za testiranje kratkega stika

Naprava deluje tako, da med glavno enoto in oddaljeno enoto prikljuimo kabel, ki ga elimo testirati. Preko sistema menijev izberemo tip testa in poenemo meritev. Na glavni enoti se prikazuje status meritve, na oddaljeni enoti pa se po vrstnem redu priigajo led diode. e se led diode ne priigajo po oznaenem vrstnem redu ali svetita dve led diodi hkrati ali ne sveti nobena, pomeni, da je s kablom nekaj narobe (napana povezava, kratek stik, prekinjen kabel).

Mikroprocesorska enota
Glavna mikroprocesorska enota skrbi za vse funkcije, ki jih ima kabel tester. Preko tipk na enoti lahko izbiramo med posameznimi tipi kablov. Za nastavitev testiranja, izbiro menijev in postopek merjenja nam je v pomo dvovrstini LCD prikazovalnik, preko katerega lahko preberemo trenutno stanje in vidimo, kateri pin je trenutno pri meritvi aktiven. Prikljuek za kabel na napravi je standardni konektor z oznako RJ-45, v katerega lahko prikljuimo UTP, ISDN, telefonski kabel ali dodatka za testiranje RS232 in merjenje kratkega stika. Za napajanje glavne enote se uporablja 9V baterija z oznako 9V 6LR61 in se nahaja v notranjosti naprave. Na napravo je mono prikljuiti poleg baterije zunanji vir napajanja (12V). Prikljuek se nahaja na zgornji strani naprave. Naprava ima na spodnji strani konektor z ISP vodilom, preko katerega lahko napravo programiramo.

Bascom AVR za zaetnike | Kabel tester

95

O sestavnih delih glavne enote, tu ni kaj veliko povedati. Najve pove elektrina shema na sliki4. Enota je sestavljena iz estih sklopov in sicer:

Tipke za izbiro menija Napajalni del s napetostnim stabilizatorjem 7805 Piezzo vezje LCD prikazovalnik LED dioda za prikaz statusa delovanja Mikrokontroler AT mega 8515

Srce testerja je Atmelov mikrokontroler AT-MEGA8515. Velikost programskega pomnilnika je 8Kb, kar zadoa eljenim funkcijam, ki so izvedene z BASCOM AVR. e bi uporabili kateri drug mikrokontroler (MEGA 16 ali Mega128), bi lahko s tem testerjem poleg ostalega, merili tudi napetost, temperaturo,...

Podrobneji opis mikrokontrolerja AT-MEGA 8515 si lahko ogledate na http://www.atmel.com/dyn/general/site_search.asp

Slika1: Pinout mikrokontrolerja LED dioda Status je dvobarvna in je vezana med PortD4 in PortD5. Polariteta izhoda pa doloa barvo. Zelena/Rdea. Zelena prikae vklop naprave, rdea pa sveti takrat, ko se meritev izvaja. Uporabljeni upori v vezju so SMD, kar je zmanjalo velikost vezja. Prikljuki mikrokontrolerja so varovani z upori 220 ohm. 96 Kabel tester | Bascom AVR za zaetnike

Opis delovanja
Glavna mikrokontrolerska enota vsebuje sistem menijev, preko katerih se premikamo spomojo tipke Tp3 (MENU/END). S pritiskom na tipko Tp4 (START) zanemo z meritvijo. LED dioda spremeni barvo iz zelene v rdeo. Na glavni enoti se prikae status izhoda.

Primer prikaza za merjenje UTP 100 kabla:

Slika2: LCD prikazovalnik testiranja UTP100 kabla

V zgornji vrstici prikazovalnika vidimo: tip kabla, barvo parice, kratek opis signala, tevilka pina, ki se trenutno testira

V spodnji vrstici prikazovalnika vidimo, kateri pin je trenutno aktiven. tevilka pina ponazarja tevilko prikljuka, ki mora ustrezati LED diodi oddaljene enote, ki takrat sveti. Meritev poteka avtomatsko. To pomeni, da se izhodi zaporedno (odvisno od izbranega tipa kabla) postavljajo na 1. Vsak naslednji izhod spremeni stanje po 1 sekundi.

Za konanje meritve ponovno pritisnemo tipko Tp3 (MENU/END).

Vsebina prikazovalnika je pri testu UTP 10, ISDN, Telephone podobna, le da so tu uporabljeni samo tisti pini konektorja, ki jih potrebujemo za posamezen kabel. Testiranje UTP cross kabla je podobna UTP 100. Tukaj je zaporedje vkljuevanja pinov zaradi krinih povezav drugano. Za UTP cross sta izbrani dve varianti. Ena ima v primerjavi z drugo, zrcalno povezane pine. V praksi sem uporabil oba tipa in delujeta v redu. UTP cross A 7 8 1 4 5 2 3 6 UTP cross B 3 6 1 4 5 2 7 8

Bascom AVR za zaetnike | Kabel tester

97

Posebnost testa je izbira menija TEST PIN. Tu imamo poleg tipk Tp4 (START) in TP3 (MENU/END) na voljo e tipko TP1-SELECT, s katero se premikamo po posameznih pin-ih. Prednost taknega testa je, da lahko pregledamo vsako povezavo posebej poljubno dolgo, ker testiranje ne poteka avtomatsko. V spodnji vrstici prikazovalnika za vsak poloaj testa utripa segment, ki ponazarja LED diodo. Testiranje zakljuimo s hkratnim pritiskom na tipki TP1 (SELECT) in TP3 (MENU/END).

Slika3: LCD prikazovalnik Test PIN

LED dioda Status je pri vsakem aktivnem izhodu rdee barve.

LCD Display

Slika4: Shema glavne mikroprocesorske enote

98

Kabel tester | Bascom AVR za zaetnike

Delovanje izhodov testerja


Vsi kabli, ki jih lahko testiramo s testerjem so simetrini in nimajo opleta. To pomeni, da je potrebno za vklop npr. 8.LED diode na oddaljeni enoti postaviti vse pine od 0-6 na logino 0, pin 7 pa postaviti na logino 1. Tak postopek je izbran za vsako LED diodo posebej.

Konektor je prikljuen na PortC mikrokontrolerja AT MEGA 8515. Izhodi so varovani z upori 220E. To verjetno ne bi bilo dovolj, e bi napravo prikljuili na iv ISDN prikljuek. Napetosti na njem se gibljejo okrog 100V. Izhode bi v tem primeru morali zaititi z zener ali supressor diodami (6,8V).

Kot je e opisano zgoraj, LED diode priigamo s kombinacijo loginih 1 in 0 direktno med pini mikrokontrolerja. Takna reitev ne bo delovala z uporabo mikrokontrolerja druine 8051. Tu je potrebno LED diodo prikljuiti med (+) plus in izhodnim pin-om kontrolerja. Iz tega razloga je za enostavnejo reitev, uporabljen mikrokontroler druine AVR.

Tiskano vezje in montana shema glavne enote

Slika5: Tiskano vezje in montana shema glavne enote Bascom AVR za zaetnike | Kabel tester 99

Oddaljena enota z LED diodami


Oddaljena enota je sestavljena iz osmih LED diod. Tu ne potrebujemo dodatnega napajanja, ker se celotno vezje napaja iz glavne enote. LED diode so postavljene v vrsto. Oznaene so od 1 do 8. Ko je bil preizkuen izbran kabel in je bilo njegovo oienje ustrezno, se LED diode priigajo naraajoe po vrstnem redu. To je tudi znak, da so povezave v kablu pravilne. V kolikor povezave niso v redu, se LED diode ne priigajo po vrstnem redu. Lahko hkrati svetita dve LED (kratek stik med pinoma) ali pa zaradi prekinitve v kablu LED sploh ne zasveti. Vsaka LED dioda ima paralelno vezano diodo 1N4148. Dioda omogoa sklenitev tokokroga z glavno enoto.

Slika6. Vezava LED diod oddaljene enote testerja.

100

Kabel tester | Bascom AVR za zaetnike

Tiskano vezje im montana shema oddaljene enote

Slika7: Tiskano vezje in montana shema oddaljene enote

Bascom AVR za zaetnike | Kabel tester

101

Vmesnik RS232
Velikokrat se zgodi, da elimo na hitro preizkusiti serijski RS232 port. Potrebno je sprogramirati kratko proceduro in uporabiti testno vezje. Za takno testiranje se porabi kaj nekaj asa in dodatnega hardware-a. S pomojo tega dodatka pa sedaj to lahko storimo kar s tem testerjem.

Glede na to, da je za priklop uporabljen konektor RJ-45, je mono poleg Ethernet kabla prikljuiti e dodatna vezja. Ker je v testerju uporabljen zmogljiveji mikrokontroler in je v njem ostalo e nekaj prostega programskega pomnilnika, sem se potem dodal e ta dodatek. Pri samem vezju ni kaj veliko dodati. Na mikrokontrolerju je izbran Software-ski UART, kateremu nastavljamo Baud rate med 1200b/s do 19200b/s, za serijsko komunikacijo pa je uporabljen MAX-ov MAX232.

Slika8: Dodatno vezje za RS232 adapter

Delovanje V testni konektor RJ45 prikljuimo vezje RS232, in vse skupaj poveemo z osebnim raunalnikom. V meniju izberemo RS232 in pritisnemo tipko SELECT.

Slika9: LCD prikazovalnik RS232 S tem nastavimo Baud rate. S potrditvijo izbire hitrosti prenosa, se na serijskem vmesniku pojavi 100 vrstic zapisov teksta. Po zadnjem izpisu lahko preko terminal emulatorja poljemo eljeni string na LCD zaslon. 102 Kabel tester | Bascom AVR za zaetnike

Tiskano vezje RS232 adapterja

Slika10: Tiskano vezje za RS232 adapter

Kabel za testiranje kratkega stika


Poleg vsega natetega, sem dodal e funkcijo merjenja kratkega stika (piezzo), ki jo uporablja veina univerzalnih intrumentov. S tem dodatkom lahko enostavno testiramo povezavo.

Slika11: Dodatek za merjenje kratkega stika

Tester testira kratek stik med PortC.3 in portC.4. Kabel nima nobenega dodatnega vezja.

Slika12: LCD prikazovalnik Piezzo

Bascom AVR za zaetnike | Kabel tester

103

Prikljuni konektor Kabel, ki ga vkljuimo na napravo mora imeti RJ45 konektor. Pini prikljukov se tejejo, kot je oznaeno na sliki13:

Slika13: Konektor RJ45

Pregled povezav posameznih kablov egled


UTP kabel je 8 (osem) ilni, povezava je pin pin-pin.

Slika14: UTP kabel 100

104

Kabel tester | Bascom AVR za zaetnike

UTP Cross kabel

Slika15: UTP cross kabel

UTP 10

Slika 16: UTP kabel 10 ISDN

Slika 17: ISDN kabel

Bascom AVR za zaetnike | Kabel tester

105

Telefon

Slika 18: Telefonski kabel

Poraba in napajanje vezja


Glavno mikrokontrolersko vezje je napajano z baterijo 9V. Zaradi manje porabe, so vsa oddaljena vezja brez napajanja. Napajajo se iz mikroprocesorske enote.

Upori oddaljene enote so velikosti 1K8, kar zadostuje za tok:

(5V-0'7)/(1K8+1K8+220E+220E)= 1.0mA.

To je tudi dovolj, e uporabimo visokosvetleo rdeo LED diodo. Klasina LED dioda porabi za normalno svetilnost od 5-10mA.

Skupna poraba pri delovanju z alfanumerinim LCD prikazovalnikom znaa okoli 14mA. Predvidena je tudi uporaba NiCd ali NiMHbaterije, ki jo lahko napolnimo. Za to moramo uporabiti e dodatek k vezju. Tega dodatka ni na tiskanem vezju.

Z intrumentom DMM 750 sem pomeril tok naprave ter najmanji in najveji tok Dobil sem naslednji rezultat:

106

Kabel tester | Bascom AVR za zaetnike

Slika 19: Poraba testerja

ezja Kot lahko vidimo, se poraba vezja giblje med 13.07 in 13.51mA. Tako bo 9V baterija zadostovala za priblino 50 ur delovanja (750mAh).

Zunanji napajalnik uporabimo v primeru, kadar nimamo pri roki ustrezne baterije ali pa elimo baterijo napolniti. V tem primeru moramo uporabiti NiCd ali NiMh baterijo. Konektor za polnjenje baterije je bil dodan ele po tem, ko je bilo e vse zmontirano v ohije, zato ga na tiskanem vezju ni.

Slika 20: Dodatmo vezje za polnjenje NiMh ali NiCd baterij.

Vrednost upora je doloena, e imamo vir napetosti 12V: R= (12V-0.7V-Ubat)/ Ipolnjenja

Bascom AVR za zaetnike | Kabel tester

107

Shema celotnega vezja

LCD Display

Slika 21: Shema celotnega vezja

108

Kabel tester | Bascom AVR za zaetnike

Seznam materiala
K_tester1.pcb ======================================

t.komp Ime

Value

------ --------------- ---------------

1 C200 1 CAP200 1 CAP400 1 CON2M 1 DIP40 1 LCD_CHR 8 LEDV 1 LEDV 6 R_B_SMD 8 R_B_SMD 8 R_B_SMD 8 R_B_SMD 2 R_B_SMD 3 R_B_SMD 5 TIPRES 1 TO35A 1 TO220 1 TRPOT_M

100uF/16V Quarz 4Mhz Piezzo Konektor za TIV ATMega8515 LCD 2x16 8 x LED rdeca v LED 2-barvna 6 x 10K 8 x SMD 1k8 8 X SMD 1N4148 8xSMD 220E SMD 1K SMD 100nF 5 x Tipka BC547 7805 47K

Bascom AVR za zaetnike | Kabel tester

109

Opis programa
Sedaj pa e nekaj besed o programu. Program je napisan z BASCOM-AVR IDE Version : 1.11.7.4.

Velikost programa je nekaj manj kot 8kB, iz esar je razvidno, da bo potrebno uporabiti licenno verzijo programa BASCOM AVR.

Na zaetku je potrebno opraviti inicializacijo sistema. Ker v vezju ni uporabljen Quarz oscilator, je potrebno nastaviti frekvenco notranjega oscilatorja. Ta je privzeto nastavljena na 1.000.000 MHz. e elite spremeniti frekvenco je potrebno spremeniti ustrezne Fuse bite v mikrokontrolerju. Ker je uporabljen tudi serijski port, je potrebno nastaviti tudi Baud rate. V naem primeru 9600, za kar je potrebno nastaviti vrednost Osccal=181.Ta vrednost je privzeto nastavljena. Kasneje si bomo ogledali, kako jo spremeniti med delovanjem.

$regfile $crystal $baud

= = 9600 = : Osccal

"m8515.dat" 1000000 = 181

Nastavimo e pine LCD prkazovalnika:

Config Lcd = 16 * 2 Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 Config Lcdbus = 4 Cursor Off Noblink Cls

Na LCD prikazovalnik sem izrisal tudi nekaj simbolov:


Deflcdchar Deflcdchar Deflcdchar Deflcdchar Cls 0 1 2 3 , , , , 32 , 14 32 , 14 3 , 5 , 32 , 10 , 17 , 31 25 , , 20 , 17 , 31 25 , , 32 , 17 , 31 25 , , 10 , 14 , 32 , 32 , 14 , 32 , 32 5 , 3 , 32 , 20 , 32 , 32 ' LED OFF ' LED ON ' ZVOCNIK ' Krivulja

Na koncu ne smemo pozabiti na ukaz CLS, ker drugae prikazovalnik ne bo deloval pravilno.

110

Kabel tester | Bascom AVR za zaetnike

Potem moramo nastaviti e vhodno izhodne porte mikrokontrolerja. To je potrebno storiti, zaradi pravilnega delovanja LED diod. Nastaviti je potrebno registre za posamezni port.

Ddrd = Portd Ddrb = Portb Ddrc = Portc Ddra = Porta

&B01110000 = &B00000000 = &B11111111 = &B11111111 =

'config PD &B10111111 'config PB &B11111111 'config PC &B11111111 'config PA &B11111111

Glavni program je namenjen izbiri kabla in prikaza menijev na prikazovalniku. Izbira menijev je narejena s Case stavkom. Za prikaz stanja glavne enote je uporabljena dvobarvna LED dioda. Pri vklopu je zelene barve, v stanju meritve pa rdee barve.

Select Case Case Case Case Case Case Case Case Case End

1 2 3 4 5 6 7 8 9

Case : : : : : : : : :

Gosub Gosub Gosub Gosub Gosub Gosub Gosub Gosub Gosub

Menu Utp100 Utpcrossx Utpcross Utp10 Isdn Telefon Tst_pin Rs232 Piezzo1 Select

Podprogram za vklop LED diode oz. postavitev pinov mikrokontrolerja v pravilno stanje je napisan z ve procedurami. S tem je koda optimizirana, saj drugae ne bi bilo mogoe programa spraviti v mikrokontroler Mega 8515.

Pin1: Portc Set Reset Gosub Locate Gosub Locate Gosub Return

2 2

, ,

1 1

: :

Gosub Gosub

0 Conn1 Conn2 Lcd_p Lcd1 Tmdl Lcd0 Tmdl

Za vsak pin posebej je izdelana takna procedura. Testiranje pinov je izvedeno avtomatsko. To pomeni, da se led dioda priiga po vrsti od prve do osme in potem zopet od zaetka. e elimo testirati vsak pin posebej, izberemo meni Tst_pin. Tu moramo za vsako naslednje stanje pritisniti tipko Tp_1. Bascom AVR za zaetnike | Kabel tester 111

Do Portc Set Reset Pin Pinx Barva Gosub Locate Gosub Tp1 Locate Gosub Tp1 2 = 2 = , 0 , 0 1 = = = = 1 : Then : Then 0 Conn1 Conn2 "1-2" 1 "Or-Be" Lcd_p Lcd1 Tmdl Do Lcd0 Tmdl Do

Gosub Exit Gosub Exit

If

If Loop

Za vsak pin posebej je izdelana neskonna zanka, ki jo lahko zapustimo s pritiskom na tipko Tp1.

Testiranje seriskega porta RS 232 Adapter RS232 je namenjen testianju serijskega porta. Napajanje + 5V za vezje MAX 232 dobimo na portu PortC.1, 0V pa na portu Portc.6.

Pri nastavitvi serijskega porta moramo z menijem nastaviti Baud rate. To storimo tako, da med delovanjem spremenimo registre portov.

Ddrc = &B11101111 Portc

'config PD6 as input &B00011010

Nastaviti je potrebno tudi software-ski UART. To storimo z ukazom OPEN.

Open Open

"comc.4:9600,8,n,1" "comc.3:9600,8,n,1"

For For

Output Input

As As

#1 #2

Privzeto je nastavljena hitrost 9600 b/s.

S pomojo CASE stavka nastavimo hitrost prenosa na eleno vrednost, pri emer pomeni vrednost spremenljivke Brr vrednost registra OSCCAL. Vrednost OSCCAL pa doloa Baud rate.

112

Kabel tester | Bascom AVR za zaetnike

Select Case

1 Baudstr Baud Baud Brr Lcd . . .

Case Locate = #1 #2 =

1 "1200,8,N,1 , ,

Baudr 6 " 1200 1200 178 Baudstr

Case 2 :

End Select

Na koncu testa je potrebno registre porta ponovno nastaviti na zaetno vrednost, nato pobriemo e prikazovalnik.
Ddrc = &B11111111 Portc Locate 2 'config PC &B11111111 Spc(16)

= , 1 : Lcd

Piezzo Testiranje kratkega stika je izvreno preko pinov 4 in 5. Opozoriti je treba, da je ta meritev namenjena samo merjenju kratkega stika. Pini mikrokontrolerja niso zaiteni proti visokim napetostim, zato je potrebna previdnost pri uporabi taknega merjenja. Piska piezzo zapiska tudi pri meritvi veje upornosti do 20K ohm.

e bi eleli natannejo meritev, bi bilo potrebno prag aktiviranja prestaviti na vsega nekaj deset ohm-ov.

Piezzo1: While Gosub Set Locate Locate Locate Wend 1 2 2 Pinc.3 , , , 15 7 9 : : : = 0 Lrdec Piezzo Chr(3) Lcd1 Lcd1

Lcd Gosub Gosub

Bascom AVR za zaetnike | Kabel tester

113

Tu kaj posebnega ni dodati. Za zvono signalizacijo je uporabljen Piezzo SEP2242 z vgrajenim oscilatorjem. Prikljuen je na Portd.6. Ko elimo generirati zvoni signal, piezzo prikljuimo na enosmerno napetost +5V. To storimo s pomojo tranzistorja BC517. Vkljuimo ga z ukazom set piezzo in izkljuimo z reset piezzo. Na LCD prikazovalniku pa prikaemo zvonik in krivuljo (Slika 12).

Ohije
e nekaj besed o ohiju. Ohije lahko najdete v dobro zaloeni trgovini z elektro materialom. Dimenzija ohija je: Glavna enota: 13 X 6 X 3 cm. Dobro je, da ima predpripravljen prostor za 9V baterijo. Oddaljena enota: 5,5 X 5,5 X 3 cm.

Za lepi izgled ohija je priloena maska prve strani.

D 12V C

Cable tester KT804

DSM
RJ -45

O /O FF N

S le e ct

M nu/E e nd

Sar tt

Sat t us

114

Kabel tester | Bascom AVR za zaetnike

DSM
1 2 3 4 5 6 7 8

Slika 22: Prednja maska za ohije glavne enote in oddaljene enote

In e za konec. Z manjimi modifikacijami, si boste lahko zgradili sistem po vai meri. Ostali uporabni dodatki testerja bi bili lahko e: merjenje temperature, napetosti, frekvence,

S tem bi to postal e univerzalni intrument. Vsekakor pa bi za to potrebovali zmogljiveji mikrokontroler. Skratka upam, da boste ob gradnji Kabel testerja uivali, z njegovo uporabo pa reili marsikateri problem pri postavitvi LAN mre, vkljuitvi ISDN telefona,

Bascom AVR za zaetnike | Kabel tester

RJ -45

115

Velike tevilke na prikazovalniku LCD2x16


Matja Skubic

Cene LCD prikazovalnikov so se v zadnjem asu zelo zniale. To verjetno botruje veliki porabi tovrstnih prikazovalnikov in nenazadnje tudi enostavnost uporabe. V veliki veini elektronskih vezij je dandanes prikazovalnik nepogreljiv element. Ko sem se pri popravilu naprave za doziranje sooil s problemom prikaza velikih tevilk (prvotno je imela naprava velik LED prikazovalnik) sem bil v veliki dilemi, ali napravo popraviti, ali pa kar narediti novo. Uporabnik je elel imeti imbolj podoben vmesnik, ker ga je bil navajen. Izdelal sem novo napravo, LED prikazovalnik pa sem nadomestil z 2x16 LCD prikazovalnikom. To je bil za mene izziv, da na prikazovalnik prikaem velike tevilke.

Standardni LCD prikazovalnik ima v mikrokontrolerju shranjen nabor ASCII znakov. Odvisno od tipa prikazovalnika se nekateri znaki, predvsem posebni, lahko razlikujejo. Proizvajalci so prikazovalnik naredili tako, da lahko programer zgradi do 8 svojih znakov. Pri tem smo omejeni na 8x5 pik, kar pa ni veliko. Znake lahko vpiemo v pomnilnik, ki se imenuje CG RAM.

CG RAM je pomnilnik prikazovalnika LCD in ima na voljo 8 naslovov, kamor lahko vpiemo (nariemo) poljuben element z loljivostjo 8x5 pik. Mono je izrisati tudi veji znak, kjer predvidimo N x 8x5 znakov (N ni veji od osem). Pri tem imamo med posameznimi polji presledek. Zadeva je lahko motea pri vejih prikazovalnikih, ker je tam tudi razmik med polji 8x5 veji. e elimo narisati znak v polje 8x 5 pik, si lahko pomagamo na ve nainov. Lahko v CG RAM vpiemo posamezen naslov in njegovo vrednost. Taken postopek se je uporabljal pri uporabi Assemblerja. Teava je bila v tem, ker do vpisa programa v mikrokontroler nismo vedeli, kako bo taken zank dejansko prikazan na prikazovalniku.

V Bascomu je ta reitev enostavna in uporabniko prijazna. Za to je v Bascomu pripravljeno posebno orodje, ki ga najdemo v meniju Tools z imenom LCD Designer. Orodje nam omogoa, da na zelo 116 Velike tevilke na prikazovalniku LCD-2x16 | Bascom AVR za zaetnike

enostaven nain nariemo znak, pri tem pa vizualno lahko preverimo, kako bo ta znak dejansko prikazan na prikazovalniku. Ko je znak narisan, nam orodje vrne e pripravljeno kodo. Vse kar moramo storiti ob tem je, da doloimo naslov (0-7) na pozicijo, kamor je postavljen vpraaj (?).

Primer:

Deflcdchar ?,4,4,4,4,21,14,4,32' replace ? with number (0-7)

Ko elimo znak prikazati na prikazovalniku, moramo doloiti lokacijo na prikazovalniku, in znak. Primer:
Locate 1,3:LCD chr(2)

Pri emer je 1, vrstica prikazovalnika, 3 zaporedna pozicija znaka v vrstici ter 2 naslov znaka, ki smo ga doloili pri risanju- vrednost, ki jo postavimo na mesto vpraaja (?)

e elimo prikazati veje znake/tevilke moramo uporabiti ve polj 8x5 in jih pravilno razvrstiti, da dobimo eleno tevilko. Pri prikazovalnikih tipa 2x16 je mono prikazati velike tevilke ez dve vrstici. Kako to izvedemo?

Pri nartovanju znakov moramo biti pazljivi, da se zgradijo vsi elementi, ki zadostujejo izrisu vseh tevilk od 0-9. e si elimo prihraniti delo pri programiranju, izberemo 8 znakov. Reitev je mona tudi z izbiro veih znakov, le da je tu potrebno vsebino CG RAM-a LCD prikazovalnika ves as spreminjati. Izris vseh tevilk od 0-9 je sorazmerno teavno delo, e uporabimo samo 8 znakov s katerimi izriemo vseh deset tevilk. Po dolgotrajnem risanju, kombiniranju in preizkuanju sem uspel najti 8 znakov, s katerimi je mono izrisati dokaj prepoznavne tevilke. Znake sem razvrstil v dve kategoriji in sicer normal in bold pri emer sem v obeh primerih uporabil enak koncept znakov. Bascom AVR za zaetnike | Velike tevilke na prikazovalniku LCD-2x16 117

Spodnji sliki ponazarjata uporabo znakov in prikaz tevilk normal in bold

Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar

0 , 1 , 1 , 1 , 1 1 , 31 , 1 , 1 , 1 2 , 31 , 16 , 16 3 , 31 , 1 , 1 , 1 4 , 17 , 17 , 17 5 , 31 , 17 , 17 6 , 31 , 17 , 17 7 , 31 , 16 , 16 ,

, , , , , ,

, 1 , 1 , 1 , 16 , 16 1 , 1 , 17 , 17 17 , 17 17 , 17 16 , 16 ,

1 , 1 , 16 , 16 1 , 31 , 17 , 17 , 17 , 17 , 17 , 17 16 , 16 , 1

31 '

, 31 , 31 , 17 16

'

| T C C inv ' U ' O ' n L inv

' ' '

Primer priprave znakov za izris BOLD

Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar Deflcdchar

0 , 3 , 3 , 3 , 3 , 3 , 1 , 30 , 31 , 3 , 3 , 3 2 , 15 , 31 , 24 , 24 3 , 30 , 31 , 3 , 3 , 3 4 , 27 , 27 , 27 , 27 5 , 14 , 31 , 27 , 27 6 , 14 , 31 , 27 , 27 7 , 15 , 31 , 24 , 24 ,

3 , 3 , 3 , 3 , 3 , , 24 , 24 , 3 , 31 , , 27 , 27 , 27 , 27 , 27 , 27 24 , 24 ,

3 , 30 , 31 , 31 , 27 24 , , 14 , 14 , 27 24 31 , 15 '

'

| T C C inv ' U ' O ' n L inv

' ' '

Pri definiciji znakov lahko hkrati uporabimo samo eno izmed tabel (normal bold). Ko so znaki izrisani (normalje potrebno izdelati program, ki bo te kombinacije znakov pozicioniral na pravo mesto LCD 118 Velike tevilke na prikazovalniku LCD LCD-2x16 | Bascom AVR za zaetnike

prikazovalnika, da bo vidna uporabna informacija. Za prikaz tevilke je potrebno napisati podprogram, ki ga kliemo, ko elimo prikazati tevilko. Opis programa:

St_stevilka je tipa Sring

Big_disp1: St_stevilka Dol For Z = Zn B1 B2 Locate Locate Next Locate Ix Locate Return

I = = 1 2 1

= = = Mid(st_stevilka = Lookup(zn Lookup(zn , I , I , = , I I Ix

1 ,

: : : :

Str(stevilka1) Len(st_stevilka) To Dol I , 1) Val(z) , Dta1) , Dta2) Lcd Chr(b1) Lcd Chr(b2) Lcd + Lcd Chr(223) 1 Chr(2)

Dta1: prva Data 6 , 0 , 1 , 1 , 4 , 7 , 2 , 1 Dta2: druga Data 4 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 3 , 4

vrstica 6 , 6 vrstica

1. tevilko spremenimo v tip String. e imamo tevilko tipa byte, integer, word, spremenimo tevilko v string znak 2. 3. Preverimo dolino spremenljivke (koliko mestna je tevilka). To je pomembno, da se izrie ustrezno tevilo tevilk na prikazovalniku 4. Z zanko For doloimo kako dale se bo izpis zgodil. Ko imamo definirano dolino tevilke (primer 2 znaka) z zanko For- Next izvedemo izpis na LCD prikazovalniku. 5. Izberemo vsak znak posebej. Za vsak znak posebej pogledamo v tabelo Data1 in Data2 za prvo in drugo vrstico na isti poziciji, kjer se nahaja ustrezen znak za izris doloene tevilke. 6. Pretvorimo znak v tevilko 7. Pogledamo v tabelo, kateri znak je to (od 0-9) Bascom AVR za zaetnike | Velike tevilke na prikazovalniku LCD-2x16 119

8. Nariemo znak v vsako vrstico posebej. Za vsako tevilko je potrebno ponoviti podprogram in upotevati tudi presledke. Prednost uporabe LCD alfanumerinega prikazovalnika je v tem, da poleg velikih tevilk lahko prikaemo tudi ostale informacije v klasini velikosti.

Primer uporabe: Stevec.bas

Namerno je tevcu na konec dodeljen simbol za stopinje Celzija. Tu gre za primer, e bi npr. merili temperaturo.

Velike tevilke je mono prikazati tudi na LCD prikazovalnikih z veimi vrsticami. Primer 4x20. Tu je problem podoben, le da za izris ene tevilke potrebujemo 3 polja horizontalno in 4 vertikalno po 8x5 pik. Program je temu primeru zahtevneji. V nadaljevanju je prikazana doloitev znakov za prikaz tevilk. Na osnovi definicije znakov si boste lahko izdelali svojo proceduro, ki bo omogoala izris tevilk v odvisnosti od potreb in vaih elja.

Primer izrisa znakov na prikazovalniku 20x4

Deflcdchar 0 , 32 , 32 , 32 , 1 , Deflcdchar 1 , 32 , 32 , 32 , 31 Deflcdchar 2 , 31 , 31 , 31 , 31 Deflcdchar 3 , 32 , 32 , 32 , 16 , 24 , Deflcdchar Deflcdchar Deflcdchar Deflcdchar 4 5 6 7 , , , , 31 31 31 16 , , , , 15 30 31 24 , , , ,

3 , , 28

, 7 , 15 , 31 31 , 31 , 31 , 31 32 , 32 , 32 , 32 , 30 , 31 ' L 1 , , , , 32 16 , 30 , 31 , , 32 32 , 28 , 31 , , 32 32 , 32 24 , 16 31 , 31 ' ' ' ' T1) T2) Zn1 Zn2

' Linv ' [] ' []

7 , 3 , 28 , 24 31 , 31 28 , 30

'prikaz LCD 1-5:

120

Velike tevilke na prikazovalniku LCD-2x16 | Bascom AVR za zaetnike

Deflcdchar 4 , 31 , 15 , 7 , 3 , 32 , 32 , 32 , 32 Deflcdchar 5 , 31 , 30 , 28 , 24 , 32 , 32 , 32 , 32

' T1 ' T2

Na spodnjih slikah je prikazano nekaj primerov uporabe velikih tevilk na alfanumerinih LCD prikazovalnikih 20x4.

Bascom AVR za zaetnike | Velike tevilke na prikazovalniku LCD-2x16

121

Poleg zankov lahko na LCD prikazovalnik nariemo tudi slike. Slike so velikost 8 x 8x5 pik. To nazorno prikazuje Aapplication note AN# 162 na strani MCS Electronic. http://www.mcselec.com/index.php?option=com_content&task=view&id=231&Itemid=57

Prikaz je uporaben kot primer logotipa, ki se prikae, ko vkljuimo napravo na napajanje.

Primer:

Mono je izdelati tudi animacijo, slik polj 8 x 8 x 5.

Uporaba LCD prikazovalnikov je ceneja in enostavneja. Velikokrat je reitev takne uporabe elegantneja od uporabe LED prikazovalnika, kje je za prikaz potreben multiplex oz. uporaba integriranih vezij (SAA1064, ). Poleg tega pa lahko na prikazovalnik 2x16 oz 4x 20 prikaemo e dodatne uporabne informacije. Mogoe bo ob tem kdo dobil nove ideje, kako posodobiti svojo napravo in jo s tem narediti uporabniku e prijaznejo.

122

Velike tevilke na prikazovalniku LCD-2x16 | Bascom AVR za zaetnike

AVR-DOS datoteni sistem File System)


Vilko Susti

(AVR-DOS

Obvezni uvod
Datoteni sistem AVR-DOS je napisal Josef Franz Vgel. Ni dovoljeno uporabljati v komercialne namene. V takem sluaju potrebujete posebno licenco. Sistem deluje z Compact Flash Cards in je namenjen za vgrajene sisteme (embedded systems) za vodenje dnevnika podatkov. (for data logging).

Neobvezni uvod
e sestavljate napravo, ki naj bi trajno delovala, recimo upravljala vao hio, delavnico, varovala pred vlomi, vdorom vlage ali ognja, potem potrebujete voditi dnevnik dogajanja za morebitno kasnejo analizo incidenta. Vedeti elite, kdaj se je pooblaena oseba prijavila preko kode, ki jo je vtipkala v tipkovnico, kdaj je zmanjkalo elektrine energije, kdaj se je sproilo alarmiranje in zaradi katerega senzorja in podobno. Ali pa, e sestavljate napravo, ki vodi vstop v skupno parkirie, kdaj je kdo parkiral in ali je uporabil ve kot en parkirni prostor. Moj projekt je bil vodenje sistema centralne kurjave, in poleg vodenja evidence posameznih temperature in vklopom in izklopov naprav (kotla, obtonih rpalk, mealnega ventila ) sem imel tudi prav neprijetno dogajanje, - nekajkrat dnevno se mi je mikroprocesor resetiral, in iz samega tudija programa nisem mogel ugotoviti, zakaj. V program sem dodal dodatno pisanje na MMC kartico s pomojo AVR-DOS-a kjer sem beleil vsak vstop v kak podprogram in vsak izstop tako, da sem na zaetku in koncu dodal odgovarjajoi Print ukaz, recimo tako: Branjetemp: Print #2 , Hex(sph) ; Hex(spl) ; " E: Branjetemp" .... Print #2 , Return Hex(sph) ; Hex(spl) ; " R: Branjetemp T="; temperatura

Kot vidite (Hex(sph) ; Hex(spl)) sem elel celo vedeti, kako je z odloiem, ali se mi odloie kako pokvari, kajti sumil sem celo, da se tam kaj sfii.

Bascom AVR za zaetnike | AVR-DOS datoteni sistem (AVR-DOS File System)

123

In v ta namen sem uporabil spominsko kartico, podobno, kot jo imajo fotoaparati, ima veliko kapaciteto, vanjo lahko piem cel mesec, in ne bo polna. A je zato potrebno programje AVR-DOS.

Na alost pa, AVR-DOS potrebuje tudi precej RAM prostora, tako da je mono to uporabiti na mikroprocesorjih z dovolj RAM-a. Jaz sem uporabil ATMEGA32.

Povezava MMC kartice z mikroprocesorjem

Na levi je 10-pinski IDC Speedy konektor za povezavo z Minipin testnim okoljem, na desni je MMC-konektor s kartico.

MMC kartica se napaja s 3V. Torej e na mikroprocesor dela na 5V, tedaj je potreben regulator napetosti na 3V, na primer GL1117. Tudi signali, ki prihajajo iz mikroprocesorja, (SS, MOSI, CLK) so z uporovnimi delilniki prilagojeni MMC kartici. Signal ki gre iz MMC kartice k mikroprocesorju (MISO) je e tako na treh voltih, in to na mikroprocesor e bere kot 1. Vsi ti tirje signali (MISO, MOSI, CLK in SS) veemo na poljubne proste vhodno-izhodne pine mikroprocesorja, kasneje bomo AVR-DOS informirali, kako smo jih vezali.

Led dioda in tipka nista potrebni. Lahko na pa led dioda pokae, kdaj je MMC kart v povezavi z AVR-DOSom, se pravi dela, in je ne smemo izvlei. Tipko pa za krmiljenje programa v mikroprocesorju, recimo, da pritisk na tipko zakljui delo z MMC kartico, (CLOSE FILE) led dioda ugasne in kartico lahko izvleemo.

124

AVR-DOS datoteni sistem (AVR-DOS File System) | Bascom AVR za zaetnike

Povezava kartice z AVR-DOS programjem


Najprej moramo definirati, kam smo vezali kontakte MMC kartice. V pomo nam je priloena datoteka Config_MMC.bas ki jo seveda lahko imenujete tudi kako drugae, a v va

program jo potegnete z $include ukazom. Pred tem jo morate malo prirediti. Datoteka ima dve sekciji, HW in SW, vedno se izbere le ena od obeh in to pri definiciji konstante:
Const Cmmc_soft = 1

Potem pa se z
#if Cmmc_soft = 0

Izbere ena ali druga sekcija. Testiral sem samo z software varianto . V tej sekciji definiramo, kam smo vezali katere kontakte mikroprocesorja:
#else ' Config here SPI pins, if not using HW SPI

' --------- Start of Section for Soft-SPI --------------------------------' Chip Select Pin => Pin 1 of MMC/SD Config Pina.0 = Output Mmc_cs Alias Porta.0 Set Mmc_cs ' MOSI - Pin => Pin 2 of MMC/SD Config Pina.1 = Output Set Pina.1 Mmc_portmosi Alias Porta Bmmc_mosi Alias 1 ' MISO - Pin => Pin 7 of MMC/SD Config Pina.3 = Input Mmc_portmiso Alias Pina Bmmc_miso Alias 3 ' SCK - Pin => Pin 1 of MMC/SD Config Pina.2 = Output Set Pina.2 Mmc_portsck Alias Porta Bmmc_sck Alias 2 ' --------- End of Section for Soft-SPI ----------------------------------Debelo natiskane besede (tevilke) je potrebno prirediti naemu vezju. Kot vidite je PinA.0 je chip select, PinA.1 MOSI, PinA.2 SCK, PinA3. MISO, prav tako kot na shemi, e seveda vtaknemo adapter v tisti IDC10 konektor Minipina, ki odgovarja Portu 0 oziroma A.

Ko smo tako datoteko Config_MMC.bas priredili naem vezju in jo spravili na disk, gremo naprej. S sledeim $include ukazom potegnemo v program AVR-DOS $include "Config_AVR-DOS.BAS"

Bascom AVR za zaetnike | AVR-DOS datoteni sistem (AVR-DOS File System)

125

In sedaj se mora avr-dos seznaniti z MMC kartico: Gbdriveerror = Driveinit()

Spremenljivka Gbdriveerror je e definirana v prej vkljuenih .bas datotekah in je ni potrebno definirati. Moramo pa jo spraevati, ali je vse v redu:
If Gbdriveerror <> 0 Then Kode napak dobite v Help-u. In e je vse v redu, gremo lahko naprej z drugimi avr-dos ukazi, ki jih je kar nekaj. INITFILESYSTEM , OPEN , CLOSE, FLUSH , PRINT, LINE INPUT, LOC, LOF , EOF , FREEFILE , FILEATTR , SEEK , BSAVE , BLOAD , KILL , DISKFREE , DISKSIZE , GET , PUT ,FILEDATE , FILETIME , FILEDATETIME , DIR , WRITE , INPUT , FILELEN V tem prispevku bomo uporabili tisto nujno, kar je potrebno za to, da napiemo datoteko na MMC disk. To so Initfilesystem, open, close in print. Ostalo boste po vaih potrebah sami natudirali iz help-a. Initfilesystem je prva funkcija, ki jo moramo klicati, in tudi je lahko uspena ali pa ne. I = Initfilesystem(1) If I <> 0 Then Print 'Init filesystem napaka', I End End if 'init file system Print "Napaka Config " ; Gbdriveerror

Sedaj lahko odpremo datoteko na 'disku', MMC kartica se obnaa kot disk pod DOS sistemom.
Open "Data.txt" For Append As #9 'create file in MMC

Ime datoteke seveda lahko doloimo po potrebi, tudi v samem programu, tako da sestavimo ime datotek v spremenljivki tipa String in potem je ime te spremenljivke prvi parameter ukaza Open, ime datoteke pa vsebina spremenljivke tipa String

Sedaj lahko najlae s Print ukazi piem kakrnokoli vsebino v odprto datoteko. Le nekaj je potrebno vedeti. Datoteka mora biti zakljuena z Close ukazom. e se mikroprocesor kakorkoli sfii zaradi napake v programu, ali motnje od zunaj, datoteke ne bomo videli na MMC-u. Ko program zakljui delo s Close ukazom, lahko vzamemo MMC kartico iz leia, jo vtaknemo v italnik MMC kartic, ki je vezan na PC in tam se MMC kartica odpre kot izmenljiv disk, na njemu poiemo nao datoteko in jo odpremo z wordpad ali notepade windows programom, lahko tudi z word-om in si jo ogledamo.

e smo recimo imeli mikroprocesor zadolen za beleenje raznih meteorolokih veliin, temperature, vlanost, smer in hitrost vetra, in podobno, lahko e s Print ukazi priredimo stavke datoteke tako, da jih beremo recimo z excel programom, ki potem iz teh veliin naredi grafe.. Monosti je toliko, kolikor vam jih fantazija da.

V prilogi imate nekaj programov za vzorec. 126 AVR-DOS datoteni sistem (AVR-DOS File System) | Bascom AVR za zaetnike

Opis programa test6.bas

Poleg e omenjenih ukazov Driveinit, Initfilesystem, open, itd, vsebuje Timer prekinitveni podprogram, ki se aktivira vsakih 500 msec in postavi zastavico bit tiflag.

Timer1_isr: Load Timer1 , Timer1reload Incr Ticntr Set Tiflag Return

V zanki glavnega programa se spraujemo, ali je ta zastavica postavljena, in e je, poveamo tevec i in zapiemo in na MMC disk in pomoni izhod (Software uart)
Do If Tiflag = 1 Then Print #9 , I Print #2 , I Incr I Reset Tiflag End If

V zanki glavnega programa tudi poskrbimo za utripanje ledice:


Fazapisem = I.0

In za odtipavanje tipke:
Debounce Tipka , 0 , Tipkasr , Sr Config Tipka = Output V sluaju pritiska na tipko, to zapiemo in postavimo tevec i na vrednost, ki pomeni konec dela: Tipkasr: Print #2 , "tipka konec" Print #9 , "tipka" I = 50 Return

Bascom AVR za zaetnike | AVR-DOS datoteni sistem (AVR-DOS File System)

127

Zakljuek
Pisanje podatkov in beleenje dogodkov na MMC kartico se mi je izkazalo kot odlien pripomoek za sledenje dogajanja v programu, bodisi za iskanje napak v programu, bodisi za beleenje 'poslovnih' dogodkov recimo v alarmni napravi, kdaj je kdo aktiviral strao alarmne naprave, kateri dogodek je sproil alarm, in podobno. Na alost pa je za to potreben procesor z veliko RAM-a, o emer se lahko prepriate v poroilu (Report-u), ki vam ga generira Bascom pri vsakem prevajanju.

128

AVR-DOS datoteni sistem (AVR-DOS File System) | Bascom AVR za zaetnike

Grafini LCD obutljiv na dotik


Jure Mikeln

Bascom-AVR je e stalnica v nai reviji Svet Elektronike. Kako tudi ne bi bil, e pa je simpatino in zmogljivo orodje za relativno malo denarja. Kakne bombonke v sebi skriva Bascom tudi v urednitvu ugotavljamo z uporabo razlinih elektronskih elementov. Zadnje ase so v Sloveniji zelo popularni grafini LCD-ji s t.i. touchscreen zasloni. Zadevo sem malce pregledal in nastal je lanek o uporabi grafinega LCD-ja.

O grafinih LCD-jih ne kae izgubljati besed. Veina nas ve, da po grafinih LCD-jih lahko po mili volji riemo svoje znake, prikazujemo slike in podobno. Hkrati pa lahko na njih prikazujemo tudi tekst, podobno kot na alfanumerinih LCD-jih. O grafinem LCD-ju smo v nai reviji prvi pisali daljnega leta 1999, v letu 2000 pa je mag. Mitrovi objavil serijo lankov o krmilniku grafinega LCD-ja z malim AT89C2051. Vendar so bili takrat grafini LCD-ji teko dobavljivi in tudi cenovno neugodni, Bascom takrat e ni ponujal toliko orodij, kot smo jih deleni danes. V Sloveniji v maloprodaji lahko kupimo LGM12864B2NSWBBS in ustrezno folijo obutljivo na dotik. Grafini prikazovalnik ima resolucijo 128x64 pik in je enobarven. Moja verzija prikazovalnika sveti modro, vendar so tudi rumeno/zeleni popolnoma primerni in funkcionalno popolnoma enaki. Za krmiljenje prikazovalnika in obutljive folije bomo uporabili Atmelov mikrokontroler ATMega16. Grafini prikazovalnik ima 8 podatkovnih prikljukov in e nekaj kontrolnih.

Vezava prikazovalnika in obutljive folije je prikazana na sliki 1.

Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik

129

Slika 1: Vezava grafinega prikazovalnika in obutljive folije

Folija obutljiva na dotik deluje na principu merjenja upornosti. Predstavljajte si 4 upore, vezane tako, kot vidite na sliki 1. Z mikrokontrolerjem analogne napetosti digitaliziramo in na podlagi te informacije tono vemo, na katerem delu zaslona smo pritisnili folijo.

130

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

Slika 2: Folijo prilepimo na LCD

Folija je samostojna in ima na spodnji strani e predvideno lepilo, s katerim jo nalepimo na LCD. Preden jo nalepimo, je potrebno temeljito oistiti LCD zaslon kot tudi folijo. Za ienje ne uporabljajte alkohola ali drugih kemikalij, pa pa mehko krpico, ki jo rahlo navlaite z destilirano vodo. Folija se lepo prilega LCD-ju, kot vidite na sliki 2. V urednitvu Svet Elektronike smo pripravlili adapter za MiniPin, s katerim boste enostavno prikljuili LCD s folijo na raziritvene konektorje MiniPin-a.

Bascom program
Zdaj je pa zadeva e resna, saj bomo prieli s programiranjem. V kolikor ne boste uporabili adapterja za MiniPin si dobro poglejte shemo vezave na sliki 1. Na spletu obstaja veliko vezav LCD-ja in veliko teh shem je pomanjkljivo narisanih. To sem ugotovil po munih trenutkih, ko prikazovalnik ni in ni hotel prikazovati podatkov. ele ko sem trimer za kontrast vezal tako, kot je prikazano na sliki 1, je displej na moje veliko olajanje oivel! Pri foliji je potrebno dodati serijske upore, predvsem zaradi zaite obutljive folije pred neelenimi kratkimi stiki. Izhod iz folije prikljuimo na A/D vhode mikrokontrolerja (PortA), podatkovne in kontrolne prikljuke grafinega LCD-ja pa veemo na PortB in PortC: Celotno nastavitev displeja opravimo z eno vrstico Bascom programa
Config Graphlcd = 128 * 64sed , Dataport = Portb , Controlport = Portc , Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 5 , Enable = 4 , Mode = 8

V tej vrstici Bascomu dopovemo, da gre za LCD s 128x64 pikami, nadalje definiramo izhode za podatke in kontrolo LCD-ja in to je vse. Imena prikljukov na LCD-ju se sicer ne ujemajo z imeni v Bascomu, vendar naj nas to ne moti. Bascom pa nam nudi e ve: v Bascomu je vgrajeno simpatino Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik 131

orodje, ki se imenuje Graphic Converter (najdemo ga v zavihku Tools). To orodje pretvori BMP datoteko, ki jo nariemo v slikarju (ali katerem drugem programu za risanje slik) v BFG datoteko. Sliko shranimo v BMP datoteko, nastavimo rno bele barve in velikost (jasno!) na 128x64. Z Bascomovim Graphic Converter orodjem sliko pretvorimo v BGF datoteko, ki jo kasneje vgradimo v Bascom program in jo kliemo podobno kot subrutino. Seveda lahko v program shranimo ve slik in jih kliemo ter prikazujemo po potrebi.

Showpic 0 , 0 , Logose .... .... Logose: $bgf "logose.bgf"

'prikai sliko z imenom Logose 'definicija se nahaja tukaj

Pri pretvorbi z Graphic Converter orodjem moramo paziti na dvoje: potrebno je nastaviti velikost displeja na 128x64 in odkljukati moramo SED series, kot prikazuje slika 3.

Slika 3: Nastavitve Graphic Converter orodja

132

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

Dobro, zdaj znamo sliko iz BMP datoteke pretvoriti v BGF datoteko in jo vpisati v Bascom program. Kako pa prikazujemo tekst? Zadeva je malce bolj komplicirana in se vedno ne izide z naimi eljami. Velikost besedila je lahko najmanj 6 pik, drugae je besedilo teko berljivo ali celo neberljivo. Poloaj teksta nastavimo z ukazom:
'Lcdat 4 , 70 , "TEXT" 'SAMO VELIKE RKE!!

Kot vidite iz komentarja, lahko s tem ukazom uporabljamo samo velike rke. Sintaksa ukaza je sledea:
LCDAT y , x , var [ , inv]

kjer vidimo, da prva tevilka pomeni Y, druga pa X koordinato na displeju. INV v oklepaju pomeni, da se prikazuje karakter invertirano, v kolikor namesto inv napiemo tevilo 1. Moram povedati, da tevilke za Y ne ustrezajo poloaju na prikazovalniku, kot bi priakovali. Pravzaprav je logino, da je tako, saj smo definirali velikost fonta 8x8 (pik). V resnici je vsak karakter visok 7 pik. Vsak font se torej prine v vekratniku tevila 8. Ker imamo na voljo 64 pik, lahko na LCD zapiemo 8 vrstic fontov z enim presledkom med vrsticami.

Krmiljenje na dotik obutljive folije


Bascom se je spet pokazal kot odlino orodje pri tej nalogi. Vse opravimo v subrutini Readtouch:
Readtouch: Config Porta.3 = Output Config Porta.1 = Output Set Porta.1 Reset Porta.3 Config Pina.2 = Input Config Pina.0 = Input Waitms 20 stabilizira Y = Getadc(0) Y = 1024 - Y Config Porta.2 = Output koordinato Config Porta.0 = Output Reset Porta.0 Set Porta.2 Config Pina.1 = Input Config Pina.3 = Input Waitms 20 X = Getadc(3) X = 1024 - X Return 'beri touch 'pin1 (Y1) ' PIN3 (Y2) 'PIN2 (X1) 'PIN4 (X2) 'postavi kot vhod ' 'pocakaj, da se port 'preberi vrednost A/D 'jo invertiraj 'ponovi isto za X '

'

V kratki subrutini vidimo, da za vsako os (x oziroma y) posebej postavimo logino stanje na prikljuke folije, nato pa beremo izhodno napetost, ki jo dobimo iz A/D pretvornika. Izhodi so pa neke tevilke, ki nam enoznano pomenijo tono doloen poloaj na foliji. Pri tej foliji velja opozoriti, da najbolje dela, e na njo pritiskamo s trdim predmetom, kot npr. plastina (ne ostra!) paliica oziroma kaknim drugim neostrim predmetom, ki ne pokoduje folije. Seveda lahko po foliji pritiskamo tudi s prsti, vendar boste opazili, da pritisk s prstom ni dovolj natanen tako glede pritiska na folijo kot tudi pritiska na tono doloeno mesto e posebej, e imate velike prste. Za doloanje koordinat pritiska Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik 133

sem si naredil enostaven program, s katerim sem na prikazovalnik narisal koordinatno mreo in izpisoval izmerjeno tevilo mesta na foliji, kjer sem pritisnil. S pomojo tega tevila lahko s programom doloamo naslednje korake. Za ta namen smo uporabili subrutino Whichkey, kjer doloimo vrstico in stolpec v navidezni mrei na foliji:
Whichkey: ugotovimo, kje je bil pritisnjen touchscreen Select Case X vrednosti X Case 300 To 480 : Col = 10 'Case 341 To 486 : Col = 20 'Case 487 To 635 : Col = 30 'Case 636 To 774 : Col = 40 Case Else Col = 0 pritisnjeno End Select Y koordinato Select Case Y vrednosti Y Case 200 To 250 : Row = 1 Case 260 To 290 : Row = 2 Case 300 To 330 : Row = 3 pritisnjeno Case Else Row = 0 End Select Key = Col + Row dobimo vrednost If Key > 0 Then Pritisnjen Keyarray(keylus) = Key debounce ' Incr Keylus ' If Keylus > 3 Then Keylus = 1 ' If Keyarray(1) = Keyarray(2) Then ' If Keyarray(2) = Keyarray(3) Then 'Sound Speaker , 1 , 65000 Keypressed = Key 'Timecount = 0 ' End If ' End If End If Return 'sub, kjer ' razlicne ' ' 'ce ni nic ' vrednosti za 'razlicne ' ' 'ce ni nic

'sestejemo, da 'Touchscreen Je 'ce zelimo

'3x preberemo 'zapiskaj

Deli subrutine, ki so komentirani so namenjeni ugotavljanju debounce efekta. e elite, ga uporabite, jaz ga pri testiranju nisem uporabil. V subrutini Whichkey je zanimiva uporaba ukaza Select case, kjer se vrednosti Case gibljejo v doloenem razponu. To e kako pride prav pri foliji, saj nikoli ne pritisnemo na isto mesto, pa pa pritiskamo v nekem irem obmoju.

134

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

Zakljuek
Grafini LCD prikazovalnik in folija obutljiva na dotik nista ve nedosegljiva, pravzaprav ravno nasprotno: lepo in enostavno je delati z njima. Seveda je potrebno veliko dela, da nam bo naa aplikacija zaivela na polno, kar pomeni veliko narisanih predlog, ki jih izrisujemo na LCD-ju in jih v kombinaciji s folijo obutljivo na dotik ustrezno prikazujemo. Verjamem, da bo grafini LCD nael prostor v vaih naslednjih napravah.

Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik

135

Pomagala, ki mi pomagajo pri delu z mikroprocesorji


Vilko Susti
Moja praksa z mikroprocesorji sicer ni bogvekaj, a do nekaterih ugotovitev sem priel, in sem zadovoljen z njimi. S tem papirjem jih dajem na razpolago tudi drugim, saj e vam bo ve boste morda kopirali, v najslabem sluaju boste zamahnili z roko in li dalje.

3-pinski konektor
Priel sem do zakljuka, da na vsakem tiskanem vezju, ki ga krmili mikroprocesor, dodam e enega ali dva 3-pinska konektorja, ki jih sicer pri samem delovanju naprave ne potrebujem, ampak kar tako, 'za vsak sluaj'. Pri tem se drim vedno enakega razporeda kontaktov. 1- +5v 2- Nek prost vhodno/izhodni pin mikroprocesorja, ki ga sicer ne rabim 3- Masa Tak konektor naknadno lahko uporabim na razline naine, nanj priklopim dodatno led diodo, tipko, lahko z njim krmilim naprej kako drugo napravo, kar v prvem konceptu nisem imel v mislih in podobno. Na sledei sliki je napravica z dvema takima konektorjema. Enostavno prost prostor na tiskanem vezju sem zapolnil s konektorejma in ju povezal s prostima pinoma mikroprocesorja.

136

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

V programu predvideti programska pomagala za laje odkrivanje napak.


Kdor dela, dela napake. Kdor programira, vgrajuje v program tudi napake. In potem jih skua odpraviti. e samo gledamo v ip mikroprocesorja lahko samo ugibamo, kaj se v njem dogaja, ugibanje pa nas samo poasi pripelje do resnice. Da pridemo do resnice prej, vgradimo v program ukaze, s katerimi nas program obvea, kaj se v mikroprocesorju dogaja. e ima naprava LCD ali kako drugo izhodno enoto na kateri se pojavljajo obvestila uporabniku, potem programiramo izpis takih testnih obvestil pa na tako napravo. Ko smo z delovanjem programa zadovoljni, tedaj taka pomona obvestila odstranimo iz programa.

V Bascomu bi to naredili morda tako.


.. ' nekje definiramo konstano test ' const test = 1 . . ' potem vgradimo izpis pomonih informacij If test = 1 then Lcd 'Stevec = ';stevec End if . ' ali pa #if test = 1 Lcd 'Stevec = ';stevec #endif

Seveda se da to narediti v kateremkoli programskem jeziku, le pravila so drugana, a podobna. Ko smo s programom zadovoljni, enostavno spremenimo konstanto test v 0 in ponovno prevedemo program. Naj e omenim razliko med Bascom ukazoma if in #if. Med tem, ko se preverjanje pogoja pri ukazu if dogaja v mikroprocesorju med izvajanjem programa, se preverjanje pogoja pri ukazi #if izvaja e v fazi prevajanja programa na PC-u, in tedaj se pogojna koda, e pogoj ni izpolnjen, sploh ne vgradi v mikroprocesorski program. Kaj pa e naprava nima LCD-a ali neke druge primerne enote za komuniciranje z lovekom? Tedaj pride prav prej omenjeni 3-pinski konektor kamor vklopimo kabel za povezavo s PC-jem. Tedaj bomo ekran PC-a uporabili kot enoto, kamor bo na program pisal obvestila nam, ko bomo testirali program. Ko bomo s programom zadovoljni, potem bomo enostavno kabel izvlekli iz konektorja in napravo vgradili tja, kjer bo upravljala ali nadzirala tisto, za kar je namenjena.

V ta namen imata Bascom8051 in BascomAVR takoimenovani softverski uart, ki ga definiramo z


Open "com1.6:9600" For Output As #2

ali
Open "comd.2:9600,8,n,1" For Output As #2

Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik

137

Detajle Open ukaza si oglejte v Bascom Help-u! Seveda e iz definicije pina vidimo, da je prvi ukaz za 8051 mikroprocesor, kajti le on ima pin P1.6 drugi pa je za AVR mikroprocesor, ker le on ima PinD.2

Seveda je to pin, ki je vezan na kontakt 2 3-polnega pomonega konektorja, ki sem ga na zaetku omenil. Sedaj lahko v Bascomu AVR lepo piemo testne pomone informacije Recimo

Print #2, "Stanje tevca = "; tevec

In stanje tevca se bo pojavilo v novi vrstici na ekranu PC-a, e bomo seveda pravilno povezali PC z naim 3-pinskim konektorjem, a o tem kasneje. No, v Bascom8051 ne moremo pisati tako, ker pozna za softwarski uart samo ukaze Put, ki prenaajo samo en bajt, ne pa tudi ukaze Print, kjer lahko piemo cele vrstice. Pa si potem naredimo podprogram, ki nam bo nadomestil ukaz Print, vsebino, ki jo elimo napisati pa sestavimo v spremenljivki tipa niz.

138

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

Recimo
Dim S As String * 16 'Podroje za swuart ' splone deloven spremenljivke programa Dim i as byte Dim j as byte Dim k as byte Open "com1.6:9600" For Output As #2 S = "Stevec = " + Str(Stevec) Gosub Suartprint

Podprogram Suartprint pa bo bajt po bajt spremenljivke S prenesel na softwareuart:


Suartprint: push {i} push {j} push {k} I = Len(s) If I > 16 Then I = 16 End If ' Piem niz: For J = 1 To I K = J + 1 Put #2 , X(k) Next ' in zakljuim z CR/NL Put #2 , 10 Put #2 , 13 pop {k} pop {j} pop {i} Waitms 10 Return ' Suartprint

Podprogram najprej spravi vsebino delovnih spremenljivk i,j in k na odloie (stack), da ne bi s spremembo vsebine teh spremenljivk pokvaril delovanje glavnega programa, saj le ta ima lahko v njih vano vsebino. Potem ugotavlja, koliko znakov je potrebno oddati, potem v for zanki te znake odda, in potem odda e dva znaka, ki jih PC potem obravnava kot konec vrstice.

Pri Bascom8051 imamo e eno neprijazno zadevo: ti mikroprocesorji imajo zelo malo delovnega pomnilnika RAMa, in z Dim S as string * 16 ga morda preve obremenimo, tedaj, je potrebno pa manje dimenzije niza, in paziti pri sestavljanju niza na prekoraitev in pisati (klicati podprogram) pogosteje.

Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik

139

Seveda e nismo konali. Sedaj so ti znaki ele na kontaktu 2 3-pinskega konektorja. Kako pridejo na ekran PC-a? Najprej je potrebno 3-pinski konektor z neko vmesno napravico (interface, vmesnik) povezati s Serial Portom PC-a ali kot reemo z Com portom. V ta namen sem si izdelal napravico po tej shemi: (priznam shemo si nisem izmislil sam, temve sem http://chaokhun.kmitl.ac.th/~kswichit/Rs232_web/Rs232.html ) jo nael na internetu na

Na levi je 9-pinski DB9 enski konektor, ki pae na konektor PC-a. Na desni priklopimo ta vmesnik na 3-pinski konektor nae naprave, kjer s pomojo softare-uarta piemo serijsko podatke, in jih dajemo na fotodiodo optospojke. Kot vidite je levi del vmesnika popolnoma galvansko loen od desnega, in tako je PC zaiten pred elektrinimi udarci, ki bi ga lahko udarili zaradi kake elektrine napake iz nae naprave. Levi del vmesnika je napajan iz RTS kontakta 9-polnega konektorja, in tranzistor optospojke prenaa optini signal v elektrini na RXD kontakt COM porta.

140

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

Napravico sem naredil na testni ploici (proto board-u) in izgleda tako:

Lepo se vidi ploski kabel, ki se kona s 3-polno vtinico za omenjeni 3-polni konektor, eprav potrebujemo samo dve ili, +5V in pin.

Sedaj je potrebno le e to informacijo prenesti na ekran. To naredi na PC-u program, ki mu reemo terminal emulator. Takih programov je ve, a po mojih izkunjah je najbolji sad domae slovenske pameti, naredil ga je in dal na splono brezplano uporabo v osebne namene gospod Vlado Brajer, dobite ga pa na spletni strani http://braypp.googlepages.com/terminal

Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik

141

Ko instalirate in poenete program, boste dobili priblino tako sliko:

In sedaj vano: potem ko ste nastavili hitrost na 9600 (kot pri open ukazu v Bascomu ), potem, ko ste izbrali COMport (PC jih lahko ima ve), in ko ste kliknili na Connect, morate zagotoviti vmesniku napajanje preko RTS signala tako, da kliknete na RTS tipko na desnem robu okna. In to je to.

To seveda vse lepo deluje, e testiramo napravo na nai delovni mizi, kjer imamo tudi osebni raunalnik z ekranom. Pokae pa se tudi potrebna, da iemo napake v programu tudi kasneje, ko je stvar e instalirana nekje recimo v kurilnici, ali na podstreju, kjer ne moremo z osebnim raunalnikom zraven.

142

Grafini LCD obutljiv na dotik | Bascom AVR za zaetnike

V ta namen sem si naredil posebno mikroprocesorsko ploico po sledei shemi: (Tudi ta se napaja kar iz napetosti 3-polnega konektorja)

Kot je videti, imamo samo mikroprocesor, ki daje na LCD podatke, ki jih prebere iz pina 2 3-polnega konektorja. Seveda stvar e dale ni tako udobna, kot ekran PC-a, saj imamo le dve kratki vrstici podatkov na LCD-u. Vsaka nova vrstica se pojavi na LCD-u spodaj, stara vrstica se premakne navzgor. Morda bi bilo smiselno uporabiti v ta namen kak moneji avr mikroprocesor in LCD z ve vrsticami, a nekaj moram pustiti tudi vam, da imate veselje naprej delati, kaj ne?

Bascom AVR za zaetnike | Grafini LCD obutljiv na dotik

143

Internetni naslovi
Sploni linki
http://www.atmel.com/products/avr/default.asp Originalna stran proizvajalca ATMEL, kjer lahko najdemo datasheete vseh AVRjev, program za programiranje (AVR Studio) itd. Originalna stran Bascom AVR / 8051 Stran za AVR navduence! Stran z zanimivimi projekti, primerna za zaetnike!

http://www.mcselec.com/ http://www.avrfreaks.net/ http://www.avrprojects.net/

Spletni forumi
http://www.elektronik.si/phpBB2/index.php http://www.svet-el.si/phpBB2/index.php http://www.elektron.si/forum/ http://www.mcselec.com/index2.php?option=com _forum&Itemid=59 Verjetno najveji slovenski forum, namenjen vsemu povezanim z elektroniko. Forum revije Svet elektronike; e en slovenski elektro forum Slovenski elektro forum v nastajanju (na bazi elektro-n foruma) Forum uporabnikov Bascoma (v sklopu strani www.mcselec.com)

Spletne trgovine
http://trgovina.svet-el.si/ Svet elektronike; literatura, programi, elementi (preteno za projekte, objavljene v SE), mikroprocesorji, KIT kompleti HTE (Ljubljana, Maribor, Celje); elementi http://www.ic-elect.si/ Just; orodje, merilna oprema, elementi

http://www.hte.si/ http://www.ic-elect.si/ http://www.just.si/

144

Internetni naslovi | Bascom AVR za zaetnike

Informacije o pogostih kontrolerjih


Razpored pinov, posebne funkcije, velikost FLASH, SRAM, EEPROM pomnilnika in e mnogo drugih, uporabnih informacij iemo v proizvajalevem tehninem katalogu (morda prevod ni najustrezneji e reem datasheet boste razumeli ...). Sledenjega najlaje dobimo kar na domai strani proizvajalca (torej www.atmel.com). Da pa na bo potrebno za vsako vezavo gledati omenjenih publikacij, smo v tej publikaciji izbrali nekaj najpogosteje uporabljenih AVR mikrokontrolerjev, od najibkejih do najzmogljivejih.

AT Tiny 2313
Flash: 2k SRAM: 128 EEPROM: 128 Pinov: 20 Drugo: 2xINT, 1xUART* *4MHz notranji oscilator ni toen, za UART komunikacijo uporabi 8MHz int. oscilator ali kristal.

AT Tiny 45
Flash: 4k SRAM: 256 EEPROM: Pinov: 8 Drugo: 3xADC, 3x INT

AT Mega 8515
Flash: 8k SRAM: 512 EEPROM: 512 Pinov: 40 Drugo: 2x INT, 1x UART

Bascom AVR za zaetnike | Informacije o pogostih kontrolerjih

145

AT Mega 8
Flash: 8k SRAM: 1024 EEPROM: 512 Pinov: 28 Drugo: 6xADC, 2x INT, 1x UART

AT Mega 16
<Flash: 16k SRAM: 1024 EEPROM: 512 Pinov: 40 Drugo: 8xADC, 1xUART, 2xINT

AT Mega 128
Flash: 128k SRAM: 4096 EEPROM: 4096 Pinov: 64 Drugo: 8xADC, 8xINT, 2xUART

AT Mega 2560
Flash: 256k SRAM: 8192 EEPROM: 4096 Pinov: 100 Drugo: 16xADC, 8xINT, 4xUART

146

Informacije o pogostih kontrolerjih | Bascom AVR za zaetnike

O publikaciji
Publikacija: Avtorji: Uredil: Natisnil: Naklada: Zgodovina: Bascom AVR za vse Vilko Susti, Gregor Maek, Jure Mikeln, Matja Skubic, Bojan Kova Gregor Maek Lado eleznik 30 izvodov 1.3.2008 10.7.2008 21.3.2009 Izid publikacije (seminar Bascom) Dopolnitev (Pomagala, ki mi pomagajo pri delu z mikroprocesorji) Dopolnitev (Nadaljevalni seminar Bascom)

Dovoljeno kopiranje publikacije ali dela le-te v elektronski ali papirni obliki, pri emer prosim navedite tudi vir in avtorje!

Bascom AVR za zaetnike | O publikaciji

147

Kazalo
Vsebina prironika Bascom AVR
Uvod ........................................................................................................................................................ 3 Uvod v publikacijo ............................................................................................................................... 3 AVR mikrokontrolerji ........................................................................................................................... 3 Program Bascom AVR .............................................................................................................................. 6 Predstavitev razvojnega okolja Bascom-AVR ...................................................................................... 6 Prvi program ........................................................................................................................................ 8 Simulator v Bascom-u.......................................................................................................................... 9 Simulator in UART ......................................................................................................................... 10 Programiranje AVR mikrokontrolerjev .................................................................................................. 11 Opis MiniPin razvojnega orodja in programiranje ............................................................................ 11 Fuse in Lock biti ..................................................................................................................................... 16 Priklop periferije na mikrokontroler...................................................................................................... 20 Vezava tipke ...................................................................................................................................... 20 Vezava LED diode .............................................................................................................................. 21 Vezava PFET in NFET tranzistorja ...................................................................................................... 22 Vezava LDC prikazovalnika ................................................................................................................ 23 Krmiljenje DC motorja ....................................................................................................................... 24 Uporaba izhodov ................................................................................................................................... 25 Direktno naslavljanje ......................................................................................................................... 26 Uporaba vhodov .................................................................................................................................... 27 Branje vhoda z ukazom IF-Then ........................................................................................................ 27 Branje vhoda z ukazom DEBOUNCE .................................................................................................. 28 Uporaba tekstovnega LCD zaslona ........................................................................................................ 29 Konfiguracija zaslona ......................................................................................................................... 29 Izpis na zaslon ukaz LCD ................................................................................................................. 29 Pozicioniranje teksta na zaslon ukaz LOCATE................................................................................. 30 Premik teksta po zaslonu v levo ali desno ukaz SHIFTLCD ............................................................. 31 Kreiranje lastnih znakov .................................................................................................................... 32 Inicializacija zaslona med delovanjem programa ukaz INITLCD ..................................................... 32 Komunikacija UART poiljanje ............................................................................................................ 33 148 Kazalo | Bascom AVR za zaetnike

RS-232 protokol ................................................................................................................................. 33 Komunikacijske nastavitve v Bascomu .............................................................................................. 34 Poiljanje podatkov PRINT .............................................................................................................. 35 Poiljanje podatkov v binarni in esdesetiki obliki........................................................................... 36 Komunikacija UART sprejemanje........................................................................................................ 37 Sprejem podatkov z ukazoma INKEY, WAITKEY ................................................................................ 37 Sprejem podatkov z ukazom INPUT .................................................................................................. 37 Multipleksiranje 7 segmentni LED ...................................................................................................... 38 Prekinitve (Interrupti)............................................................................................................................ 46 1-wire protokol in termometer DS1820 ................................................................................................ 48 Stack odloie.................................................................................................................................... 51 EEPROM pisanje in branje .................................................................................................................. 60 Zapisovanje v EEPROM in branje le-tega preko ERAM spremenljivk ................................................ 61 Zapisovanje v EEPROM in branje le-tega preko ukazov READEEPROM in WRITEEEPROM............... 62 $eeprom ........................................................................................................................................ 62 Readeeprom .................................................................................................................................. 62 Writeeeprom ................................................................................................................................. 62 433 MHz komunikacija preko RFM12B modulov .................................................................................. 63 Sploen opis ...................................................................................................................................... 63 Tipini primeri uporabe ..................................................................................................................... 64 Glavne znailnosti oddajnika ............................................................................................................. 64 Glavne znailnosti sprejemnika ......................................................................................................... 64 Opis vezja........................................................................................................................................... 65 Opis oddajnega programa ................................................................................................................. 66 Opis sprejemnega programa ............................................................................................................. 68 Komunikacija preko LAN omreja (modul MOXA NE-4100 serija) ........................................................ 70 Spletni vmesnik modula - nastavljanje .............................................................................................. 72 Testiranje TCP/IP povezave med raunalnikom in modulom ........................................................... 75 Polja spremenljivk ................................................................................................................................. 76 GSM modem Falcom A2 (A2D, Wavecom) ............................................................................................ 80 Opis vmesnikov za Modem Falcom: .................................................................................................. 81 Interface A - Napajanje sistema .................................................................................................... 81 Interface B Seijski vmesnik V24 RS232 ....................................................................................... 81 Interface C RJ45 Vmesnik za Audio in opcijsko RS232................................................................ 82 Interface D GSM antena ............................................................................................................. 82 Reset tipka ......................................................................................................................................... 83 Tehnini podatki modema Falcom .................................................................................................... 84 Bascom AVR za zaetnike | Kazalo 149

Kratice................................................................................................................................................ 84 Priklop modema ................................................................................................................................ 84 AT UKAZI ............................................................................................................................................ 85 GSM data services ............................................................................................................................. 87 MiniPin in SMS....................................................................................................................................... 88 Uvod .................................................................................................................................................. 88 Priklop Falcom modema na MiniPin ................................................................................................. 89 Poiljanje SMS sporoila .................................................................................................................... 92 Sprejem SMS sporoila ...................................................................................................................... 93 Kabel tester ........................................................................................................................................... 94 Uvod .................................................................................................................................................. 94 Mikroprocesorska enota ................................................................................................................... 95 Opis delovanja ................................................................................................................................... 97 Delovanje izhodov testerja ................................................................................................................ 99 Tiskano vezje in montana shema glavne enote ........................................................................... 99 Oddaljena enota z LED diodami ...................................................................................................... 100 Tiskano vezje im montana shema oddaljene enote .................................................................. 101 Vmesnik RS232 ................................................................................................................................ 102 Delovanje ..................................................................................................................................... 102 Tiskano vezje RS232 adapterja .................................................................................................... 103 Kabel za testiranje kratkega stika .................................................................................................... 103 Prikljuni konektor....................................................................................................................... 104 Pregled povezav posameznih kablov .............................................................................................. 104 UTP kabel ..................................................................................................................................... 104 UTP Cross kabel ........................................................................................................................... 105 UTP 10 ......................................................................................................................................... 105 ISDN ............................................................................................................................................. 105 Telefon......................................................................................................................................... 106 Poraba in napajanje vezja................................................................................................................ 106 Shema celotnega vezja .................................................................................................................... 108 Seznam materiala ............................................................................................................................ 109 Opis programa ................................................................................................................................. 110 Testiranje seriskega porta RS 232 ............................................................................................... 112 Piezzo ........................................................................................................................................... 113 Ohije ............................................................................................................................................... 114 Velike tevilke na prikazovalniku LCD-2x16 ........................................................................................ 116 AVR-DOS datoteni sistem (AVR-DOS File System) .......................................................................... 123 150 Kazalo | Bascom AVR za zaetnike

Obvezni uvod ................................................................................................................................... 123 Neobvezni uvod ............................................................................................................................... 123 Povezava MMC kartice z mikroprocesorjem ................................................................................... 124 Povezava kartice z AVR-DOS programjem....................................................................................... 125 Zakljuek .......................................................................................................................................... 128 Grafini LCD obutljiv na dotik ............................................................................................................ 129 Bascom program ............................................................................................................................. 131 Krmiljenje na dotik obutljive folije................................................................................................. 133 Zakljuek .......................................................................................................................................... 135 Pomagala, ki mi pomagajo pri delu z mikroprocesorji ........................................................................ 136 3-pinski konektor ............................................................................................................................. 136 V programu predvideti programska pomagala za laje odkrivanje napak. ..................................... 137 Internetni naslovi ................................................................................................................................ 144 Sploni linki ...................................................................................................................................... 144 Spletni forumi .................................................................................................................................. 144 Spletne trgovine .............................................................................................................................. 144 Informacije o pogostih kontrolerjih .................................................................................................... 145 AT Tiny 2313 ................................................................................................................................... 145 AT Tiny 45 ........................................................................................................................................ 145 AT Mega 8515.................................................................................................................................. 145 AT Mega 8........................................................................................................................................ 146 AT Mega 16...................................................................................................................................... 146 AT Mega 128.................................................................................................................................... 146 AT Mega 2560.................................................................................................................................. 146 O publikaciji ......................................................................................................................................... 147 Kazalo .................................................................................................................................................. 148

Bascom AVR za zaetnike | Kazalo

151

Gregor MAEK, Vilko SUSTI,

152

Kazalo | Bascom AVR za zaetnike

Jure MIKELN, Matja SKUBIC, Bojan KOVA Bascom AVR za zaetnike

You might also like