Arduino Due - Dual UART - Datenstrom verschachteln

Gast #6009551
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
Wie sieht das Datenformat des fremden Gerätes aus? Nur ASCII oder 
Binärdaten? Gibt es Pausen?

Im Prinzip machbar, Aufwand hängt von den gefragten Bedingungen ab.

Gruss Chregu
Gast
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
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.