RS485 CSMA
Moczik Gabor
pm at progzmaster.hu
Mon Sep 25 20:50:01 CEST 2006
Szima Gábor wrote:
> Hogy egyszeru legyen, nincs szandekomban hokusz-pokuszolni egyeb
> aramkorokkel, valami egyszerubb SW-es, max. ne'mi helyi elektronikus
> megoldasra gondoltam.
>
> Pl. az START bit megjelenesekor az UART regisztereibol kiolvashato-e ez.
Ha half-duplex rs485-ot csinalsz, akkor amit kikuldtel azt kell visszakapnod
azonnal, mihelyst kiment a stop bit. Ha a visszakapott nem azonos a
kikuldottel, akkor utkozes van.
A CSMA reszt meg ugy lehet a legegyszerubben megoldani, hogy kialakitasz egy
frame strukturat. En az alabbit hasznalom: minden frame 0x55 0x55 0xCC
karakterharmassal kezdodik, cim adatok, a kuldeni szandekozott byteok szama,
1 byte checksum, 0x00 terminator bit.
Minden egyseg vegigkoveti a forgalmat, csak ha nem neki szol a cim, akkor
nem tarolja a adatbyteokat, csak a hosszat figyeli. Ha veget ert a forgalom,
akkor elvileg szabad a busz. Mivel ezt mindenki igy fogja tudni a buszon, ha
ketten varnak, valszeg egyszerre fogjak elkezdeni a forgalmat.
Hogy ez kisebb valoszinuseggel tortenjen, szabad busz utan rnd*btime ideig
kell varni, ahol 'rnd' egy veletlen egesz szam, btime pedig egy byte
tovabbitasahoz szukseges ido (start+stop bitekkel egyutt).
Igy ha kozben valaki gyorsabb volt, a lassabb eszkoz tudja venni a komplett
byte-ot a frame elejerol meg mielott kuldeni kezdett volna.
--
((( Móczik Gábor )))--((( pm -> @ -> progzmaster -> . -> hu )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))
More information about the Elektro
mailing list