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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.