Wieso schafft mein UART nicht mehr als 800 B/s ?

Gast #226148
Lesenswert?

Ich kapier's nicht.

AtMega8 UART -> MAX232N -> Nullmodemkabel 1m -> PC
Quarzwechsel bringt auch nicht viel.

Egal welche Baudrate ich einstelle, wenn ich mehr als 700-800 Bytes pro
Sekunde verschicke, gehen Daten verloren.

Siehe Anhang. Der Controller zählt von 0 bis 255 hoch. Alle X ms wird
ein ordentlicher Batzen Daten verschluckt.

Am PC kann es eigentlich nicht liegen - habe mehrere Programme
ausprobiert. (Last ist auch immer nur ein paar Prozent)

19200 Baud und 500 B/s: Super
19200 Baud und 1000 B/s: Aussetzer
38400 Baud und 500 B/s: Super
38400 Baud und 1000 B/s: Aussetzer
...

Der Controller wartet auch immer brav, dass er wieder ein Byte über den
UART senden darf.

Woran kann das liegen ?
Angehängte Dateien:
Gast #226150
Lesenswert?

Also wenn das PC-Prog keine Fehler verursacht (lässt sich ja leicht
überprüfen, einfach anderes Programm nehmen), dann kann es nur noch am
µC-Prog liegen

kannst ja mal dein Progr. posten

Gruß
HDE
Gast #226153
Lesenswert?

Leider hat sich gerade eine böse Vermutung bewahrheitet :(

Ich habe das ganze an einem anderen Rechner mit "normalem" COM Port
getestet und dort geht es wunderbar.

Auf meinem Rechner habe ich jedoch einen billigen USB-COMPort Adapter -
der scheint Probleme zu machen. >:-[
Gast #226154
Lesenswert?

USB hat doch laut Spezifikation so ein lustiges Polling für Datenpackete
hin und her (1-5ms), wenn Dein UART also gerade sendet, während der USB
Daten schaufelt, wird Dir auch ein teurer USB<->RS232-Adapter nichts
bringen. Einzige Lösung scheint mir ein Handshaking zu sein.
Gast #226155
Lesenswert?

Soweit ich weiß, hat so ein USB-Chip nur einen Puffer von 384 Byte.

Entweder Du nimmst die Handshakesignale oder Du teilst Deine Daten in
kleine Pakete auf (z.B. 256 Byte) und wartest dann immer auf ne Antwort
vom PC.

Vielleicht gehts auch mit einem RS232 auf USB2.0 Converter, die sind
halt etwas teurer.


Peter
Gast #226156
Lesenswert?

Wenn der USB-RS232 Konverter keine 500Byte/s schafft, dann ist entweder
mit deinem Windows/irgendeiner Einstellung was nicht OK, oder der USB
Konverter ist müll -> zurückgeben.

Mit einem FT232 sind konstant über 100kBaud/s von RS232->USB kein
problem.
Gast #226158
Lesenswert?

Einige der billigen USB-Kabel haben sehr schlechte Treiberleistung. Wenn
du sie direkt mit dem Controller verbindest funktioniert es vielleicht -
eine weitere RS232-Verlängerung ist vielleicht dein Problem.
jörn
#226159
Lesenswert?

Ich habe auch ein billig-Kabel (9,90 Euro), das funktioniert bestens.
Nur auf die bereits angesprochenen Eigenheiten des USB muß man
rücksicht nehmen, der USB ist nunmal ein Single-Master Bus und hat eine
Abfragerate von 1 ms. Wie bereits erwähnt, wird auch ein teures
USB-Kabel diese Probleme kaum beseitigen.
Die Treiberleistung sehe ich nicht als Problem, wenn es so wäre, gäbe
es auch bei geringeren Byteraten schon Ausfälle.
Gast #226160
Lesenswert?

Vielleicht kann mir ja jemand sagen ob mein USB-RS232 Adapter "normal"
ist:

- Beim Anstecken erkennt Windows XP etwas von "USB to Serial" und
installiert zwei HID-Geräte.

- Auf der beiliegenden CD sind zwei Verzeichnisse:
-- Einmal USB232: Installiert man den Treiber, so erscheint einer neuer
COM-Anschluss mit dem Namen "Usb/serial USB-HID -> COM device". Den
habe ich bis lang benutzt

-- Dann gibt es noch das PL2303 Verzeichnis. Anscheinend ein Treiber
für den Prolific PL2303. Den kann ich installieren, aber es passiert
nix. Es erscheint kein neues Com Gerät. Habe es auch auf einem frischem
System getestet.

Ich hatte gehofft, dass der andere Treiber vielleicht besser wäre.

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