Hi Ich muss grössere Datenmengen (ca. 1MB) über RS232 vom uC auf den PC bringen. ich verwende die std. Uart einstellungen 115200 N 1. Irgendwie erhalte ich beim PC jedoch nur ca 80% der Daten wenn ich den Bus voll auslaste. Die Daten welche ich erhalte scheinen korrekt zu sein (es fehlen einfach n paar), desshalb vermute ich dass es sich um kein timing problem handelt. Ich habe viel mehr den verdacht, dass Linux beim auslesen versagt, aber ist dies überhaupt möglich?? (Auslesethread macht nichts auser auslesen und abspeichern in ein Buffer im Ram, sleep ist auf 10us...(std. PC (P4 3GHz oder so))
Kein Protokol ? Wenn die Baudarte aufm uC nicht genau stimmt geschieht genau das.
Um das zu vermeiden gibt's Flußsteuerung, in Hardware (RTS/CTS) bzw. Software (XOn/XOff) RS-232: Flußsteuerung
Hey noch Was schrieb: > Kein Protokol ? Wenn die Baudarte aufm uC nicht genau stimmt geschieht > genau das. Wenn die Baudrate nicht genau stimmen würde, dann doch würden doch auch die Bytes die ich empfange irgend ein unsinn ergeben, oder? Insbesondere wegen der Tatsache, dass 80% der Daten korrekt und 20% der Daten verlohren sind, denke ich eher an ein Buffer overflow problem. Die verbindung ist ohne Flusskontrolle also nur TXD,RXD und GND
a ja noch vergessen anzufügen: Eine Flusskontrolle ist doch eher historisch bedingt und heute eher Obsolete, ich denke jeder modernere PC sollte doch in der lage sein 115k Baud 100%ig ausgelastet abzuarbeiten, und sommit ist doch die Flusskontrolle überflüssig. Giebt es noch Anwendungen die wirklich ne Flusskontrolle benötigen?
Hallo, wenn Du die Daten nicht schnell genug aus dem Pufferspeicher "herausholst", hast Du ohne Flusssteuerung die von der geschilderten Probleme. Hier ist auch entscheidend welches Programm Du PC-seitig verwendest. Manche Terminalprogramme geben bei der von Dir angegebenen Geschwindigkeit schon auf. Kannst Du keine Software Flusssteuerung (XOn/XOff) realisieren? Ohne Flusssteuerung wäre mir die Übertragung nicht robust genug. Mit freundlichen Grüßen Guido
RS232? Neue PCs haben doch sowieso keine RS232 mehr drin. Prinzipiell wäre ein Einsatz eines FT232R oder was ähnliches sinnvoll. Allerdings wird Du um eine Flusssteuerung oder ein "Frame" Format nicht rumkommen. Schau dir mal das X-Modem Protokoll (Appnote von Atmel AVR350) an. Damit kannste dann den ganzen Dtenblock CRC gesichert und mit ARQ übertragen lassen. Das Xmodem sollte von jedem Terminalprogramm unterstützt werden oder relativ einfach selber implementiert werden können.
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.