Forum: Mikrocontroller und Digitale Elektronik RS232 kommunikation bytes verloren


von BERG (Gast)


Lesenswert?

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))

von Purzel H. (hacky)


Lesenswert?

Kein Protokol ? Wenn die Baudarte aufm uC nicht genau stimmt geschieht 
genau das.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Um das zu vermeiden gibt's Flußsteuerung, in Hardware (RTS/CTS) bzw. 
Software (XOn/XOff)

RS-232: Flußsteuerung

von BERG (Gast)


Lesenswert?

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

von BERG (Gast)


Lesenswert?

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?

von Guido C. (guidoanalog)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.