Forum: Mikrocontroller und Digitale Elektronik USB zu Seriell Wandler Problem


von Dietmar (Gast)


Lesenswert?

Hallo,

ich übertrage von einem PC Programm aus Daten zu einem Controller.
Diese Datenübertragung besteht aus einem langen Telegramm, mit über
10000 Bytes. Am Ende wird quittiert. Dies ist auch über die normalen
COM Schnittstellen kein Problem. Auch mit dem ersten USB zu Seriell
Konverter den ich probiert habe, gab es keine Probleme (Firma secomp :
ROLINE Konverter-Kabel USB - seriell).
Dann gings los, 2 andere USB - seriell Konverter (einer von der Firma
vivanco) nehmen die Daten so schnell entgegen, das der Konverter seinen
Puffer wohl selbst überschreibt, weil die Daten über RS232 nicht so
schnell ausgegeben werden können (19200 Baud).
Ist das normal das bei manchen Konvertern die Daten im Puffer
überschrieben werden? Habt ihr ähnliche Probleme auch schon mal
gehabt?

Schöne Grüße
Dietmar

von Wolfram (Gast)


Lesenswert?

>Dann gings los, 2 andere USB - seriell Konverter (einer von der Firma
>vivanco) nehmen die Daten so schnell entgegen, das der Konverter
seinen
>Puffer wohl selbst überschreibt, weil die Daten über RS232 nicht so
>schnell ausgegeben werden können (19200 Baud).

Ist das eine Vermutung deinerseits? Auf welcher Grundlage stellst du
die auf?

19200 Baud sollte jeder Adapter schaffen. mit 19200 ist die
Bitgeschwindigkeit innerhalb eines Zeichens definiert, nicht wie lange
die Übertragung zwischen den Zeichen pausiert. Ein Mikrocontroller
könnte z.B. probleme bekommen wenn die Zeichen mit nur ein oder 2
Stopbits zwischen ihnen hereinkommen und er probiert gleich die Daten
auszuwerten bei Zugriff mit Polling auf die uart. Deswegen gibt es
Interrupts. (Dein angebliches überschreiben des Puffers im USB
Controller klingt sehr danach, du bist wohl eher zulangsam beim Abholen
der Zeichen)
Kann sein das dein PC Programm die Zeichen mit pausen zwischen den
Zeichen sendet. Ein USB-seriell Wandler fasst aber ein paar Zeichen zu
einem Paket zusammen und sendet dann dieses Paket mit nur einem oder 2
Stopbits zwischen den Zeichen.
Durch die Paketierung verschiebt sich aber auch das Timing. bsp ftdi
ft232 sendet erst nach 16ms oder 62 Byte ein Paket ab, solange sich die
anderen Leitungen nicht ändern. Bei niedrigen Timeoutzeiten kann es da
zu Problemen kommen.
Auch unterschiedliches Handshakingprotokoll auf PC und Controllerseite
können die Ursache sein.
Lies dir am besten mal auf der Ftdi Seite die applikation Note zu
Durchsatz und Latenz durch.
Im allgemeinen deckt der Einsatz eines USB-Seriell Wandlers nur
Probleme auf, die auch schon vorher vorhanden waren, bloss nicht
aufgefallen sind.

von peter dannegger (Gast)


Lesenswert?

Ich würde auch sagen, daß da entweder der USB-RS232 Dongle selber oder
der USB-Treiber schlampig programmiert sind.

Ein 10kB Puffer wird wohl nicht im Dongle sein, d.h. es muß ein
Handshake zwischen Dongle und Treiber geben, um den PC warten zu
lassen, bis der Puffer im Dongle wieder leer ist.

Ich habe sicherheitshalber meine Daten in Häppchen von max 512 Byte
portioniert und da laufen meine beiden Dongle noch.


Peter

von Dietmar (Gast)


Lesenswert?

Das aufteilen in Häppchen ist natürlich eine Lösung. Wie gesagt, bei
einem funktioniert es ja.
Das der Puffer überschrieben wird ist natürlich nur eine Vermutung,
wenn man auf der Mikrocontrollerseite die Daten mißt, kann man schon
sehen wie lange die Daten kommen (müssen). Bei dem Einsatz besagter USB
Konverter mißt man allerdings nur sehr kurz die Daten. Das läßt
zumindest auf das Überschreiben des Puffers schließen. Am PC Programm
kann man den Übertragungsfortschritt mittels Anzeige verfolgen, die
eben bei 19200 Baud etwas dauert. Mit diesem USB Konverter ist die
Fortschrittsanzeige quasi in 1 Sekunde fertig.

Die sicherste Lösung wird wohl sein, die Daten aufzuteilen.

Danke für die Antworten.

Dietmar

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.