Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

LCD 2x16
Pojdi na stran Prejšnja  1, 2, 3, 4, 5, 6  Naslednja
 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Apr 24, 2011 12:02 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Profesionalec


Pridružen/-a: Sob Maj 2007 9:25
Prispevkov: 303
Kraj: Mengeš

PrispevekObjavljeno: Ned Apr 24, 2011 12:21 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Apr 24, 2011 1:05 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Apr 24, 2011 1:11 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Profesionalec


Pridružen/-a: Sob Maj 2007 9:25
Prispevkov: 303
Kraj: Mengeš

PrispevekObjavljeno: Ned Apr 24, 2011 1:16 pm    Naslov sporočila: Odgovori s citatom

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 Smile, ko pa boš pritisnil tipko bo dobila maso, obenem pa tudi vhod AVR-ja.
_________________
http://www.protoncek.com
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Apr 24, 2011 1:39 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
Jure
Urednik


Pridružen/-a: Pon Jan 2004 12:51
Prispevkov: 2132
Kraj: Ljubljana

PrispevekObjavljeno: Ned Apr 24, 2011 7:40 pm    Naslov sporočila: Odgovori s citatom

Marc,

ukaz Alias mora biti znotraj Do-Loop zanke.

Lp
Jure
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Ned Apr 24, 2011 9:11 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
RudiP
Profesionalec


Pridružen/-a: Sre Jul 2008 8:39
Prispevkov: 128
Kraj: KOPER

PrispevekObjavljeno: Pon Apr 25, 2011 6:06 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
RudiP
Profesionalec


Pridružen/-a: Sre Jul 2008 8:39
Prispevkov: 128
Kraj: KOPER

PrispevekObjavljeno: Pon Apr 25, 2011 6:09 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Pon Apr 25, 2011 1:23 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
RudiP
Profesionalec


Pridružen/-a: Sre Jul 2008 8:39
Prispevkov: 128
Kraj: KOPER

PrispevekObjavljeno: Pon Apr 25, 2011 4:32 pm    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Pon Apr 25, 2011 4:37 pm    Naslov sporočila: Odgovori s citatom

ok,
bom probal.

Hvala!

LPM
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
marc
Profesionalec


Pridružen/-a: Ned Maj 2009 10:08
Prispevkov: 243
Kraj: Polzela

PrispevekObjavljeno: Tor Apr 26, 2011 5:57 am    Naslov sporočila: Odgovori s citatom

Hi,
našel sem napako Smile .

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
RudiP
Profesionalec


Pridružen/-a: Sre Jul 2008 8:39
Prispevkov: 128
Kraj: KOPER

PrispevekObjavljeno: Tor Apr 26, 2011 6:55 am    Naslov sporočila: Odgovori s citatom

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
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Za začetnike Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Pojdi na stran Prejšnja  1, 2, 3, 4, 5, 6  Naslednja
Stran 5 od 6

 
Pojdi na:  
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