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!!
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.
:-))) 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!!
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.
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.
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?)
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
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.
<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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.