|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
poldi Novinec
Pridružen/-a: Pet Jan 2007 20:53 Prispevkov: 4
|
Objavljeno: Ned Maj 13, 2007 8:32 am Naslov sporočila: utripalec z Atmelom 2313 in Bascomom |
|
|
spoštovani,
trudim se narediti utripalec, ko bi se ob pritisnjeni tipki na Pind.0 postavil izhod Portb.0 na 1 za 20s in po 1 min zopet na 1 za 20 s (če še vedno tiščiš tipko), vmesnih 40 s bi bil izklopljen. To bi rad neredil za 2 vhoda / izhoda popolnoma neodvisno (Pind.0 in .1 / Portb.0 in .1).
Ali je že kdo počel kaj takega, z Bascomom?
Lep pozdrav, Poldi |
|
Nazaj na vrh |
|
|
Gustav Profesionalec
Pridružen/-a: Pon Jun 2005 17:19 Prispevkov: 768
|
Objavljeno: Ned Maj 13, 2007 10:10 am Naslov sporočila: |
|
|
Naloga je preprosta, zato ti bom orisal konceptualno resitev, programcek pa bos napisal sam:
1: Najprej usposobi en timer tako, da bo sluzil kot casovna referenca s svojo prekinitvijo; oglej si npr. primere "ure" z mikrokontrolerjem oz. programa, ki bo prizigal in ugasal LEDico z doloceno frekvenco (natancno v okviru natancnosti oscilatorja MCUja).
2: Ker ne potrebujes silne natancnosti (tu se vedno govorimo o natancnosti ranga milisekund), lahko stanje vhodov preverjas v glavni zanki. To je zaradi debounce-a najbolj casovno potratno.
3: Za vsak vhod pripravi dve spremenljivki, v kateri bos vpisal stevilo "timer tickov" (najmanjsih casovnih enot, ki jih bo tvoj timer stel - ce bo npr. stel sekunde, bo to stevilo sekund do izklopa in cas mirovanja, ce bo stel milisekunde, potem bo vrednost tisockrat visja, itd.).
4: V glavni zanki preverjas stanje tipke samo, ce sta obe spremenljivki postavljeni na 0 (torej stevca "mirujeta" in se je ena minuta ze iztekla). Ko je na vhodu ustrezno stanje, postavis prvi stevec na 20 (ce stejes sekunde), drugega na 40, postavis izhod na 1 in prepustis nadalnje delo prekinitveni proceduri timerja.
5: Ob vsaki prekinitvi, ki jo sprozi timer, v handlerju pogledas ali je prva spremenljivka drugacna od 0 in ce je, potem jo zmanjsa za 1 ter ce pride do 0, postavi izhod na 0. Ce prva spremenljivka ni drugacna od 0, potem pogledas drugo; ce je druga drugacna od 0, potem jo zmanjsas za 1. Eventuelno bosta obe spremenljivki prisli do 0 (po 20+40 sekundah) in glavna zanka bo spet preverjala vhod in ce bo tipka se kar pritisnjena, se bo vse skupaj ponovilo.
To je vse. Naredis lahko za poljubno vhodov/izhodov, z razlicnimi casi, vse po istem principu. |
|
Nazaj na vrh |
|
|
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu You cannot attach files in this forum You cannot download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|