hallo, Folgendes Problem bei einer übertragung kippen mir immer mehrere Bits was kann i dagegen tun?? z.b ich sende c2 im speicher steht dann c3.... atmega8 RS232 baud2400-9600 nicht größer
Kann alles mögliche sein, kann man so nicht sagen. 9600 Baud bis 10 m sollte überhaupt kein Problem darstellen und nahezu immer fehlerfrei laufen. Wenn nicht, ist irgendwo der Wurm drin oder du schaltest große Elektromotoren oder Leuchtstoffröhren in der Nähe. Natürlich sollte man auch ein Protokoll fahren, was fehlerresistent ist.
Passt Dein Quarz zu der Baudrate?
>> was kann i dagegen tun??
Wenn der Rest stimmt und die Ursache Störungen/Rauschen der Umgebung
ist:
-Kanalcode verwenden (z.B. 3-fachen Wiederholcode benutzen, d.h.. 3 mal
das gleiche senden und dann Majoritätsentscheidung).
-CRC generieren und bei Fehler Daten neu anfordern.
... es gibt viele Möglichkeiten (und Fehlerquellen im Programm/Aufbau)
Danke für die antwort, es gibt weder große motoren noch lange leitungen noch sonstige beeinflussungen. Kann es sein dass obwohl ich dass zeichen richtig empfange, es falsch gespeichert wird??? ich schreibe di empfangenen bit bzw. Bytes in das flash( Entwickle eine selfprogrammingmode)....
Wie empfängst du? Mit Hardware- oder Software-Uart? Als weitere Fehleruelle könnte ich mir das Timing beim Flash-schreiben als Ursache vorstellen. Schreib doch erst mal nur ins RAM und prüfe dort. Dann kannst du den Fehler schon mal einkreisen.
Auf jeden Fall sollte man erstmal schauen, dass bei diesen Bedingungen die Übertragung wirklich nahezu fehlerfrei ist, ehe man ein fehlertolerantes Protokoll aufsetzt, was ja die Ursache für das Problem nicht korrigiert. Das ist etwa so, wie bei Windows oft vorgegangen wird: Jede Menge Fehler, die nicht korrigiert werden, dafür jede Menge Code, der die Fehler wieder ausbügelt und versteckt.
Passt Dein Quarz / Vorteiler? Was ist, wenn Du probehalber mal die Baudrate runterdrehst?
> Das ist etwa so, wie bei Windows oft vorgegangen wird: Jede Menge > Fehler, die nicht korrigiert werden, dafür jede Menge Code, der die > Fehler wieder ausbügelt und versteckt. Oder wie bei GCC.
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.