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