Gast
#1930439
Hallo allerseits, ich baue gerade an einem Projekt, bei dem mehrere AVR ATmega8 Mikrocontroller über eine Leitung Daten austauschen. Dabei sollen in einem dreiadrigen Kabel zwei Leitungen für die Versorgung zuständig sein und auf der Dritten die Daten hin- und herflitzen. Es ist also kein typischer 1-Draht-Bus mit einem auf die Versorgungsspannung aufmodulierten Datensignal. Während V+ und V- durchgeschleift werden, soll die Datenleitung DL zerstückelt von einem Client zum nächsten gehen und von dem wieder zum nächsten, also keine durchgehende Leitung. Ich hoffe meine ASCII-Zeichnungen sind verständlich! |----------| |----------| |----------| | Client 1 |~~~ DL ~~~| Client 2 |~~~ DL ~~~| Client 3 | V+ ~~~+~~~~~~~~~~+~~~ V+ ~~~+~~~~~~~~~~+~~~ V+ ~~~+~~~~~~~~~~+ V- ~~~+~~~~~~~~~~+~~~ V- ~~~+~~~~~~~~~~+~~~ V- ~~~+~~~~~~~~~~+ |----------| |----------| |----------| Das Prinzip soll wie "Stille Post" funktionieren, jeder gibt die von der einen Seite erhaltene Daten an die Andere Seite weiter und dichtet ggf. Daten dazu, die für die Anderen interessant sind. Client 1 ist fest definiert und fängt an. Er gibt Daten an Client 2 weiter: |----------| |----------| | Client 1 |Tx ~~~~ Rx| Client 2 | |----------| |----------| Client 2 verarbeitet die Daten und reicht sie an Client 3 weiter bis zum Client n. Client n weiß, dass er der Letzte ist und reicht die verarbeiteten Daten wieder zurück -> Client 3 -> Client 2 -> Client 1. Nun haben alle die aktuellen Daten erhalten und der Vorgang beginnt von vorne. Die Clienten 1 und n spielen eine gewisse Sonderrolle. Sie erkennen, dass vor bzw. hinter ihnen kein weiterer Client vorhanden ist. ################################################## So, ich denke ich habe das Prinzip nun genug (versucht) zu erklären, nun meine eigentliche Frage. Die meisten AVR-Mikrocontroller besitzen ja einen USART, so auch der mega8. Könnte man diesen nicht zu einem 1-Draht-Bus umbauen? Bzw., da ja meist nur ein USART vorhanden ist, wie setzt man softwaretechnisch soetwas in C um? Gibt es da ggf. bereits Lösungen, die ich nicht gefunden habe? Alles, was ich bisher gefunden habe, war viel zu komplex, es muss wirklich nur der Datenstrom wie ein Lauflicht hin- und herwandern, es geht nicht um Geschwindigkeit und Effektivität... ;) Danke für eure Antworten und Ideen! Gruß Flo