[ k_spale @ 30.11.2013. 17:13 ] @
Pozdrav.
Imam problem sa seriskom komunikacijom.


b2 war word
com:
hserin 20,com,[b2]
lcdout $fe,1 "rez", dec b2
hserout [b2]

goto com



Ovo je deo programa koji mi nije jasan.
Kada sa terminala posaljem hex 0f na displeju mi ispise 15 a na terminalu se vrati 0f sto je valjda dobro.

Problem je kada stavim
hserin 20,com,[dec b2]
mikro kontroler neprimi podatak sa terminala.
Kako da u programu dobijem decimalni zapis kada sa terminala saljem hex,
ako moze neko da mi pomogne .
Hvala.
[ ZAS011 @ 30.11.2013. 17:24 ] @
biće da imaš labelu i konstantu/promenljivu istog naziva com
[ k_spale @ 30.11.2013. 17:35 ] @
hserin,com,[b2]
com u ovom delu je labela na koju ide kada podatak nije primljen.
meni primi podatak normalno ali nemogu da primim podatak u decimalnom obliku.
[ ZAS011 @ 30.11.2013. 18:23 ] @
Code:
hserin 20,com,[dec b2]

ne pije vodu.
b2 ti je stiglo kao $0F ili %00001111

dec modifikator u gornjoj komandi očekuje da ti stižu decimalne cifre, npr. "1" i "5" i iza toga ili razmak ili nenumerički znak, kako bi sadržaj tvoje b2 promenljive imao vrednost 15.

Ovako kako si napisao, tvoja promenljiva b2 ima vrednost na koju si je inicijalizovao ili 0.
[ k_spale @ 30.11.2013. 18:53 ] @
Kada postavim b2 na lcd da vidim sta je stiglo u kontroler ispisuje ASCII karaktere bez obzira sto saljem hex.
kada vratim to sto je stiglo u b2 promenjivu ispisuje u hex.
Probavam na pickit 2 klon terminalu.
Mene zanima kako to sto je stiglo pretvorim u decimalni oblik.
Kada postavim na lcd ,dec b2 on ispise sto treba u decimalnom obliku.
[ ZAS011 @ 30.11.2013. 19:32 ] @
dec b2 ti od %00001111 ($0F ili 15), "napravi" string "15 ($31, $35)" da bi ti prikazao na displeju, znači od primljenog podatka napravi njegovu decimalnu prezentaciju. (bibliotečka funkcija PBP-a)
Vrednost te tvoje promenljive je i dalje 1510 odnosno 0F16 odnosno 000011112

[ k_spale @ 01.12.2013. 18:04 ] @
Kada mi stigne $0F u moju promenivu u ovom slucaju b2 ja sam probao ovako:

if b2=$0F then druga

i ovako

if b2=15 then druga

meni program neode na labelu druga.

jos jedno pitanje:
ako iz jednog kontrolera posaljem:

b0=50
hserout [dec b2]

a sa drugim primim signal

hserin 20,com,[dec b2]

hoce li u b2 biti 50
[ ZAS011 @ 01.12.2013. 20:21 ] @
Da li ti čitaš dobro šta ti se piše?
Code:
hserin 20,com,[dec b2]

očekuje ASCII CIFRE ($30..$39) i "kombinuje" ih u tvoju b2 promenljivu čim sledeći znak više nije ASCII cifra

Ovako kada ti stigne $0F
Code:
hserin 20,com,[b2]

sadržaj b2 promenljive je DECIMALNO 15

ako ti ovako očekuješ podatak
Code:
hserin 20,com,[dec b2]

sadržaj tvoje b2 promenljive je $00 (%00000000, 0 -> NULA) pošto $0F nije ASCII CIFRA.

Sve u svemu RTFM, trebalo bi da ga imaš, a i Help takođe.
[ k_spale @ 01.12.2013. 20:55 ] @
Razumeo sam i u predhodnom odgovoru dobro ali nisam dobro postavio pitanje.

sa pc-a sam poslao $0F

ocekivao sam podatak ovako:

com:
hserin 20,com,[b2]

if b2=15 then druga

goto com

ZAS011 po Vasem odgovoru ovo bi trebalo da radi ali meni nije htelo da ode na labelu druga.
Sutra cu probati opet sad trenutno nemogu.
Izvinjavam se ako opet nisam razumeo Vas odgovor.
Pozdrav.

[ ZAS011 @ 01.12.2013. 21:26 ] @
Pošto već imaš LCD, iskoristi ga za debagovanje programa.
Npr. u drugom redu ispiši Dec b2, " ", Bin b2

Sledeće, da li ti sa PC šalješ to čuveno $0F kao jedan bajt (1510, 0F16, 000011112) ili karaktere "0" i "F"?
[ k_spale @ 01.12.2013. 21:42 ] @
u programu pickit2 uart ima da se odredi ASCII i HEX.
Ja odredim HEX i upisem 0F i posaljem.
Na lcd sam postavljao DEC ispise 15,BIN u binearnom obliku,HEX ispise $0F,a kada stavim bez icega samo B2 ispise u ASCII.
Kada zavrsim ispis na lcd ja b2 promenjivu vratim na terminal i na terminalu ispise 0F.
Mozeli u b2 promenjivoj da bude ASCII podatak?
Provericu ovo jos jednom sutra i probacu umesto terminala da komuniciram sa drugim pic-om.
[ bogdan.kecman @ 01.12.2013. 21:50 ] @
promenljiva ima TIP, tip je INT, CHAR, FLOAT, ARRAY ... i sadrzi neku
vrednost. ASCII, HEX, DEC etc NISU VREDNOSTI, to su nacini prikazivanja
neke vrednosti

'A' je potpuno isto kao 65(dec) je potpuno isto sto i 41(hex) i potpuno
isto sto i 101(oct) je potpuno isto sto i 1000001(binary) dakle u
varijabli je potpuno ista stvar, pitanje je samo kako ces da je prikazes
[ k_spale @ 03.12.2013. 19:05 ] @
Hvala na odgovorima,probao sam ponovo i sada radi.
Predpostavljam da ce da radi i sa drugim kontrolerom.
Zanima me jos ako stavim oklopljen kabl kolika razdaljina moze da bude
izmedju dva pic-a za uart komunikaciju.
Znaci li sta max232 na oba pic-a sto se tice duzine kabla.
Pozdrav.
[ mnn @ 03.12.2013. 19:36 ] @
Ja sam imao kalem sa kablom 3x0.34 neoklopljen dužine oko 700 metara i probao bez max-a.Probao i radilo je u kućnim uslovima .Naravno da se u praksi ne bih pouzdao u to .
[ k_spale @ 03.12.2013. 20:16 ] @
Meni treba dozina do 3 metra.
Kabl bi bio oklopljen.
Dali bi to bilo pouzdano?
Pozdrav.
[ ZAS011 @ 03.12.2013. 20:24 ] @
Ako planiraš da ti komunikacija radi u uslovima gde ne postoje smažne EM smetnje, onda može oklopljeni.
Ukoliko tu tvoju skalameriju imaš nameru da koristiš u EM "prljavom" okruženju predlažem ti da porazmisliš o RS-422 (isto što i RS-485 samo što je Full Duplex).