Hallo, Ich habe ein Programm geschrieben, welches über die RS232-Schnittstelle Zeichen einliest und sie dann auf dem LCD anzeigen soll. Nun zu meiner Frage: Einige Zeichen werden ordentlich angezeigt und bei Anderen kommt vorneweg irgendwelcher Schwachsinn. An was kann das liegen?Beim Empfang zum Hyperteminal sind sie alle ok. Besten Dank im vorraus. Grüße Simone
Hallo Simone, gib die empfangenen Zeichen doch einfach Hexadezimal aus, dann kannst Du sehen, welcher Zeichencode empfangen wurde und ob da irgentwelche Bits gekippt, oder dazu gekommen sind. Stimmen denn alle Übertragungsparameter wie Framelänge 7, 8 oder 9 Bit, No-Even-Odd-Parity, 1-2 Stoppbit? Tritt der Fehler auf, wenn mehrere aufeinanderfolgende "1" oder "0" in dem Zeichen vorkommen, dann läuft die Quarzfrequenz aus dem Ruder, oder der Vorteiler stimmt nicht. Siegfried
Hallo Siegfried, vielen Dank. Ich muß aber gestehen, dass ich mit der MC - Programmierung erst anfange. Also die Parameter stimmen. Ich werde es mal mit der HEX-Ausgabe probieren. //Tritt der Fehler auf, wenn mehrere aufeinanderfolgende "1" oder "0" //in dem Zeichen vorkommen, dann läuft die Quarzfrequenz aus dem //Ruder, oder der Vorteiler stimmt nicht. Das hier verstehe ich nicht so richtig, mit dem Vorteiler. Es wäre nett, wenn du es mir erklären könntest. Simone
Eigentlich gibt es einen Haufen Möglichkeiten, warum das nicht klappt. 1. Es gibt ein Problem bei der Übertragung zwischen PC und µC, z.B. wegen falscher Baudrate etc. 2. Es gibt ein Problem bei der Übertragung aus dem UART in Dein Programm, z.B. wenn der UART ausgelesen wird, während er gerade upgedatet wird. 3. Dein Programm verliert das Zeichen, z.B. wenn Du es in einem Register speicherst, das von einem Interrupt überschrieben wird. 4. Das LCD kann das Zeichen nicht ohne weiteres anzeigen (z.B. Umlaute) 5. u.v.a. MfG, Sebastian
Hi Simone, welchen Controller verwendest Du? Welche Taktfrequenz hat der Controller? Mit welcher Baudrate arbeitest Du? Du kannst nämlich nicht mit jeder Taktfrequenz jede beliebige Baudrate erreichen, es sei denn, der UART (serielle Schnittstelle) Deines Controllers ist frei programmierbar. Wenn die Baudrate nicht exakt stimmt kann es sein das bei einzelnen Zeichen ein Bit falsch empfangen wird. Gruß Markus
Hallo Markus, Ich arbeite mit dem P16F877. Als Taktfrequenz habe ich 20MHz. Die Baudrate ist 9600. cu Simone
Uff, den kenn ich leider nicht. Vielleicht besorgst Du Dir mal ein Datenblatt und überprüfst die Einstellungen der seriellen Schnittstelle. Es kann gut sein das eine Baudrate von 9600 nicht 100% exakt passt bei einer Frequenz von 20MHz. Sorry das ich Dir da nicht mehr helfen kann. Gruß Markus
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.