mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wieso schafft mein UART nicht mehr als 800 B/s ?


Autor: Sascha (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Auslieferungszustand wird der Mega8 durch den internen Oszillator
getaktet. Du mußt explizit auf externen Oszillator oder Resonator
schalten. Kann das der Fehler sein?

MW

Autor: HDE (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HDE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal davon ausgegangen, dass der 232-Chip richtig aufgebaut ist...

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ganze ist viel zu gleichmäßig für Fehler in der Datenübertragung
(schiefe Baudrate).
Überprüf mal ob periodisch irgendwas anderes stört.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. >:-[

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wegen FT232: Vorraussetzung ist, dass man nur sendet oder nur empfängt.


Wenn man 2 Byte sendet und auf Antwort (2 Bytes z.B.) wartet, sind die
100kBaud/s Wunschvorstellung.

Autor: Jörn G. aus H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas K. (thkais)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.