 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Sob Feb 02, 2013 5:33 pm Naslov sporočila: Atmega8 preverjanje stanja vhoda (tipka) |
|
|
Lep pozdrav!
Izdelujem program za nadzor bazena. Ker sem ravno začel programirati, imam začetniške težave. Na vhod PD0 sem priključil tipko, s katero bi vklopil rele na izhodu, zraven pa izpisal določeno besedilo na LCD display-ju. Problem je v tem, da ko program teče, tipka ne reagira, dokler ne pride program (ki je v zanki) do točke preverjanja vhodnih portov. Kako bi rešil ta problem, da bi kjerkoli v programu lahko preverjal stanje na vhodu?
Koda: |
Do
Inputtest:
Debounce Pind.0 , 1 , Rele1stevec
Debounce Pind.0 , 0 , Standby
Rele1stevec:
Incr Stevec
If Stevec = 2 Then
Stevec = 0
End If
Goto Izbira1
Izbira1:
If Stevec = 1 Then
Goto Rele1
Else
Goto Izbira2
End If
Izbira2:
If Stevec = 0 Then
Goto Rele1neg
Else
Goto Standby
End If
Rele1:
Pinc.5 = 1
Locate 1 , 1
Lcd "Vklop crpalke"
Waitms 300
Cls
Goto Standby
Rele1neg:
Pinc.5 = 0
Locate 1 , 1
Lcd "Izklop crpalke"
Waitms 300
Cls
Goto Standby
Standby:
Locate 1 , 1
Lcd "Temp.bazena: c"
Locate 2 , 1 'izpišem besedilo
Lcd "Temp.kolekt: c"
Waitms 500
Cls
Locate 1 , 1
Lcd "Temp.zunaj: c"
Waitms 500
Cls 'počakam 1 sekudnoLocate 1 , 1
Loop
End
|
_________________ Lep pozdrav! |
|
Nazaj na vrh |
|
 |
Jaka57 Moderator



Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5824 Aktiv.: 24.51 Kraj: Grosuplje
|
Objavljeno: Sob Feb 02, 2013 5:46 pm Naslov sporočila: |
|
|
Mogoče s prekinitvijo (interupt).
Nekaj primerov najdeš tukaj. Mislim, da imaš tudi v Helpu Bascoma Helpu Bascoma opis kako. _________________ Lp, Jaka |
|
Nazaj na vrh |
|
 |
LEDuser Član


Pridružen-a: Pon 31 Mar 2008 12:06 Prispevkov: 1104 Aktiv.: 5.25 Kraj: Ljubljana
|
Objavljeno: Sob Feb 02, 2013 6:00 pm Naslov sporočila: |
|
|
Prvo kar si naredil narobe je, da nesmiselno bereš tipko. Če imaš tipko vezano na maso (pritisnjeno stanje "0") potem moraš napisati tako:
Debounce , Pind.0 , 0 , Rele1stevec , Sub
Pri tem ukazu ti bo ob pritisku na tipko skočilo na interrrupt "Rele1stevec" _________________ Razsvetljujemo od leta 1920! |
|
Nazaj na vrh |
|
 |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Sob Feb 02, 2013 6:21 pm Naslov sporočila: |
|
|
Tipko sem vezal na PIN in na +5V z 10k uporom. Hvala za pomoč! _________________ Lep pozdrav! |
|
Nazaj na vrh |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5538 Aktiv.: 24.02 Kraj: Domzale
|
Objavljeno: Sob Feb 02, 2013 9:34 pm Naslov sporočila: |
|
|
Vse podprograme zmeci ven iz do loopa in jih klici s sub funkcijo, kot je napisal leduser. Podprogram mora biti zakljucen z return in ne z goto!!!
Do
Berem tipko 1
Loop
Sub1:
Naredim nekaj za tipko 1
Return
Lp, g _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
 |
lamela123 Član

Pridružen-a: Sob 10 Mar 2012 15:15 Prispevkov: 235 Aktiv.: 1.45 Kraj: Celje
|
Objavljeno: Ned Feb 03, 2013 10:31 am Naslov sporočila: |
|
|
Koda: |
Config Portd = Input
Config Portc = Output
Config Debounce = 25
Config Timer0 = Timer , Prescale = 8
Dim Stevec As Byte
On Timer0 Inputtest
Enable Interrupts
Enable Timer0
Do
Inputtest:
Debounce Pind.0 , 1 , Rele1stevec
Debounce Pind.0 , 0 , Standby
Loop
Standby:
Locate 1 , 1
Lcd "Temp.bazena: c"
Locate 2 , 1
Lcd "Temp.kolekt: c"
Waitms 500
Cls
Locate 1 , 1
Lcd "Temp.zunaj: c"
Waitms 500
Cls
Goto Inputtest
Rele1stevec:
Incr Stevec
If Stevec = 2 Then
Stevec = 0
End If
Goto Izbira1
Izbira1:
If Stevec = 1 Then
Goto Rele1
Else
Goto Izbira2
End If
Izbira2:
If Stevec = 0 Then
Goto Rele1neg
End If
Return
Rele1:
Pinc.5 = 1
Locate 1 , 1
Lcd "Vklop crpalke"
Waitms 300
Cls
Goto Standby
Rele1neg:
Pinc.5 = 0
Locate 1 , 1
Lcd "Izklop crpalke"
Waitms 300
Cls
Goto Standby
End
|
Mi lahko prosim nekdo popravi kodo, ker se ne znajdem z tem interruptom. _________________ Lep pozdrav! |
|
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 Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 11 dni
Powered by phpBB © 2001, 2005 phpBB Group
|