www.elektronik.si
Kako prižigati s 4 tipkami 4 različne programe z attiny2313

www.elektronik.si -> Bascom sekcija

Avtor: elektr@nik PrispevekObjavljeno: Čet Maj 12, 2016 11:56 pm    Naslov sporočila:  Kako prižigati s 4 tipkami 4 različne programe z attiny2313
----------------------------------------------------------------------------
Mene zanima kako sprogramirati čip attiny2313 da bodo 4 tipke preklapljale med 4imi različnimi programi. Program bi pisal v Bascom AVR

Za pomoč se vam že v naprej zahvaljujem.

Avtor: lojzek PrispevekObjavljeno: Pet Maj 13, 2016 6:07 am    Naslov sporočila:  
----------------------------------------------------------------------------
Za to obstaja toliko variant, kolikor je programerjev:)

Nisem Bascom-aš, ampak preden ti kdo poda odgovor, poskusi natančneje vprašat oz razložit, kaj hočeš.
Npr meni je nejasno, če želiš imeti "fizično" 4 različne programe v uC. tako kot bi na začetku programa imel izbiro, v kateri program naj skoči in potem ostane v tem programu za večno (no ja dokler uC ne ugasneš in spet prižgeš) .
Ali pa želiš, da ko pritisneš tipko, uC izvede nek program (podprogram) in se vrne nazaj v glavni program.

No ja, saj princip je za oboje enak...
Nekje na začetku preverjaš, katera tipka je pritisnjena. Toliko časa, dokler ni pritisnjena. Potem pa skočiš tja, kamor ti pritisnjena tipka kaže. To je grob opis moje prve domneve.
Druga domneva gornji opis dopolnjuje v tem, da med čakanjem na pritisk tipke uC počne še nekaj drugega. Ko je tipka pritisnjena, pa skoči tja, kamor tipka kaže. Tam v podprogramu izvede kar mora in se potem vrne nazaj na preverjanje tipk (+ ostalo, kar takrat izvaja).

Avtor: igo PrispevekObjavljeno: Pet Maj 13, 2016 6:55 am    Naslov sporočila:  
----------------------------------------------------------------------------
Morda pa je mislil tako, da tipko pritisne za trenutek, izbran program (zaporedje) se mora pa nato izvajati ves čas, dokler ne izbere drugega.

V tem primeru je shema programa taka:

Zanka:

Preveri se stanje tipk:
Če je pritisnjena tipka X, se v stanje spremenljivke S shrani vrednost med 0 in 3 (lahko tudi 1 do 4, ob zagonu je pa 0, dokler se prvič ne pritisne neke tipke).
Če ni nič pritisnjeno, se ohrani dotedanja vrednost spremenljivke S.

Preveri se stanje spremenljivke S:
Glede na njeno vrednost se izvede izbran podprogram (zaporedje).

Ko je zaporedje dokončano, se skoči na začetek Zanke in vse skupaj se ponavlja. Po potrebi se z nekim števcem ali časom omeji število ponovitev oziroma trajanje zanke (spremenljivka S spet dobi vrednost 0).

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Sob Maj 14, 2016 10:03 am    Naslov sporočila:  
----------------------------------------------------------------------------
Ali hočeš da ob enkratnem pritisku se izvaja določen program ali hočeš da je treba tipko tiščati kadar se izvaja določen program?

Avtor: elektr@nik PrispevekObjavljeno: Sre Jun 01, 2016 8:25 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Jaz sem mislil da ko pritisneš prvo tipko se izvaja prvi program in izklopi druge 3 in ko pritisneš drugo tipko se vključi drugi program in izklopi druge 3 programe itd.

Avtor: igo PrispevekObjavljeno: Čet Jun 02, 2016 7:30 am    Naslov sporočila:  
----------------------------------------------------------------------------
Kakšno je sploh tvoje poznavanje Bascoma?
Poznaš osnovno strukturo programa in sintakso?
Tole si že prebral?

Kako naj bi potekal tvoj program, sem ti že zgoraj opisal. S tipkami nastavljaš vrednost spremenljivke, vse ostalo v programu pa se izvaja v odvisnosti od te vrednosti.

Za osnovo poišči en celoten, povsem delujoč in dovolj obširen program, ki vsebuje tipke, podprograme, števce, ... nato pa vrstice nadomeščaj s svojimi.

Jaz ne delam z Bascomom, zato lahko le z besedami opišem program.
Koda:

Do
 pBereTipke ; skoči prebrat tipke in se vrne z znano novo vrednostjo spremenljivke tipk St

 If St=1 , kliče podprogram pZap1
 If St=2 , kliče podprogram pZap2
 If St=3 , kliče podprogram pZap3
 If St=4 , kliče podprogram pZap4
Loop

;;; podprogrami
pBereTipke
 If pinTipka1 , St = 1
 If pinTipka2 , St = 2
 If pinTipka3 , St = 3
 If pinTipka4 , St = 4
Return

pZap1 ; zaporedje 1
 izhod1 = 1
 Wait 1
 izhod2 = 0
 Wait 1
Return

pZap2 ; zaporedje 2
 izhod1 = 1
Wait 2
  izhod1 = 0
Wait 2
Return

pZap3
  izhod1 = 1
 Wait 1
  izhod1 = 0
 Wait 2
Return

pZap3
 izhod1 = 1
 Wait 1
 izhod1 = 0
 Wait 3
Return

Avtor: ObelixKraj: Maribor PrispevekObjavljeno: Čet Jun 02, 2016 8:27 am    Naslov sporočila:  
----------------------------------------------------------------------------
elektr@nik je napisal/a:
Jaz sem mislil da ko pritisneš prvo tipko se izvaja prvi program in izklopi druge 3 in ko pritisneš drugo tipko se vključi drugi program in izklopi druge 3 programe itd.

Razloži podrobneje kaj naj bi tvoj program (oiroma štirje programi) počel. Ne vidim smisla oziroma potrebe po štirih programih. Čeprav gre najbrž samo za nesporazum o tem, kaj sploh je "program".

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group