Atmel RS232 Kollisionsdetektion CSMA/CD auf der UART multi-Master Betrieb

OP #921229
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!!!!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.