www.mikrocontroller.net

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


Autor: Jo Gibert (lcnjo)
Datum:

Bewertung
0 lesenswert
nicht 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!!!!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.