Forum: Mikrocontroller und Digitale Elektronik Atmel RS232 Kollisionsdetektion CSMA/CD auf der UART multi-Master Betrieb


von Jo G. (lcnjo)


Lesenswert?

Hallo liebe Leute,
ich würde mich über Hilfe zu folgendem Problem freuen.

Ich habe ein Hausbus der eine RS232 Schnittstelle hat. Mit dieser möchte 
ich geren mit einem Atmel mega8 kommunizieren.

Da es sich um ein Multi-Master System handelt muss ich also Kollisionen 
detektieren.

1. Der Bus schleift die Sendeseite auf die Empfangsseite durch.
2. Das erste Byte ist ein invertiertes Adressbyte, so dass wenn zwei 
Master gleichzeitig senden die niedrigere Adresse weitersenden darf.

Es handlt sich also um eine typische Adressbevorzugung, wie z.B. beim 
CAN.
Vorgang des sendens soll so ablaufen:
Auf dem Bus lauschen ob frei ist, dann anfangen zu senden. Es werden 
Pakete zwischen 6-20 Bytes gesendet. Nach dem ersten Byte (der Adresse) 
muss das erste empfangene Byte mit dem ersten gesendeten verglichen 
werden. Weicht dieses ab, hat wohl ein anderer Master auch gesendet und 
ein niedrigere Adresse gehabt -> Senden einstellen variable Zeit warten, 
sonst weitersenden. Dabei ist es noch wichtig, dass zwischen ersten und 
zweiten gesendeten Byte kein (sehr wenig) Verzug gibt, d.h. es bleibt 
nicht viel Zeit, um die Bytes zu vergleichen.

Ich hätte jetzt gerne einen Tipp, wie ich das mit winavr in C-Code 
abbilde.

Eventuell hat jemand auch einen Tipp, wie ich das mit C in Windows 
mache?

Und nein, ich kann kein Can-Bus controller oder sonst ein anderes 
Protokoll nutzen.
RS232 9600,8Bit,no Parity ist vorgegeben.

Wäre echt klasse!!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.