Forum: Compiler & IDEs Fehler bei "o" im LCD?


von Cris (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich probiere gerade mein LCD-Display aus (Pollin Ad-on Board).
Das LCD Display läuft auch.

Jetzt habe ich das Problem, dass das Display krytische Zeichen NACH dem 
o rausbringt (die nächsten 2-3 Zeichen werden falsch ausgegeben, in dem 
Fall jetzt PI und das andere hab ich noch nie gesehen).

Hab das ABC jetzt durchgemacht, aber das o ist der einzigste Buchstabe 
wo es passiert.

Jemand ne Ahnung warum?

von Karl H. (kbuchegg)


Lesenswert?

Normalerweise ist sowas ein Hinweis darauf, dass du irgendwelche 
Datenleitungen zum LCD vertauscht hast, oder dass es einen ungewollten 
Kurzschluss zwischen den Datenleitungen gibt. Kann auch sowas wie ein 
Wackelkontakt sein. Denn normalerweise sind dann systematisch 
irgendwelche Zeichen falsch. Man identifiziert dann das Bitmuster der 
falschen Zeichen (siehe zb hier 
http://de.wikipedia.org/wiki/HD44780#Schrift_und_Zeichensatz) und kann 
dann daraus ableiten, wo der Kurzschluss sitzen muss.

von Cris (Gast)


Lesenswert?

Vielen Dank!

Hast mir schon ein großes Stück weiter geholfen.
Habe jetzt den Fehler gefunden, nur nicht die Ursache.

Folgendes passiert:

Sobald ich ein Zeichen mit xxxx1111 schreibe, z.B. 'o', dann bleiben die 
4 1sen stehen. Diese verwendet es dann beim nächsten Zeichen als 
1111xxxx.

Beispiel
o - 0110 1111
a - 0110 0001

aber da die niedrigen 4 bits beim o stehen bleiben und die 4 hohen bits 
zu den niedrigen werden, wird daraus:

a - 1111 0110 (0001) -> PI

Aber warum passiert das nur bei Zeichen mit xxxx1111?

von micha (Gast)


Lesenswert?

Cris schrieb:
> Aber warum passiert das nur bei Zeichen mit xxxx1111?

Weil sicher irgendwo was mit "0x0F" bzw. "0xF0" maskiert wird. Bist Du 
sicher, dass die Routine "lcd_out" genau das macht, was sie soll?

von micha (Gast)


Lesenswert?

sorry, lcd_out sieht doch richtig aus :-/

von Thorsten (Gast)


Lesenswert?

Ich kann diesen Fehler leider bestätigen und komme leider auf keinen 
grünen Zweig..

Sende ich per Hand eine 0b11111111; dann zeigt der mir nur 'p' an..

Nehme ich aus dem LCD Tutorial die Dateien (lcd-routines.c & .h) dann 
gibt es nach jedem Zeichen welches im lowerByte 1111 stehen hat nur noch 
Grütze.. Z.B. "HalloPopo" gibt auf dem Display Hallo██þpo
jeder andere Buchstabe wird sauber übertragen nur alle Zeichen die im 
Lower Byte 1111 stehen haben verursachen Probleme...

Jemand mittlerweile eine Lösung?

Gruß
THorsten

von Katze D. (katze_d)


Lesenswert?

Eieiei...habe den Fehler nach ca. 8 Std. Nachtschicht (gestern 4 und 
heute 4) endlich gefunden!!
Nachdem ich festgestellt habe, dass sich die Zeichen ändern, wenn ich 
das Display nicht mit Leitung anschließe sondern direkt auf das 
Steckbrett klemme habe ich nochmals angefangen an den Timings aus der 
lcd-routines.h rumzuspielen. Nur nicht wie letzte Nacht alle auf einmal 
sondern nur ausgewählte Werte (Enable & WriteData). Und siehe da! Es 
klappt! :D
Warum die Timings gerade beim lower Byte und nur, wenn alle 1 sind mit 
den voreingestellten Zeitwerten Probleme verursachen ist mir noch 
schleierhaft..

Hatte irgendwo mal gelesen, dass der interne Taktgeber(Atmega32) sehr 
ungenau und temperaturabhängig ist.. könnte das vllt. das Problem sein?
Kurios ist ja, dass meine ersten Versuche keinerlei Probleme 
verursachten. Erst in weiteren tests und Codeexperimenten kam der Fehler 
plötzlich ans Tageslicht und ging nicht mehr weg...:/


Vllt. sollte man diesbezüglich in das Tutorial eine Info einbauen. Oder 
habe ich wieder nur halb gelesen und es gibt schon eine? ;)


Viele Grüße
THorsten

: Bearbeitet durch User
von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Vielleicht fehlt dir irgendwo ein Abblock-Kondensator oder er ist 
schlecht angebunden. Dann bricht die Spannung leicht ein, wenn viele 
Pins auf 1 liegen.

Mit freundlichen Grüßen
Thorsten Ostermann

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.