Forum: Compiler & IDEs LCD Ansteuerung komisch


von WorkMännchen (Gast)


Lesenswert?

Hallo,

ich mache LCD Ansteuerung und habe ein Problem. Wenn ich ein Text auf 
Display in der main-Funktion ausgebe, dann erscheinen kryptische Zeichen 
und erst nach dem Reset wird das richtige Text angezeigt. Warum ist das 
so? Was mache ich falsch?

Der Code zur Initialisierung und Ausgabe des Textes auf Display ist 
richtig. Da nach Reset ja alles korrekt angezeigt wird. Aber 
kommischerweise erst nach dem Reset betätigt wird bzw. nach jedem 
zweiten Flaschen des Programmcodes.

Danke für Hilfe!!

von Werner B. (Gast)


Lesenswert?

Meine Glaskugel sagt:

Der Fehler liegt in Zeile 473 von lcd.brabbel

von WorkMännchen (Gast)


Lesenswert?

wie meinst du das? :)

von Werner B. (Gast)


Lesenswert?

Na, ich bin Wahrsager (mein Werkzeug ist eine Glaskugel), darum kenn ich 
die von dir verwendete Hardware (LCD Typ, Controller, Programm) 
natürlich auswendig. Darum habe ich auch sofort gesehen dass der Fehler 
in Zeile 473 deines Programms steckt.

von WorkMännchen (Gast)


Lesenswert?

:-)))

LCD von Displaytech Ltd. 202A, 2-zeilig. mit KS0066U Controller.
Die Ansteuerung wird in 4-Bit Mode über Schieberegister betrieben.
Wie gesagt, das kommische ist, dass die Anzeige bei jedem zweiten 
Flashen bzw. jedem zweiten Reset richtig angezeigt wird! ich gebe also 
in der main() eine Text auf Display aus: "Hallo Welt!".
Bei jedem zweiten Reset bzw. Flashen des Programmcodes auf den 
Mikrocontroller (Atmega644 mit 16MHz) wird der Text richtig angezeigt. 
Ich sehe also entweder "Hallo Welt!" und wenn ich Reset drücke bzw. neu 
flashe, dann sehe ich ein kryptisches Text.. drücke ich wieder Reset 
bzw. neuflashen, sehe ich kryptischen Text und so weiter... also scheint 
irgendwie ein Toogle-Verhalten zu sein :-))

Ich weiß nicht woran das liegen kann... habt Ihr eine Idee?

Danke!!

von Karl H. (kbuchegg)


Lesenswert?

Gib dem Display am Programmanfang einfach mal ein bischen
mehr Zeit für seine eigene Initialisierung bevor dein Programm
dann anfängt den LCD Kontroller zu konfigurieren.

von Maxx M. (maxx2206)


Lesenswert?

hi,

da es im laufenden betrieb auch bei jedem 2. durchlauf hapert ist die 
initialisierung vermutlich nicht das problem.

wie sieht es allerdings mit deinen routinen rund um das erwaehnte 
schieberegister aus? wenn da an einer stelle ein fehler im ablauf liegt 
oder was vergessen wurde kann das durchaus bits stehenlassen die dann 
beim naechsten durchlauf muell erzeugen.

von Werner B. (Gast)


Lesenswert?

Frage(n) zur weiteren Eingrenzung des Problems:

A) Definierten Ausgangszustand sicherstellen:

 Ist das Verhalten nach den Einschalten (Power On) immer identisch?
 Falls ja, wie ist Ausgabe? (Verständlich oder Alt-Ägyptisch?)

von Peter D. (peda)


Lesenswert?

WorkMännchen wrote:
> LCD von Displaytech Ltd. 202A, 2-zeilig. mit KS0066U Controller.
> Die Ansteuerung wird in 4-Bit Mode über Schieberegister betrieben.
> Wie gesagt, das kommische ist, dass die Anzeige bei jedem zweiten
> Flashen bzw. jedem zweiten Reset richtig angezeigt wird!

Jau, dann hast Du wohl die Initialisierung nicht lt. Datenblatt gemacht.

Das Schalten von 8Bit nach 4Bit geht schief, wenn man schon im 4Bit ist.

Daher schaltet die Initialisierung lt. Datenblatt erstmal 2-mal auf 
8Bit.


Peter

von WorkMännchen (Gast)


Lesenswert?

So, jetzt ist alles sehr komisch. Als ich die Wartezeiten (in ms) etwas 
geändert habe... dann verhält sich die Ausgabe noch anders. Früher hatte 
ich bei jedem zweiten Reset eine richtige Anzeige und sonst kryptisch. 
Jetzt ist die Ausgabe zufällig, einige Male richtige Anzeige, einige 
Male verschobene Anzeige um einpaar Stellen, und einige Male kryptische 
Anzeige...!!!
Alles hat Zufallscharakter!

Komischerweise, wenn ich kein Reset mache, sondern die Spannung am Board 
ausschalte und wiedereinschalte, dann wird am Anfang alles richtig 
angezeigt. Jedoch beim Flashen und Reset verhält sich die Anzeige 
komisch...

Die Wartezeiten die ich verändert habe liegen in ms Bereich. Also auf 
jeden Fall länger als erforderlich. Wenn ich also die Wartezeiten bei 
Initialisierung und Ausgaben ändere, ändert sich das Verhalten des LCDs.

von Peter D. (peda)


Lesenswert?

<Schon Fusseln vorm Mund Modus ein>

Initialisierung wirklich lt. Datenblatt gemacht und die Bustimings (tAS, 
tAH,  tDSW, tH, pwEH, tcycE) eingehalten?

<Schon Fusseln vorm Mund Modus aus>


Peter

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.