Heeft iemand een voorbeeld hoe je rs485 moet versturen met een 8051 type microcontroller ?

Ik wil dit es gaan proberen maar heb geen idee waar ik mee zou moeten beginnen.

Snelheid zou 250k moeten zijn. 8 databits, geen parity.

RS485 is gewoon UART met een bepaalde elektronische karakteristiek. je zal denk ik een IC moeten kopen dat van TTL een RS485 signaal maakt. en die zijn er zeker. zo doet een MAX232 hetzelfde voor de RS232 standaard

Oke dus aan mijn UART zou ik een ic moeten koppelen dat er rs485 van maakt. Zal es op zoek gaan naar zo'n ding.

Dan zal ik de eigenschappen van die poort in moeten stellen. Iemand voorbeelden ?

Vervolgens zal ik data op die poort moeten krijgen, heeft iemand misschien een voorbeeld hoe hun dat oplossen ?

EDIT: Heb de sn75176b gevonden. Deze zou volgens mij het werk moeten doen.

[Bericht gewijzigd door Ties op ]

Maxim heeft er ook , Linear Tehcnologies heeft er ook en TI heeft er ook.

verder is RS485 gewoon serieel formaat . 8 databits , geen pariteit en 1 startbit.

RS485 is een current loop netwerk. alle systemen zitten op dezelfde bus. Alles wat je zelf verzend zal je ook zelf terug binnenkrijgen ook. Iets wat verzonden wordt door jouw wordt door alle anderen gezien op de bus.

Ik denk niet dat er een software level protocol vastligt voor RS485. Is alleen de elektrisch specificatie.

Als je toch met 8051 werkt moet je eens zien naar de 9 bit mode van de UART. Die is speciaal gemaakt voor dat soort 'WAN' toestanden. Het 9e bit geeft aan of er de andere 8 bits data of adress zijn. Je kan dan op RS485 tot 255 devices aansluiten met elk een eigen adress. Als je iets wilt verzenden stuur je het adress waar het naartoe moet met he 9e bit op 1. Gevolgd door de data met het 9e bit af.( op nul) De uart heeft een hardware adress comparator. Je krijgt alleen een interrupt als het pakket voor jouw bedoeld is. Werkt lekker. zie het als instant networking van processoren ( is het ook voor bedoeld ). Google eens op BITBUS da's een protocol dat je daar bovenop kan draaien.

Heej dankjewel... Das ben inmiddels begonnen stukje code te schrijven.. Ik hou jullie op de hoogte !

RS485 is GEEN current loop maar een differential multidrop systeem

Op 5 januari 2005 16:33:57 schreef free_electron:
Maxim heeft er ook , Linear Tehcnologies heeft er ook en TI heeft er ook.

verder is RS485 gewoon serieel formaat . 8 databits , geen pariteit en 1 startbit.

RS485 is een current loop netwerk. alle systemen zitten op dezelfde bus. Alles wat je zelf verzend zal je ook zelf terug binnenkrijgen ook. Iets wat verzonden wordt door jouw wordt door alle anderen gezien op de bus.

Ik denk niet dat er een software level protocol vastligt voor RS485. Is alleen de elektrisch specificatie.

Als je toch met 8051 werkt moet je eens zien naar de 9 bit mode van de UART. Die is speciaal gemaakt voor dat soort 'WAN' toestanden. Het 9e bit geeft aan of er de andere 8 bits data of adress zijn. Je kan dan op RS485 tot 255 devices aansluiten met elk een eigen adress. Als je iets wilt verzenden stuur je het adress waar het naartoe moet met he 9e bit op 1. Gevolgd door de data met het 9e bit af.( op nul) De uart heeft een hardware adress comparator. Je krijgt alleen een interrupt als het pakket voor jouw bedoeld is. Werkt lekker. zie het als instant networking van processoren ( is het ook voor bedoeld ). Google eens op BITBUS da's een protocol dat je daar bovenop kan draaien.

Heb ik al eens naar gekeken. waardeloos protocol.
Waarom? Als je een adres verstuurd, dan gaan alle slaves zowieso in interrupt mode.
Dit zou eigenlijk pas moeten gebeuren als ook het adres klopt, maar dit is niet realiseerbaar.

Als je slave toch tijd heeft om naar het adres te kijken, dan blijf je beter bij 8-bits transmissie.
Scheelt weer een hoop overhead voor de master...

Op 8 januari 2005 19:47:59 schreef bitbiter:
[...]
Heb ik al eens naar gekeken. waardeloos protocol.
Waarom? Als je een adres verstuurd, dan gaan alle slaves zowieso in interrupt mode.

Dat heet onkunde van de ontwikkelaar

Zoals JB al zei: er bestaan gewoon standaard IC'tjes zoals de MAX232 voor RS232. Kijk hier maar eens:

http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1111

Bitbus waardeloos ? tis nochthans een veel gebruikt protocol. Heel veel robot armen en transportsystemen uit jaren 80 tot mid 90, die vandaag de dag nog in gebruik zijn lopen erop. 1 cpu per motor. Heeft altijd perfect gewerkt. waarchijnlijk rijd je met een auto die door zo een systeem in elkaar gezet is.

In de waferfabs loopt het op bijna alle plasma etsers en implanters. En das recent superduur spul ... waar ze vandaag de allernieuwste chips mee maken.

inderdaad. je krijgt een interrupt als er een 'adressing' gebeurt. is de message niet voor jou dan doe je gewoon verder met wat je bezig was.
je hebt dus een gedistribueerd multitasking systeem. De software overhead is minimaal . de interrupt handler kan 4 instructies zijn.

Op 8 januari 2005 19:41:13 schreef Antoine:
RS485 is GEEN current loop maar een differential multidrop systeem

correct. ik was effe in de war. 485 is multidrop van 422 en dat is weer opvolger van current loop. ( historish gezien dan )

Op 8 januari 2005 20:52:16 schreef free_electron:

inderdaad. je krijgt een interrupt als er een 'adressing' gebeurt. is de message niet voor jou dan doe je gewoon verder met wat je bezig was.
je hebt dus een gedistribueerd multitasking systeem. De software overhead is minimaal . de interrupt handler kan 4 instructies zijn.

Gewoon boerenlogica hoor, maar een shift register en een comparator erachter kunnen voorkomen dat er een hele vracht slaves naar interrupt mode gaan. Er is tegenwoordig zoveel mogelijk, maar schijnbaar DAT net niet.
Die goeie ouwe 8251 kon dat wel. Die had een SYNDET functie, ofwel Sync-Detect. Dat kon een sequence van bytes zijn die voorbij moest komen voordat er een interrupt werd afgegeven. Allemaal in hardware. Daar had de software geen omkijken naar...