RS232 kommunikation bytes verloren

Gast #1760975
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))
Gast #1760995
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
Gast #1761032
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?
#1761066
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
Gast #1761079
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.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.