Forum: Mikrocontroller und Digitale Elektronik Anzeige auf Display


von Simone (Gast)


Lesenswert?

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

von Siegfried (Gast)


Lesenswert?

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

von Simone (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

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

von MarkusB (Gast)


Lesenswert?

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

von Simone (Gast)


Lesenswert?

Hallo Markus,

Ich arbeite mit dem P16F877.
Als Taktfrequenz habe ich 20MHz.
Die Baudrate ist 9600.


cu Simone

von MarkusB (Gast)


Lesenswert?

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