Arduino Due - Dual UART - Datenstrom verschachteln

Gast #6009551
Lesenswert?

Gute Abend liebe Elektroniker,
Ich habe hier ein fremdes System dass seine Daten mit anderen System 
über RS485 (9600BAUD, 1S, EVEN, 7bit) überträgt.
Nun müssen 2 digitale Signale zusätzlich übertragen werden ohne weitere 
Leitugen zu ziehen.

Meine Idee:
Ich benutze zwei Arduino Due. Einer auf jeder Seite der Leitung.
Der eine serielle Port wird für den Transfer des 9600Baud-Datenstromes 
genutzt. Dieser Datenstrom wird dann mit den beiden 2Bit-Signalen als 
zusätzliches character an den zweiten seriellen Port übergeben und zum 
anderen Arduino übertragen wo beide Signale wieder voneinander getrennt 
werden. Natürlich müsste der zweite Port mit einer höheren Baudrate 
betrieben werden damit keine Informationen verloren gehen.

Hätte gerne Feedbacks zur Machmarkeit. In der Überlegung fuktioniert es 
wunderbar ;)

LG
Thomas
Gast #6009612
Lesenswert?

Thomas F. schrieb:
> Ich benutze zwei Arduino Due.

Meinst du nicht, dass das etwas übertrieben ist?
9600 Bd sind doch auch mit Soft-UART auf einem ATmega328 hinzukriegen.

Mit welche Datenrate (nicht Übertragungsgeschwindigkeit) kommen denn die 
Daten und wie groß sind ggf. irgendwelche Datenpakete?
Gast #6009635
Lesenswert?

Christian M. schrieb:
> Meinst Du die Anzahl oder die Art Arduino?

Wenn die Daten am einen Ende gemultiplext auf die Leitung gehen sollen 
und am anderen Ende wieder auseinander gefädelt werden sollen, wird man 
schon zwei brauchen. Sonst könnte man die zusätzliche Leitung auch 
direkt ziehen ;-)

Eine weiter Frage zu dem System wäre noch, ob die Daten per Simplex, 
Semiduplex oder Vollduplex über die Leitung gehen und wie häufig die 
beiden zusätzlichen Signale übertragen werden müssen.
Gast #6009669
Lesenswert?

Danke für das Interesse und den schnellen Antworten.

Je Richtung gibt es 2 Adern. Also Vollduplex.
Bezüglich Daten oder Pausen oder dem Protokoll selber liegen keine 
Informationen vor. Also das ganze muss als BlackBox angesehen werden.

Den Arduino Due habe ich gewählt weil er mir beim Lieferanten sofort ins 
Auge fiel.

Bezüglich den beiden Bits würde bereits eine Abtastrate von 1 Hz 
reichen.

Das antriggern einer Übertragung könnte man beim ersten Port über den 
UART-Interrupt bewerkstelligen. Im nächsten Schritt werden die Daten 
dann einfach an den zweiten UART übergeben. Soweit sehe ich eigentlich 
keine Schwierigkeiten.

Die Herausforderung sehe ich vielleicht eher darin, dass zeitgleich ein 
Interrupt vom ersten UART ausgelöst wird (empfangen) und Daten auf den 
ersten UART geschrieben werden sollen (senden).
Gast #6012087
Lesenswert?

Hallo,

kannst Du Anforderung nochmals erklären.

Würde die folgende Hardware dein Problem abdecken?

Die Senderseite besteht aus 2 Terminalprogrammen. Von diesen
gehen 2 Leitungen (TX) auf die seriellen Eingänge (RX, RX1)
vom Arduino Due?

Sollte das der Fall sein, könnte man den Empfänger im Interrupt
laufen lassen. Da der DUE 3 Serielle hat und mit der Arduino-IDE
zu programmieren ist, halte ich den DUE (aber auch den Mega) für
eine gute Wahl.

Grüsse
Gast #6012100
Lesenswert?

Hallo,

kannst Du Anforderung nochmals erklären.

Würde die folgende Hardware dein Problem abdecken?

Die Senderseite besteht aus 2 Terminalprogrammen. Von diesen
gehen 2 Leitungen (TX) auf die seriellen Eingänge (RX, RX1)
vom Arduino Due?

Sollte das der Fall sein, könnte man den Empfänger im Interrupt
laufen lassen. Da der DUE 3 Serielle hat und mit der Arduino-IDE
zu programmieren ist, halte ich den DUE (aber auch den Mega) für
eine gute Wahl.

Grüsse
Gast #6012160
Lesenswert?

max123 schrieb:
> Da der DUE 3 Serielle hat und mit der Arduino-IDE
> zu programmieren ist, halte ich den DUE (aber auch den Mega) für
> eine gute Wahl.

Ob das eine gute Wahl ist, hängt von den Kriterien für "gut" ab. Nach 
dem bisherigen Informationsstand kann man allenfalls sagen, dass man mit 
dem Due auf der sicheren Seite läge und das mit einem relativ großen 
HW-Aufwand erkauft.
Gast #6013308
Lesenswert?

Guten Abend/Morgen,
ich denke ich werde eher dazu übergehen, die ankommenden Signale vom 
unbekannten System einem INT-Pin zuzuführen wo dann bei jedem 
Pegelwechsel die INT-Routine ausgelöst wird. Diese Routine soll dann den 
UART anweisen das entsprechende Bit mit den 2 zusätzlichen Bits zu 
senden. Da eventuelle Pausen des Protokolls somit besser "abgefangen 
werden können" ;)

Dies ist denke ich die beste Lösung die auch mit einem einfachen µC 
funktionieren würde.

LG
Thomas F.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren