12.07.2015 Views

1. PDF dokument (13 MB) - dLib.si

1. PDF dokument (13 MB) - dLib.si

1. PDF dokument (13 MB) - dLib.si

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

PROGRAMSKA OPREMA – SPLETNE STRANItrenutek njegovega delovanja zelonatanïno definirati program. Zgorajopisani program namreï postavi logiïneenice na zaïetku programa (Portb= 255). V nadaljevanju programa patega ne naredimo veï. Zato bi kazalo,da bi program popravili tako, da bilogiïne enice vpisali v zanki Do-Loop,kot kaže naslednji program.Config Portb = OutputConfig Portd.0 = InputDim Ledica As BitDim Tipka As Bit$regfile = “attiny23<strong>13</strong>.dat”Slika 9. Vezava tipke na mikrokontrolerDoPoglejmo <strong>si</strong>, kako to pisati v Bascom-u.Config Portb = OutputConfig Portd.0 = InputPortb = 255Dim Ledica As BitDim Tipka As Bit$regfile = “attiny23<strong>13</strong>.dat”DoIf Pind.0 = 0 ThenPortb.0 = LedicaLedica = Not LedicaWait 1ElsePortb.1 = LedicaLedica = Not LedicaWait 1End IfLoopOpazili boste, da smo na zaïetkuprograma definirali, katera vratabodo vhodna oziroma izhodna. Natosmo na PORTB vpisali vrednost 255,kar je binarno 1111 111<strong>1.</strong> To smo naredilizato, da vse LED-ice ugasnemo.Zdaj že poznamo zanko Do-Loop, vkateri se nahaja stavek IF ELSE. Programje jasen: ïe bo logiïno stanjena prikljuïku Portd.0 = 0, potem seizvede prvi del IF stavka, v nasprotnemprimeru pa drugi. Pozorni bralciste opazili neskladje med zadnjimstavkom in programom. V programuje zapisano If Pind.0=0,mi smo pa zapisali, ïe bo stanje naprikljuïku Portd.0 = 0. Oboje je pravin zaïetnikom v programiranju sprvadela malce težav. Tukaj bo pomagalonekaj znanja o notranji zgradbimikrokontrolerjev AVR. Ti imajo 3registre, ki so vezani na posamezniprikljuïek. Obstajajo registri PORTx,PINx in DDRx. Register DDRx je namenjentemu, da AVR-ju doloïimo,ali bo doloïen prikljuïek vhodni aliizhodni. îe postavimo DDRx na 0,bo doloïen prikljuïek definiran kotvhodni, ïe postavimo DDRx na 1, botaisti prikljuïek izhodni.V register PORTx vpišemo vrednost naposameznem prikljuïku, medtem koiz registra PINx beremo vrednost naposameznem prikljuïku, ki je na shemioznaïen kot Portx.y. îe bi namestopisanega stavka If Pind.0=0 napisaliIf Portd.0=0, bi pravzaprav bralivrednost, ki smo jo nazadnje vpisalina Portd.0. Avtor Bascoma nam jedefinicijo prikljuïkov poenostavil zukazom CONFIG, kjer definiramo,ali je posamezni prikljuïek vhod aliizhod, kot je razvidno v programu.Ko boste omenjeni program prevedliin z njim sprogramirali mikrokontroler,boste videli, da sprva utripa LED-icana prikljuïku PortB.<strong>1.</strong> îe pritisnemotipko SW1, bo zaïela utripati LEDicana PortB.0. Pri tem boste verjetnoopazili, da se v primeru, da pritisnemotipko, ko je vklopljena LED-ica,ta ne ugasne. Razlog za to je v tem,da moramo mikrokontrolerju za vsakPortb = 255If Pind.0 = 0 ThenPortb.0 = LedicaLedica = Not LedicaWait 1ElsePortb.1 = LedicaLedica = Not LedicaWait 1End IfLoopKot smo opazili, nam program lepodeluje, vendar se v tem lepem delovanjuskriva past, ki jo elektronikipoznamo pod besedo odskakovanje.Kaj mislim s tem? Vsaka tipka alistikalo nista idealna, kar se odraža vodskakovanju kontakta. To pomeni,da stikalo ne preklopi iz logiïne1v0,paï pa je vmes veliko preskakovanjaiz1v0inobratno. Tega odskakovanjaponavadi ne zaznamo, saj današnjenaprave s programsko opremo ta efektuspešno prepreïujejo. V našem primeruje program tako napisan, da ignoriraodskakovanje. îe pa bi napisali malcedrugaïen program, bi ugotovili, da stikna tipkah prav neprijetno odskakuje,kar mikrokontroler z lahkoto zazna.In to odskakovanje lahko povzroïizaplete pri naši napravah. Zato so programerjiizumili naïin, ki prepreïujeneželeno zaznavanje odskakovanja.Ponavadi se odskakovanje programskoreši tako, da program spremlja stanjetipke v doloïenem ïasovnem intervalu– npr. 100 milisekund. îe programugotovi, da je tipka v npr. 100 milisekundahres pritisnjena, potem je to292 Ventil 14 /2008/ 3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!