PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UART / RS232 mit meheren µc's ?



Omnikron
24.03.2006, 12:06
Hallo

ist es möglich mehrer µC's (zb. 3 Atmel Mega16) über den UART miteinander zu verbinden, so dass eine Art Master Slave kommunikation möglich ist? Software technisch würde ich mir das so vorstellen, dass der Master (es gibt natürlich nur einen) die Schreibrechte an die einzelnen Slaves verteilt. Die Slaves müssten dann ihre Adresse (z.b die ersten paar bits) aus dem übertragenen String extrahieren. Dies würde verhindern, dass alle Controller gleichzeitig die Datenleitungen belegen.
Wäre das möglich oder werden die Pegel auf den Leitungen druch die Slaves zu schwach?

mfg Omnikron

kalledom
24.03.2006, 12:13
Hallo Omnikron,
ich würde es mit RS485 Schnittstelle / Baustein aufbauen, da können 16...32 Master / Slave miteinander kommunizieren. Wer gemeint ist und 'was sagen' darf, kann per Datenprotokoll bestimmt werden.

PICture
25.03.2006, 07:42
Hallo Omnikron!

Deine Idee ist sehr gut (weil einfach realisierbar). Solange die gesamte Belastung (R und C) des TX Pins nicht die maximal zulässige überschreitet, werden die Pegels gut. Bei langen Leitungen muss ein Kabel mit minimaler laufender Kapazitanz (pF/m) verwendet werden. Ich stelle mir das so wie auf der Skizze im Code vor. Ich möchte später selber so was machen (bin aber PIC fan). Melde, bitte, ob es funktioniert.


MfG :)


/--------------o-----------o--------((-------\
| | | )) |
| /----------|---o-------|---o----((-------|---\
| | | | | | | |
| | | | | | | |
.-------. .-------. .-------. .-------.
|TX RX| |RX TX RX TX RX TX|
| | | | | | | |
'-------' '-------' '-------' '-------'
Master Slave 1 Slave 2 Slave n

kalledom
25.03.2006, 09:41
Ähnliche Vorhaben wurden von mir schon mehrmals realisiert, u.A. mit Can-Bus, per Funk und über Datenleitung (RS485-ähnlich).
Ein Master fragt zyklisch den Status aller Slaves ab (Eingangs-Zustände, Batterie-Ladung, etc.). Antwortet ein Slave innerhalb einer TimeOut-Zeit nicht, gibt es Alarm.
Das Datenprotokoll ist relativ einfach: StartByte, Slave-Adresse und Kommando (z.B. 1 = Status abfragen, 2 = Ausgänge mit folgendem Datenbyte setzen, 3 = ....)
Die Antwort ist ebenso einfach: Slave-Adresse, Status und / oder je nach Kommando noch Daten.
Ein bestimmter Slave kann dazu 'verdonnert' werden, wenn er innerhalb einer TimeOut-Zeit nicht abgefragt wird, den Job des Masters zu übernehmen. Dieser Slave-Master muß den Datenverkehr 'abhorchen' und registrieren, damit er im Einsatzfall Bescheid weis.

PICture
25.03.2006, 10:05
Hallo kalledom!

Für mich scheint es immer noch zu kompliziert. Ich brauche eigentlich nur eine einfache Kommunikation zwischen ein paar Modulen (z.B. Entwicklungsplatine<-> Analoghardware). Ich möchte es nur nach Bedarf nutzen (nicht zyklisch) und brauche kein Alarm (möchte Ruhe haben :) ).
Dein Datenprotokoll habe ich schon bei meinem ersten EPROMer benutzt, ist prima (wirklich einfach), aber ohne Status und Slave-Adresse (war ja nur ein Slave).

MfG

Omnikron
25.03.2006, 22:33
genau so habe ich mir das auch vorgestellt. Die Skizze von PICture und das Protokoll von kalledom. Ihr habt mein Problem genau erkannt. Bevor cih mich aber groß mit rs485 oder can oder was auch immer beschäftige möchte ich eine möglichst einfache mehr-Controller-Verbindung aufbauen, also so wie bisehr beschrieben über den Uart/RS232.
Ich habe mich mit dem eigentlichen Problem bisher nicht mehr auseinandersetzten können. Die erstn zwei drei Versuch scheiterten. Das kann aber auch an meinen noch zu umständlichen Protokoll liegen.
Muss ich eigentlich mit dioden auf den Rx und TX datenleitungen das signal entkoppeln? Können noch mehr Probleme physikalischer Natur auftreten?

mfg Omnikron

kalledom
25.03.2006, 23:10
RS485 hat eine 2-adrige Datenleitung und ein symmetrisches Signal für beide Richtungen. Der RS485-Baustein 75176 ist Sender TX und Empfänger RX, die Daten-Richtung muß an den Enable-Pins umgeschaltet werden.

PS: Lade Dir das Datenblatt von dem 75176 und betrachte Dir das Blockschaltbild vom Innenleben; dann wird Dir ein Kronleuchter an gehen :-)

PICture
26.03.2006, 09:07
Hallo!

Es sind ausser den zwei Leitungen keine zusätzliche Bauteile notwendig und das einzige, dass Probleme machen kann, sind zu lange Leitungen.

MfG