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


Pridružen-a: Sre 03 Sep 2008 11:19 Prispevkov: 10 Aktiv.: 0.05 Kraj: koracice
|
Objavljeno: Pet Sep 05, 2008 4:37 pm Naslov sporočila: IR sprejemnik |
|
|
Mene pa zanima zakaj mi noče štet prihodov in odhodov? IR oddajnik je preizkušen in deluje.
Mikrokontroler je ATtiny2313, sprejemni modul TSOP1840
koda ki na žalost ne deluje :
$regfile = "ATtiny2313.dat"
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcd = 16 * 2
Cursor Off Noblink
Config Pinb.1 = Input
Config Pinb.3 = Input
Dim A As Byte
Dim B As Byte
A = 0
B = 0
Cls
Locate 1 , 1
Lcd "Prihod"
Locate 2 , 1
Lcd "Odhod"
Do
If Pinb.1 = 1 Then Goto Prihod
If Pinb.3 = 1 Then Goto Odhod
Waitms 15
Loop
Prihod:
If Pinb.3 = 1 And Pinb.1 = 1 Then
Incr A
Locate 1 , 10
Lcd A
End If
Return
Odhod:
If Pinb.1 = 1 And Pinb.3 = 1 Then
Incr B
Locate 2 , 10
Lcd B
End If
Return
End |
|
Nazaj na vrh |
|
 |
gkrusi Član



Pridružen-a: Tor 24 Jul 2007 17:22 Prispevkov: 811 Aktiv.: 3.72 Kraj: Ptuj
|
Objavljeno: Pet Sep 05, 2008 6:04 pm Naslov sporočila: |
|
|
Kaj pa se dogaja? Se sploh ka izpiše na LCDju? Če se izpiše vrednost 0 in se ne povečuje potem verjetno ne prejemaš signala od senzorja ...preveri s kako LED diodo direktno na vhodu (s preduporom).
Sicer pa kot vidim morata biti aktivirana oba senzorja za povečanje spremenljivke, kar se mi zdi nekoliko nelogično; da se prvo vprašaš po vrednosti enega senzorja, potem pa še po vrednosti obeh (bi razumel, če bi bil drugi while ali pa kaj v tem smislu, ne pa dva zaporedna if stavka le da je drugi malo bolj dopolnjen)...
Kot izboljšava pa mislim da bi lahko spremeljivke definiral z malo večjo obliko (byte je verjetno mišljen 1 bajt, torej šteje samo do 255).
Drugače pa jaz ne vidim nekih napak, je pa res da v basicu nisem "doma". _________________ Zakaj bi bilo preprosto, če je lahko zakomplicirano??? |
|
Nazaj na vrh |
|
 |
jstajnko Član


Pridružen-a: Sre 03 Sep 2008 11:19 Prispevkov: 10 Aktiv.: 0.05 Kraj: koracice
|
Objavljeno: Pet Sep 05, 2008 6:45 pm Naslov sporočila: |
|
|
v zanki:
Do
If Pinb.1 = 1 Then Goto Prihod
If Pinb.3 = 1 Then Goto Odhod
Waitms 15
Loop
gledam s katere strani je prekinjen signal, nato pa grem v podprogram.
Po mojem se zatakne v podprogramu. Moralo bi prištevati pa noče.
v podprogramu bi moral gledati stanja: 0,1 ; 0,0 ; 1,0 ; 1,1 in šele nato po teh izpolnjenih pogojih prišteti prihod oz. odhod. Katere ukaze moram uporabiti? |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pet Sep 05, 2008 6:57 pm Naslov sporočila: |
|
|
Poiskusi tako napisati, da vidiš do koder ti pride program. Nato poročaj.
Poiskusni program:
Koda: |
$regfile = "ATtiny2313.dat"
$crystal = 4000000
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0
Config Lcd = 16 * 2
Cursor Off Noblink
Config Pinb.1 = Input
Config Pinb.3 = Input
Dim A As Byte
Dim B As Byte
A = 0
B = 0
Cls
Locate 1 , 1
Lcd "Prihod"
Locate 2 , 1
Lcd "Odhod"
Waitms 500
Cls
Do
Locate 1 , 1 : Lcd "Sem v zanki"
If Pinb.1 = 1 Then Goto Prihod
Locate 1 , 1 : Lcd "Za prvim IF"
If Pinb.3 = 1 Then Goto Odhod
Locate 1 , 1 : Lcd "Za drugim IF"
Waitms 100
Loop
Prihod:
Locate 1 , 1 : Lcd "Sem v Prihod"
If Pinb.3 = 1 And Pinb.1 = 1 Then
Incr A
Locate 1 , 10
Lcd A
End If
Locate 1 , 1 : Lcd "Konec Prihod"
Waitms 500
Return
Odhod:
Locate 1 , 1 : Lcd "Sem v odhod"
If Pinb.1 = 1 And Pinb.3 = 1 Then
Incr B
Locate 2 , 10
Lcd B
End If
Locate 1 , 1 : Lcd "Konec Odhod"
Waitms 500
Return
End
|
Dodal sem ukaze Wait, tao da program ne bo finkcioniral pravilno, sicer bo štel, ampak bolj počasi bo vse skupaj potekalo. Da lahko prebereš. Pa igraj se malo pa stiskaj pa malo spremeni to poiskusno kodo, če ti bo kaj šlo navzkriž. _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pet Sep 05, 2008 7:00 pm Naslov sporočila: |
|
|
Sploh pa, povej za kaj rabiš to. Če je za kakšen avtek z IR senzorji, potem že vem kaj je narobe. Če pa kaj druga pa  _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
Dexboy Član



Pridružen-a: Pon 01 Sep 2008 22:46 Prispevkov: 1116 Aktiv.: 5.46 Kraj: Horjul
|
Objavljeno: Pet Sep 05, 2008 7:12 pm Naslov sporočila: |
|
|
Lahko bi bilo za parkirno hišo
Avti noter, prišteva
Avti ven, odšteva
Nisem prebral celega programa (tega drugega), prvega sem in mislim da bi to lahko bilo to - poplnoma enostavna varianta drugače  _________________ Imagination is more important than knowledge.
-Albert Einstein- |
|
Nazaj na vrh |
|
 |
jstajnko Član


Pridružen-a: Sre 03 Sep 2008 11:19 Prispevkov: 10 Aktiv.: 0.05 Kraj: koracice
|
Objavljeno: Pet Sep 05, 2008 7:32 pm Naslov sporočila: |
|
|
Dexboy točno tako. Program bi naj prišteval prihode in odhode.
program_er grem preizkušat tvojo kodo nato poročam. Hvala zaenkrat |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pet Sep 05, 2008 7:35 pm Naslov sporočila: |
|
|
Povej še kaj o hardweru. Kako imaš postavljeni celici, je oddajna IR priključena, kam... potem bo lžje (nam) sestaviti kodo, ki bo delovala oziroma popraviti tvojo. Kako naj bi strojno to delovalo. _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
Vlado Član

Pridružen-a: Sre 03 Mar 2004 21:35 Prispevkov: 563 Aktiv.: 2.38 Kraj: Ljubljana
|
Objavljeno: Pet Sep 05, 2008 10:28 pm Naslov sporočila: IR sprejemnik |
|
|
Koda: |
Config Pinb.1 = Input
Config Pinb.3 = Input |
Uporabi ukaz Config PortB.x = Input, potem postavi pin na visok nivo Portb.x = 1.
Stanje pina beri z ukazom IF PinB.x= (0/1).
Vlado |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pet Sep 05, 2008 10:36 pm Naslov sporočila: |
|
|
In za vsak slučaj na koncu vsakega podprograma še enkrat napiši Portb.x = 1, ker včasih se pin ne postavi nazaj na 1, ko da daš na 0 ali obratno. _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.04 Kraj: Divača (Kačiče)
|
Objavljeno: Pet Sep 05, 2008 11:03 pm Naslov sporočila: |
|
|
program_er je napisal/a: |
In za vsak slučaj na koncu vsakega podprograma še enkrat napiši Portb.x = 1, ker včasih se pin ne postavi nazaj na 1, ko da daš na 0 ali obratno. |
Tole me spominja na lov na čarovnice... _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
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: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|