Forum: Mikrocontroller und Digitale Elektronik Arduino Due - Dual UART - Datenstrom verschachteln


von Thomas F. (Gast)


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

von Christian M. (Gast)


Lesenswert?

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

von Wolfgang (Gast)


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?

von Christian M. (Gast)


Lesenswert?

Wolfgang schrieb:
> Thomas F. schrieb:
>> Ich benutze zwei Arduino Due.
>
> Meinst du nicht, dass das etwas übertrieben ist?

Thomas F. schrieb:
> Einer auf jeder Seite der Leitung.

Aber hast schon recht, irgend ein kleiner Arduino tut es längst.

Meinst Du die Anzahl oder die Art Arduino?

Gruss Chregu

von Wolfgang (Gast)


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.

von Thomas F. (Gast)


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).

von max123 (Gast)


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

von max123 (Gast)


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

von Wolfgang (Gast)


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.

von Thomas F. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.