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 

UZ modul SRF-01 serijska komunikacija
Pojdi na stran Prejšnja  1, 2
 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
protoncek
Profesionalec


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

PrispevekObjavljeno: Sob Dec 17, 2011 6:49 pm    Naslov sporočila: Odgovori s citatom

Ja, sem videl Smile
recimo da sem bliže, ampak deluje pa še ne..
EDIT: nekaj razmišljam:ali ukaz npr. print 5 pošlje ven številko 5 v ascii kodi ali direktno binarno, torej 00000101 ? Ko sem gledal kaj oddaja program na PC ju in AVR so pulzi čisto drugačni...
Sicer pa jutri naprej...

_________________
http://www.protoncek.com
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 18, 2011 2:20 pm    Naslov sporočila: Odgovori s citatom

Protonček,
malo sem še pogledal in mislim da bi namesto:
Print #2 , 1 ; 84;
moral napisati:
Print #2,CHR(1);CHR(84);
Malo sem gledal kaj pošlje program prek serijske komunikacije in videl da po bujenjju najprej pošlje zahtevo po verziji (1 93), tako da tisto da ne smeš uporabiti navadnega print xxx, ampak print xxx; drži.
Ko sem gledal kaj pošilja program sem ugotovil da pošilja decmalno vrednost in ne Ascii znakov, to pa boš dosegle s print Chr(xx).
LP
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 Dec 18, 2011 3:27 pm    Naslov sporočila: Odgovori s citatom

JUHU drugič!
LEDica utripa, kar je že napredek. Zdaj moram samo še prebrati podatek in sem zmagal! Očitno je tale CHR(x) pravi ukaz. Sicer sem tudi že gledal ukaza SERIN in SEROUT, ki, kot piše, naj bi znala uporabljati isti pin za TX in RX---ti je kaj znano okoli teh ukazov?
No, še en "fail" se je pojavil, čeprav naj ne bi imela vpliva, saj mi zdaj dela z obema diodama - med schottky diode se mi je pretihotapila 1N4148...in čisto slučajno sem šel merit diodo (dejanje obupanca - ali je SLUČAJNO zanič) in sem opazil...

_________________
http://www.protoncek.com
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 18, 2011 4:27 pm    Naslov sporočila: Odgovori s citatom

Protonček,
ukazov SERIN/SEROUT nisem do zdaj uporabljal, lahko pa poskusiš (saj so v tistem primeru v PIC basic-u) uporabljali podobne ukaze.
Pomembno je da je stvar zaživela in se odziva.
LP
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 Dec 18, 2011 4:55 pm    Naslov sporočila: Odgovori s citatom

ja, zdaj mi je pa dokončno uspelo. Med drugim je magični ukaz: WAITMS 2, ki mora biti ZA ukazom print in PRED ukazom INPUTBIN (ali INKEY), drugače prebere ničlo.
Vlado, kaj naj rečem: stokrat hvala za pomoč! Upam, da ti kdaj povrnem s kakšnim nasvetom (čeprav dvomim da v Bascomu).

Prilagam pa kodo, ki izpisuje Low byte, high byte in rezultat, mogoče bo imel še kdo podobne težave in mu kaj pomaga:

Koda:
$regfile = "m8def.dat"
$framesize = 42
$swstack = 42
$hwstack = 42

$crystal = 16000000
$baud = 9600

Config Lcd = 16x2
Config Lcdpin = Pin , Db4 = Pind.4 , Db5 = Pind.5 , Db6 = Pind.6 , Db7 = Pind.7 , E = Pind.3 , Rs = Pind.2

Open "COMB.0:9600,8,N,1" For Output As #2
Open "COMB.1:9600,8,N,1" For Input As #3

Dim Razdalja As word
Dim Firmware As Byte
Dim Lob As Word
Dim Hib As Word

'------------ PROGRAM --------------------

'break ukaz
Portb.0 = 0
Waitms 5
Portb.0 = 1
Waitms 2
Print #2 , Chr(1) ; Chr(93);
Waitms 2
Firmware = Waitkey(#3)
Lcd "FW:" ; Firmware
Wait 1
Cls

Do
   Portb.0 = 0
   Waitms 5
   Portb.0 = 1
   Waitms 2
   Print #2 , Chr(1) ; Chr(81) ;                            '81 je ukaz za merjenje BREZ samodejnega odgovora,
   Waitms 100                                               'medtem ko je 84 enak ukaz, samo s samodejnim odgovorom

   Portb.0 = 0
   Waitms 5
   Portb.0 = 1
   Waitms 2
   Print #2 , Chr(1) ; Chr(94);                             '94 je ukaz za branje rezultata
   Waitms 2                                                 'MAGIČNI UKAZ!!!!
   Inputbin #3 , Hib , Lob

   Razdalja = Makeint(lob , hib)
   Locate 2 , 1
   Lcd Lob ; "-" ; Hib ; "-" ; ":" ; Razdalja
   Wait 1

Loop

End

_________________
http://www.protoncek.com


Nazadnje urejal/a protoncek Ned Dec 18, 2011 5:43 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 18, 2011 5:18 pm    Naslov sporočila: Odgovori s citatom

Protonček,
veseli me da ti je uspelo.
Zanima pa me zakaj je razdalja tipa integer in ne word (saj ne boš meril negativne razdalje)?
Ali si nastavil da ti meri v cm in ne v inčih?
Pri ukazu Makeint je najprej LSB in potem MSB ti pa imaš obratno?
LP
Vlado
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 Dec 18, 2011 5:41 pm    Naslov sporočila: Odgovori s citatom

Ja, integer je napaka. No, makeint v mojem primeru niti ni potreben, ravno tako ne bi niti rabil brati obeh bajtov, saj razdalje, ki jih bom meril ne bodo presegle 1m, kaj šele 2.55m...ampak ker modul ven daje najprej hi-byte, šele potem lo-byte, moram prebrati oba. Napake v makeint nisem opazil ker sem do sedaj v bistvu gledal samo izpis posameznih bajtov, razdalje pa sploh ne...res mi je kazal nekaj tisoč...hvala!

Ja, nastavil sem v cm, Možnost je še v inčih, v mikrosekundah pa (žal) ne pri tem modelu, tako da bo temperaturno kompenzacijo treba popravljati direktno v cm - modul namreč predpostavlja 20 stopinj celzija.

POPRAVLJENO

_________________
http://www.protoncek.com
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Ned Dec 18, 2011 5:47 pm    Naslov sporočila: Odgovori s citatom

Lepo, samo naj deluje tako kot si želiš in služi namenu.
Sem imel preveč časa, nekaj me je prijelo v hrbtu in sem se prekladal s sedežne do računalnika in si krajšal čas in bolečine.
LP
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 Dec 18, 2011 5:50 pm    Naslov sporočila: Odgovori s citatom

sreča v nesreči...na račun tvojih bolečin mi je uspelo zagnati modul... Embarassed
Hvala še enkrat!
LP; Pavle

_________________
http://www.protoncek.com
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Pojdi na stran Prejšnja  1, 2
Stran 2 od 2

 
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