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


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Sre Jun 30, 2010 1:12 pm Naslov sporočila: Bascom timer za AVR 2313 |
|
|
Pozdravljeni,
Ker sem čisti začetnik v programiranju bi vas prosil za malo pomoči, po prebiranju dokumentacije sem spravil skupaj naslednji program, ki pa ne dela po mojih željah in sicer:
$regfile = "2313def.dat"
$crystal = 3686400
Config Portd.2 = Input
Config Portd.3 = Input
Config Portb.0 = Output
Config Portd.6 = Output
Config Debounce = 40
Main:
Do
Debounce Pind.2 , 1 , Prog , Sub
Debounce Pind.3 , 1 , Program , Sub
Loop
Prog:
Set Portd.6
Wait 5
Wait 5
Reset Portd.6
Return
Program:
Set Portb.0
Wait 3
Reset Portb.0
Return
probal sem tugi goto, pa še vedno ni delalo tako kot sem hotel.
Torej moja zahteva je bila, da naredim dve tipki in z vsako lahko vklopim svojo luč za določen čas ampak v mojem primeru lahko naredim to samo za eno naenkrat, torej mi nekaj manjka.
Pa še vprašanje kako doseči daljše čase do cca 60 minut (ali dam toliko waitov da bo to cca 60 min)
Za pomoč se vam zahvaljujem
Črto |
|
Nazaj na vrh |
|
 |
fluffy111 Član


Pridružen-a: Sob 13 Dec 2008 21:44 Prispevkov: 351 Aktiv.: 1.75 Kraj: Ptuj
|
Objavljeno: Sre Jun 30, 2010 2:33 pm Naslov sporočila: |
|
|
To imaš Attiny2313? Ali kaj drugega?
Lp |
|
Nazaj na vrh |
|
 |
crto Član


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Sre Jun 30, 2010 2:37 pm Naslov sporočila: |
|
|
AT90s2313 vem da je že star in ga ne delajo več vendar mi jih kar precej leži v predalih pa jih bi uporabil.
Nazadnje urejal/a crto Sre Jun 30, 2010 2:38 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
lado Član


Pridružen-a: Pon 09 Feb 2004 13:22 Prispevkov: 1004 Aktiv.: 4.24 Kraj: Trbovlje
|
Objavljeno: Sre Jun 30, 2010 2:38 pm Naslov sporočila: |
|
|
ko si v wait se program ustavi in toliko časa ne dela nič.....bo potrebno uporabit prekinitve, ali pa časovnike... |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3360 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sre Jun 30, 2010 3:03 pm Naslov sporočila: |
|
|
Hm, Kako sta vezani tipki? Imata zunanje pullup upore? (Notranjih nisi vključil.)
Debounce si programiral tako, da se podprogram vključi, ko skoči napetost na tipkah gor. |
|
Nazaj na vrh |
|
 |
Obelix Član

Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1881 Aktiv.: 9.04 Kraj: Maribor
|
Objavljeno: Sre Jun 30, 2010 3:13 pm Naslov sporočila: |
|
|
crto je napisal/a: |
AT90s2313 vem da je že star in ga ne delajo več vendar mi jih kar precej leži v predalih pa jih bi uporabil. |
Če ti jih kakšnih 100 leži v predalih, sem zainteresiran.
LpA |
|
Nazaj na vrh |
|
 |
crto Član


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Sre Jun 30, 2010 3:36 pm Naslov sporočila: |
|
|
Ja pullup upori so zunanji proti masi,vklop pa se vrši proti +5V, saj tipki delujeta vendar ena po ena torej ko vklopim prvo mora najprej biti tisti čas(wait) mimo da lahko ponovno prvo ali drugo, to je moj problem.
Ja valda jih ni ravno 100 je pa jih kar nekaj.
lp |
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3360 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Sre Jun 30, 2010 4:26 pm Naslov sporočila: |
|
|
crto je napisal/a: |
Ja pullup upori so zunanji proti masi,vklop pa se vrši proti +5V, saj tipki delujeta vendar ena po ena torej ko vklopim prvo mora najprej biti tisti čas(wait) mimo da lahko ponovno prvo ali drugo, to je moj problem.
lp |
Hja, poizkusi tako: veži pull up upore proti +5V, stikala proti masi in debounce naj tudi lovi prehode na ničlo, torej drugi parameter 0.
Tako se običajno to dela. |
|
Nazaj na vrh |
|
 |
int47 Član


Pridružen-a: Pon 15 Dec 2003 0:10 Prispevkov: 2104 Aktiv.: 8.88 Kraj: Ljubljana
|
Objavljeno: Sre Jun 30, 2010 5:26 pm Naslov sporočila: |
|
|
Citiram: |
Ja pullup upori so zunanji proti masi |
pullup proti masi=pulldown, razen če je VCC na masi.
Če ne želiš uporabljati prekinitev, lahko poskusiš nekaj podobnega (v programu manjkajo definicije spremenljivk):
Koda: |
Main:
stevec_portd_6 = 0
stevec_portb_0 = 0
Do
Debounce Pind.2 , 1 , Prog , Sub
Debounce Pind.3 , 1 , Program , Sub
if stevec_portd_6 = 0 then Reset Portd.6
else stevec_portd_6=stevec_portd_6 - 1
end if
if stevec_portb_0 = 0 then Reset Portb.0
else stevec_portb_0 = stevec_portb_0 - 1
end if
waitms 100
Loop
Prog:
Set Portd.6
stevec_portd_6=10*5
Return
Program:
Set Portb.0
stevec_portb_0=10*5
Return
|
|
|
Nazaj na vrh |
|
 |
crto Član


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Sre Jun 30, 2010 8:30 pm Naslov sporočila: |
|
|
Ja sem se spet naučil pullup in pulldown, no saj se tudi logično sliši.
Bom poskusil jutri dopoldne s tem kar ste predlagali,
ne da ne želim probati z prekinitvami - moram se najprej naučit potem pa jih z veseljem uporabim.
lp
črto |
|
Nazaj na vrh |
|
 |
crto Član


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Čet Jul 01, 2010 9:19 am Naslov sporočila: |
|
|
Dobro sprobal sem obrnit tipke proti masi, deluje kot je delovalo prej torej dela ena tipka po ena.
Sprobal sem tudi program ki si mi ga napisal (int47) in definiral spremenljivke na naslednji način:
Dim Stevec_portd_6 As Integer
Dim Stevec_portb_0 As Integer
pa mi javlja napake za to vrstico:
else stevec_portd_6=stevec_portd_6 - 1 in sicer invalid datatype [[0007]]
ter v naslednji vrstici:
End if in sicer If Then expected in loop expected
Probal sem tudi z Dim Stevec_portd_6 As Byte pa je enako
tukaj se mi je zdaj malo ustavilo, bom še pogledal malo te prekinitve. |
|
Nazaj na vrh |
|
 |
Medo Član

Pridružen-a: Pet 17 Feb 2006 19:53 Prispevkov: 71 Aktiv.: 0.30 Kraj: Laško, Maribor
|
Objavljeno: Čet Jul 01, 2010 11:05 am Naslov sporočila: |
|
|
kaj spremeni če daš:
stevec_portd_6 v Stevec_portd_6
veliki S? Imaš različno uporabo enkrat velike začetnice drugič male? |
|
Nazaj na vrh |
|
 |
crto Član


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Čet Jul 01, 2010 11:20 am Naslov sporočila: |
|
|
Mam stalno veliko zacetnico, poglej celi program:
$regfile = "2313def.dat"
$crystal = 1000000
Dim Stevec_portd_6 As Bit
Dim Stevec_portb_0 As Bit
Config Portd.2 = Input
Config Portd.3 = Input
Config Portb.0 = Output
Config Portd.6 = Output
Config Debounce = 40
Main:
Stevec_portd_6 = 0
Stevec_portb_0 = 0
Do
Debounce Pind.2 , 1 , Prog , Sub
Debounce Pind.3 , 1 , Program , Sub
If Stevec_portd_6 = 0 Then Reset Portd.6
Else Stevec_portd_6 = Stevec_portd_6 - 1
End If
If Stevec_portb_0 = 0 Then Reset Portb.0
Else Stevec_portb_0 = Stevec_portb_0 - 1
End If
Waitms 100
Loop
Prog:
Set Portd.6
Stevec_portd_6 = 10 * 5
Return
Program:
Set Portb.0
Stevec_portb_0 = 10 * 5
Return
Se že celo jutro učim pa matram zraven |
|
Nazaj na vrh |
|
 |
klemen88 Član


Pridružen-a: Tor 01 Jan 2008 17:37 Prispevkov: 747 Aktiv.: 3.51 Kraj: Slovenj Gradec
|
Objavljeno: Čet Jul 01, 2010 12:10 pm Naslov sporočila: |
|
|
Koda: |
$regfile = "2313def.dat"
$crystal = 1000000
Dim Stevec_portd_6 As Byte
Dim Stevec_portb_0 As byte
Config Portd.2 = Input
Config Portd.3 = Input
Config Portb.0 = Output
Config Portd.6 = Output
Config Debounce = 40
Main:
Stevec_portd_6 = 0
Stevec_portb_0 = 0
Do
Debounce Pind.2 , 1 , Prog , Sub
Debounce Pind.3 , 1 , Program , Sub
If Stevec_portd_6 = 0 Then
Reset Portd.6
Else
Stevec_portd_6 = Stevec_portd_6 - 1
End If
If Stevec_portb_0 = 0 Then
Reset Portb.0
Else
Stevec_portb_0 = Stevec_portb_0 - 1
End If
Waitms 100
Loop
Prog:
Set Portd.6
Stevec_portd_6 = 10 * 5
Return
Program:
Set Portb.0
Stevec_portb_0 = 10 * 5
Return
|
Zdaj sem ti popravil program! Vedno pojdi v drugo vrstico razen, če je samo en ukaz npr.
Koda: |
If ??? = 0 then set ??? |
potem ne rabiš nobenega "end if"
če pa imaš napisano kot ti...
Koda: |
If Stevec_portd_6 = 0 Then Reset Portd.6
Else Stevec_portd_6 = Stevec_portd_6 - 1
End If
|
pa idi lepo vsakega v svojo vrsto, kot sem ti popravil v programu!
Druga napaka, ko dimenzioniraš spremenljivke je za BIT 0 ali 1, ti pa imaš spodaj spremenljivko
Koda: |
Stevec_portb_0 = 10 * 5
|
in je že to izven BIT-a zato moraš dati BYTE, ki je od 0 - 255!
Upam, da ti bo zdaj šlo! |
|
Nazaj na vrh |
|
 |
crto Član


Pridružen-a: Sre 12 Jan 2005 14:48 Prispevkov: 137 Aktiv.: 0.58 Kraj: Ptuj
|
Objavljeno: Čet Jul 01, 2010 1:30 pm Naslov sporočila: |
|
|
ja zdaj zadeva res dela
Hvala |
|
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: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|