Go Down

Topic: Full duplex zu half duplex per software (Read 101 times) previous topic - next topic

Donaufisch

Hallo,
Ich lese und sende Daten auf einen half duplex Bus. TX und RX laufen über ein Kabel.
Zur Zeit nutze ich eine Transistot/Dioden Schaltung wie auf folgender Seite um Hardware RX und TX zu verbinden.

http://nerdralph.blogspot.co.at/2014/01/avr-half-duplex-software-uart.html?m=1

Gibt es eine einfache Möglichkeit per Software die Schaltung nachzubilden, sodass ich nur ein Kabel brauche.
Bus: 38400, n, 8, 1 single wire half duplex

Alle Geräte am Bus horchen auf Masteranfragen. Diese sind zeitlich definiert und ein Gerät anwortet nur wenn Anfrage und Zeitfenster passen.
Es sendet daher immer nur ein Gerät.

Softwareserial benutzt auch 2 Leitungen.gibts eine library die nur 1 Kabel - half duplex- nutzt?
LG Roland

Doc_Arduino

Hallo,

eine serielle die du meinst benötigt immer 2 Leitungen. Es gibt aber noch ein Übertragungsverfahren das nennt sich OneWire. Das nutzen zum Bsp. die bekannten Dallas Temperatursensoren.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

ArduFE

Hallo,

er scheint ja schon eine fertige Hardware als Bus zu haben, wo nur eine Leitung verwendet wird.

Falls das 5 V Logik ist, fällt mir keine fertige Lösung mit einem Arduino und Serial ein.

Wenn ein 3,3 Chip reicht, der 5 V tolerant ist, könnte man das mit der Serial-Klasse vom Teensy hinbiegen:

Man legt die normalen RX- und TX-Pins von z.B. Serial1 zusammen auf den Bus und verwendet im Code die Funktion Serial1.setTX(pinnr), um das TX-Signal, wenn es nicht gebraucht wird, auf den alternativen Pin umzuschalten. (Der Teensy hat in Serial einige Erweiterungen gegenüber Arduino.)

DrDiettrich

Ich verstehe das Problem nicht, statt einem zweiadrigen Kabel ein dreiadriges zu verwenden. Masse (Gnd) muß ja auch immer verbunden werden.

Bei Half Duplex müssen sich die beiden Stationen absprechen, wer senden darf, und dazu gehören oft weitere Leitungen (RTS/CTS). Wenn nur eine Station sendet, kann die Leitung für die Gegenrichtung einfach weggelassen werden. Sonst wird üblicherweise (auch bei OneWire) eine Station zum Master erklärt, der die Gegenstation (Slave) auffordert, Daten zu senden. So eine Übertragung könnte eine Zeile Text sein, danach muß der Slave wieder auf Empfang gehen, und auf die nächste Aufforderung des Masters warten.

uwefed

Wie lange sind die Leitungen und wieviele Geräte hast Du daran hängen?
Grüße Uwe

ArduFE

#5
Oct 12, 2017, 12:37 pm Last Edit: Oct 12, 2017, 12:38 pm by ArduFE
Das ganze scheint zu diesem  Thread zu gehören, da steht noch ein bischen was
http://forum.arduino.cc/index.php?topic=505053.0

Klingt irgendwie ähnlich wie der LIN-Bus im Auto, der hat auch nur eine Datenleitung, aber normalerweise Abschlusswiderstände und Transceiver-ICs und maximal 19200 als Geschwindigkeit.

Go Up