Soros port (rs232)

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Kedves DmANn
Lehet gondod a vezeték hosszakkal is , nekem is okozott pronlémát.
Picike ferrit gyűrű megoldotta.
Kefeur
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Én a küldő programra lettem volna kíváncsi!
Ne „A,B,C,D”-t küldj, hanem Print „ABCDEFGH” –t.
Vagy:
A = „ABCDEFGH”
Print A
Avatar
DmANn
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2009. február 1. vasárnap, 7:00

Hozzászólás Szerző: DmANn »

kefeur írta:Kedves DmANn
Lehet gondod a vezeték hosszakkal is , nekem is okozott pronlémát.
Picike ferrit gyűrű megoldotta.
Köszönöm a választ!

Itt ez nem tudom mennyire lehet gond, jelenleg az usb-soros átalakítóba egy régi egér vezetékét dugtam. Csak a másik oldalon már nem az egér van :), de nem hosszabb, mint 1 méter.
38kbps-on is ugyanígy hibázik, nem értem.
Hogy lehet, hogy 1 karaktert mindig tökéletesen átvisz, bármilyen gyorsan is gépelem a terminalba?

Karaktervesztés nincs, vagyis a pc felől valószínűleg megfelelően jön a sorozat, csak néha tévesen. A hibák hamming távolsága pedig egy 20 hosszú stringnél max 3, de pont azért menne kristályról, hogy precíz legyen..

Ha elvágom a kábelt, mekkora hosszt hagyjak neki?


Köszi,
DmANn
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Az Egér kábelek tudnak nagyon gyenge minőségűek lenni. Ha nem árnyékolt szerintem el is dobhatod. Szerez vagy csinálj árnyékolt kábelből. Rossz tápegységből vagy monitorból termelj ki zavarszűrő ferritgyűrűt és húzd rá a kábel mindkét végére. PC-nél (pláne ha noti) lehet, hogy nincs meg a +-12V az Soros kimeneten. A hossza elvileg lehetne akár 2 – 3m-is.
Avatar
DmANn
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2009. február 1. vasárnap, 7:00

Hozzászólás Szerző: DmANn »

kapu48 írta:Az Egér kábelek tudnak nagyon gyenge minőségűek lenni. Ha nem árnyékolt szerintem el is dobhatod. Szerez vagy csinálj árnyékolt kábelből. Rossz tápegységből vagy monitorból termelj ki zavarszűrő ferritgyűrűt és húzd rá a kábel mindkét végére. PC-nél (pláne ha noti) lehet, hogy nincs meg a +-12V az Soros kimeneten. A hossza elvileg lehetne akár 2 – 3m-is.
Köszi a tippeket, ezzel így lehet hogy sikerül 8)
Egyelőre nincsenek közelben ilyen cuccok, de jövő héten beszerzek és kipróbálom.


További kellemes napot,
DmANn
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Egyben küldöm a 8 karaktert.
Amit észre vettem :
Vételi moldal :
if a="a" then...
if a="b"then...
ha a-t küldök jó
ha b-t küldök jó
ha bab-ot küldök (print"bab") akkor a kapcsol 1-et b pedig 2-t
ezek szerint a vételi oldalon van gond!
1 karaktereket fogad csak nem pedig szavakat

Vagy az adó oldalon megy ki hibásan:
print "bab" az így mehet b;a;b
Kefeur
Avatar
DmANn
DrótVégénSzéndarab
Hozzászólások: 26
Csatlakozott: 2009. február 1. vasárnap, 7:00

Hozzászólás Szerző: DmANn »

Szia, kefeur!

Nem lehet, hogy a karakterenkénti fogadás azért van, mert inkey-t használsz?

Az előző oldalon küldött kódodban még az volt, nem maradt benne véletlenül?
Mert ezesetben pontosan az általad leírt módon működne.
Küldesz neki 'bab'-ot,

Akkor:
it
1 karakter beolvas, kiír.
it
1 karakter beolvas, kiír.
it
1 karakter beolvas, kiír.

Vagyis 'bab' esetén 'a' egyszer, 'b' kétszer.

Esetleg PC-vel nem tudod kipróbálni? Jó ellenpróba lehet. :)


Szép napot:
DmANn
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

A vevő oldalon 4MHz kvarcnak van 0.16% szinkron hibája a soros kimeneten!
Az adó oldalon milyen rendszer van? Az is okozhat átviteli hibákat, ha a kettő rendszer nagyon eltérő paraméterű.
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Na igen inkey van benne .
Mit tehetnék bele , mert megszakításban kell lennie a vételnek.
Ugyan is a főprogi vezérel egy csomó mindent , és ezek változnának meg soros adat útján.
Az rs-232 átvitel jó kiírattam kijelzőre is , terminálra is jól érkezik (más próba programmal.
Kefeur
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Szabály: Amilyen formában küldjük az adatot, ugyanolyan formában is vesszük!
Ha karaktereket küldesz, akkor karaktereket is vegyél.
Ha stringet küldesz, akkor stringet vegyél! És ne alkalmaz ; -öt utána, mert akkor nem lesz elküldve automatikusan a vége karakter. És a vevő nem tudja hol az adat vége.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ha maradsz a karaktereknél akkor:
Vagy mindég egyforma mennyiséget küldesz.
Vagy először küldesz egy értéket, hogy menyi karakter fog jönni.
Vagy kijelölsz egy karaktert, ami jelzi a sorozat végét.

Vevő oldalon az adásnak megfelelő ciklust szervezel.
Egyenként veszed a karaktereket, és összefűzöd őket 1 stringbe.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Ha már mindenáron a megszakításban akarod feldolgozni akkor legalább Select case-be szervezd. Lényegesen gyorsabb, mint az If-ek sorozata.
És a feldolgozást csak akkor kezd el ha már minden karakter átjött!
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2009. június 7. vasárnap, 18:26-kor.
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Köszi az infót.
Nézd át kérlek .
a küldés egyszerűen : print"valami"
a vétel :
on urxc vétel

főprogi:

do
csinál sokmindent
loop

end

vétel:
a=inkey()

select case a

case"a" 2...
case"b"
case "muhely"...
end select

return
Ez lenne a náza a proginak.
8 karaktert kellene tudnia pl.:"hatsajto"
És ha ez jött akkor toggle 1 jelzőbit
Fontos hogy ne 1 karakter-ek legyenek!
Kefeur
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Kód: Egész kijelölése

Dim I As Byte
Dim A As String * 1
Dim uzenet as String * 8
I = 0
Uzenet = ""

Vetel:

A = Inkey()
Uzenet = Uzenet + A
I = I + 1
If I = 8 Then                                               ' Fontos, hogy mindég 8 karaktert küldj mert csak akkor kezdődik a feldolgozás.
  Select Case Uzenet                                        'Feldolgozás
   Case "a       " : 2...
   Case "b_______" :
   Case "muhely  " : ...
  End Select
  I = 0                                                     ' Itt alaphelyzetbe állítod és kezdődik elölröl
  Uzenet = ""
End If

Return
Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 187
Csatlakozott: 2008. február 17. vasárnap, 7:00

Hozzászólás Szerző: kefeur »

Nagyon köszi a segítséget :D

Ezt nem tudtam kitalálni hogyan szedjem össze a 8 karaktert.
Megvan , működik is de:

Minden 4-ik átküldött karaktersorozatra reagál csak.
Ez mi lehet
Kefeur
Válasz küldése