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 ?
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
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
Mal davon ausgegangen, dass der 232-Chip richtig aufgebaut ist...
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.
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. >:-[
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.
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
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.
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.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.