|
Svet elektronike Revija za prave elektronike
|
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Ned Apr 24, 2011 12:02 pm Naslov sporočila: |
|
|
Hi,
bom kar tukaj vprašal da nebom po nepotrebnem odpirati nove teme in smetil forum.
Usvarjam nekaj pa mi ne ratuje.Sprobal sem že vse iz knjig pa še mi ni ratalo.Par dni nazaj mi je na LED diodah ratalo na DC motorčku pa mi nekaj ne štima.
Motorček imam priklopjen na L272M in brez tipk deluje odlično in tudi hitrost se da spreminjati.Ko hočem pa tike vključiti pa noče.
Koda je sledeča:
Koda: | $regfile = "m32def.dat"
Config Portd = Output
Config Portb = Output
Tp1 Alias Portb.0
Tp2 Alias Portb.1
Do
Debounce Tp1 , 1 , Levo , Sub
Debounce Tp1 , 0 , Stopp , Sub
Debounce Tp2 , 1 , Desno , Sub
Debounce Tp2 , 0 , Stopp , Sub
Waitms 1
Loop
Levo:
Portd.6 = 1
Portd.7 = 0
Waitms 5
Return
Desno:
Portd.6 = 0
Portd.7 = 1
Waitms 5
Return
Stopp:
Portd.6 = 0
Portd.7 = 0
Waitms 5
Return |
Tipke imam vezane na maso.Edino umes je še LED dioda ki pove kdaj je pritisjena.
Želel bi da deluje kot je program napisan.Ko je pritisjena ena tipka se vrti v eno smer ko je druga se vrti v drugo smer in ko ni nobena pritisjena se ne vrti.
ne najdem napake.Bi moral še kakšen ukaz dodati?
Hvala za pomoč.
LPM |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Apr 24, 2011 12:21 pm Naslov sporočila: |
|
|
port b bi moral nasaviti kot INPUT, ker so gor tipke. Poleg tega moraš pina, kjer sta tipki vklljučiti pull-up upore. Torej
config portb=input
ter če se ne motim
set portb.0
set portb.1
za aktiviranje uporov na portih B.0 in B.1 _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Ned Apr 24, 2011 1:05 pm Naslov sporočila: |
|
|
Sem sprobal.
portb sem dal na input.Na pin b.0 in b.1 sem dal 100K pull-up upor.
in dodal ukaz set portb.0 in b.1.
Motor mi miruje ampak ga trese (za desetinko milimetra levo desno se premika-trese).ko pritisnem tipko mi ledika na tipki zagori apak se nič ne zgodi.
Nekaj ne razumem.
V knjigi piše da se doda pull-up upor takrat kadar pin nima internega pull-up upora.Pri megi32 so to vsi?
Z ukazom set postaviš vhod na logično 1,torej z pritiskom tipke dobiš logično 0 a ne.
LPM |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Ned Apr 24, 2011 1:11 pm Naslov sporočila: |
|
|
Takšena je zdaj coda.
Koda: | $regfile = "m32def.dat"
Config Portd = Output
Config Portb = Input
Tp1 Alias Portb.0
Tp2 Alias Portb.1
set portb.0
Set Portb.1
Do
Debounce Tp1 , 0 , Levo , Sub
Debounce Tp1 , 1 , Stopp , Sub
Debounce Tp2 , 0 , Desno , Sub
Debounce Tp2 , 1 , Stopp , Sub
Waitms 1
Loop
Levo:
Portd.6 = 1
Portd.7 = 0
Waitms 5
Return
Desno:
Portd.6 = 0
Portd.7 = 1
Waitms 5
Return
Stopp:
Portd.6 = 0
Portd.7 = 0
Waitms 5
Return |
Ugotovil sem zakaj ga trese.Ko sem dodal ukaz na set....torej pina dal na logično 1.V do-loop zanki sem pozabil spremeniti stanja za tipki in je zaznalo kot da sta obe pritisjeni. Vsaj mislim.
Zdaj sem spremenil tako kot kaže koda,motor miruje in se ne odziva na tipke.
LPM |
|
Nazaj na vrh |
|
|
protoncek Profesionalec
Pridružen/-a: Sob Maj 2007 9:25 Prispevkov: 303 Kraj: Mengeš
|
Objavljeno: Ned Apr 24, 2011 1:16 pm Naslov sporočila: |
|
|
Si rekel da imaš med tipko in vhodom AVR-ja LEDico? Ne bo v redu - ker je padec na LED mogoče dovolj da AVR ne razposzna pritiska tipke. Tipko veži direkt iz pina na maso. LEDico raje daj s plusa preko upora na vhod AVR.ja, s tem boš spotoma dobil tudi neke sorte pull-up upor , ko pa boš pritisnil tipko bo dobila maso, obenem pa tudi vhod AVR-ja. _________________ http://www.protoncek.com |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Ned Apr 24, 2011 1:39 pm Naslov sporočila: |
|
|
Sem naredil raje kar brez ledike.Sedaj imam tipko vezano takole.Amak mi nič ne deluje.Grem nazaj razkaplat po ikebani in programu.
LPM |
|
Nazaj na vrh |
|
|
Jure Urednik
Pridružen/-a: Pon Jan 2004 12:51 Prispevkov: 2132 Kraj: Ljubljana
|
Objavljeno: Ned Apr 24, 2011 7:40 pm Naslov sporočila: |
|
|
Marc,
ukaz Alias mora biti znotraj Do-Loop zanke.
Lp
Jure |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Ned Apr 24, 2011 9:11 pm Naslov sporočila: |
|
|
Hi,
sem probal in tudi ne deluje.
Nevem kaj bi še lahko bilo.Mogoče je MCU defekten.
Drugače mi vse deluje,LCD mi lepo izpisuje v katero smer se DC vrti....vse edino tipke ne.Bom sprobal samo eno tipko in eno LED diodo,ko bo ratalo bom ukaz vnesel v program.
Hvala za pomoč.
LPM |
|
Nazaj na vrh |
|
|
RudiP Profesionalec
Pridružen/-a: Sre Jul 2008 8:39 Prispevkov: 128 Kraj: KOPER
|
Objavljeno: Pon Apr 25, 2011 6:06 am Naslov sporočila: |
|
|
Napak v programu imaš več:
1. Nimaš definirane frekvence kristala
2. Tipke priveži na plus preko manjšega upora 1K-10K
3. Tipka se testira oz je aktivna samo ko je pritisnjena. Debounce za stop niso v redu .
Koda: |
$regfile = "m32def.dat"
$crystal = 8000000
Config Portd = Output
Config Portb = Input
Tp1 Alias Portb.0
Tp2 Alias Portb.1
'*******************************************************************************
Do
Debounce Tp1 , 0 , Levo , Sub
Debounce Tp2 , 0 , Desno , Sub
If Tp1 = 1 And Portd.6 = 1 Then Reset Portd.6 '
If Tp2 = 1 And Portd.7 = 1 Then Reset Portd.7
Waitms 1
Loop
'*******************************************************************************
Levo:
Portd.6 = 1
Portd.7 = 0
Waitms 5
Return
Desno:
Portd.6 = 0
Portd.7 = 1
Waitms 5
Return
'*******************************************************************************
End
|
_________________ Lep pozdrav !
Nazadnje urejal/a RudiP Pon Apr 25, 2011 6:28 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
|
RudiP Profesionalec
Pridružen/-a: Sre Jul 2008 8:39 Prispevkov: 128 Kraj: KOPER
|
Objavljeno: Pon Apr 25, 2011 6:09 am Naslov sporočila: |
|
|
Jure je napisal/a: | Marc,
ukaz Alias mora biti znotraj Do-Loop zanke.
Lp
Jure |
Ukaz Alias pove kompajlerju, da uporabljamo drugo ime za spremenjljivko, zato mora biti na začetku programa kjer najavljamo spremenjljivke. _________________ Lep pozdrav ! |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Pon Apr 25, 2011 1:23 pm Naslov sporočila: |
|
|
RudiP,
hvala vam za pomoč.
Nekaj vprašanj imam.
glede programa:
Koda: | Debounce Tp1 , 0 , Levo , Sub
|
program pravi če je tp1=0 se aktivira levo-subrotina?
Ali nima tp1 logične 0 ko ni pritisjena?Saj jo tipka aktivira ko je pritisjena na logično 1?
ostalo vse razumem.
Kako ocenite ali izračunate potrebno $crystal = 8000000 .S to frekvenco določate hitrost programa?
Tipko sem priklopil na +,ki ima 5V in vmes vezal upor 4,5K.
Prebral sem sledeče.Tipka,vezana med vhodnim pinom in + polom napajanja,ne bo dalo želenega efekta,lahko pa tudi uniči mikrokontroler.
Nočem vas spodbijat glede vaše pomoči.Želim si samo razčistiti določene stvari.
Drugače mi še vseeno ne deluje.Sem sprobal samo z IF-THEN ukazom in tudi ni bilo efekta.
Tako da grem še enkrat vse razdreti in ponovno sestaviti,vse pregledati....
Javim,če bom našel napako.
LPM |
|
Nazaj na vrh |
|
|
RudiP Profesionalec
Pridružen/-a: Sre Jul 2008 8:39 Prispevkov: 128 Kraj: KOPER
|
Objavljeno: Pon Apr 25, 2011 4:32 pm Naslov sporočila: |
|
|
Kristal za začetek daš kakršnega imaš, samo da frekvenca kristala ni višja od maksimalne frekvence mikrota. Lahko pa uporabiš tudi notranji oscilator.
Če pogledamo tvojo skico vidimo, da je vhodni pin preko upora spojen na +5v. Ko stisnemo tipko, pa je pin na 0V - gnd. Z voltmetrom preveri, če to drži.
v helpu pa piše:
State = 0 for jumping when PINx.y is low , 1 for jumping when PINx.y is high
probaj tako:
Koda: | $regfile = "m32def.dat"
$crystal = 8000000
Config Portd = Output
Config Portb = Input
Config Pinb.0 = Input ' TIPKA
Config Pinb.0 = Input ' TIPKA
Tp1 Alias Portb.0
Tp2 Alias Portb.1
'*******************************************************************************
Do
' Debounce Tp1 , 0 , Levo , Sub
' Debounce Tp2 , 0 , Desno , Sub
If Tp1 = 1 Then Reset Portd.6 Else Set Portd.6 '
If Tp2 = 1 Then Reset Portd.6 Else Set Portd.6
Waitms 500
Loop
'*******************************************************************************
Levo:
Portd.6 = 1
Portd.7 = 0
Waitms 5
Return
Desno:
Portd.6 = 0
Portd.7 = 1
Waitms 5
Return
'*******************************************************************************
End |
Probaj brez motorčka tako, da na izhod mikrota zvežeš ledico proti gnd v seriji s 300 ohm upori. _________________ Lep pozdrav ! |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Pon Apr 25, 2011 4:37 pm Naslov sporočila: |
|
|
ok,
bom probal.
Hvala!
LPM |
|
Nazaj na vrh |
|
|
marc Profesionalec
Pridružen/-a: Ned Maj 2009 10:08 Prispevkov: 243 Kraj: Polzela
|
Objavljeno: Tor Apr 26, 2011 5:57 am Naslov sporočila: |
|
|
Hi,
našel sem napako .
Napaka je bila ukaz alias.Brez ukaza alias program deluje kot hočem.In tudi porte za tipke moramo imenovati pind.0.....in ne portd.0.
delujoč program:
Koda: | $regfile = "m32def.dat"
$crystal = 8000000
Config Pind.0 = Input
Config Pind.1 = Input
Config Portd.5 = Output
Config Portd.6 = Output
Do
Debounce Pind.0 , 0 , Levaledika , Sub
Debounce Pind.1 , 0 , Desnaledika , Sub
If Pind.0 = 1 And Portd.5 = 1 Then Reset Portd.5
If Pind.1 = 1 And Portd.6 = 1 Then Reset Portd.6
Loop
Levaledika:
Set Portd.5
Reset Portd.6
Waitms 50
Return
Desnaledika:
Set Portd.6
Reset Portd.5
Waitms 50
Return
End |
Hvala vsem za pomoč!
Lpm. |
|
Nazaj na vrh |
|
|
RudiP Profesionalec
Pridružen/-a: Sre Jul 2008 8:39 Prispevkov: 128 Kraj: KOPER
|
Objavljeno: Tor Apr 26, 2011 6:55 am Naslov sporočila: |
|
|
Napaka ni bila v Alias temveč nisi imel pravilno deklariranih izhodov:
Koda: |
Config Portd.5 = Output
Config Portd.6 = Output
|
Alias zanesljivo dela. Beri help. S kurzorjem se postaviš na ukaz ter stisneš F1.
Sem se zatipkal pravilno je:
Koda: |
Config Pind.5 = Output
Config Pind.6 = Output |
_________________ Lep pozdrav !
Nazadnje urejal/a RudiP Sre Apr 27, 2011 8:52 am; skupaj popravljeno 1 krat |
|
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
|