Ich habe es ein LCD 4X20 am ATMega8 mit int 8MHz laufen. Wenn ich diesen Über Ponyprog Flashe geht die Init und die Testanzeige ohne Probleme sofort. Mache ich hingehen einen Power Down reset, so ist es sehr schwer das LCD auch durch mehrmalige Reset drücken (4-5mal) zum leben zu erwecken. Der Resetpegel kommt ohne Makel am µC,(laut Oszi). Wenn es dann einmal läuft ist es voll io und macht alles was mann möchte. der Mega8 ist mit SUT1=1 / SUT0=0 programmiert. Das das LCD def. ist glaube ich weniger, da ich zwei die gleichen habe und beide das Verhalten aufweisen. rene.
Ich hatte auch mal so ein ähnliches Problem, ich glaube es war ein Delay nach oder im init zu kurz. Versuch mal testweise deine Delays zu verlängern (Datenblatt nachschaun, beim init teilweise sehr lange Delays!)
Ich habe die inits alle auf 200% angehoben und es ergab keine Änderung. Ich habe das LCD im 4 Bit Mode und eine Kleine sache im Datasheet gefunden. Dies ist die vorgeschlagene INIT-Routine, die man im 4-Bit Mode fahren soll Function Set 0 0 0 0 1 0 4-Bit Datenlänge einschalten (noch im 8-Bit Modus) Function Set 0 0 0 0 1 0 4-Bit Datenlänge, 2-zeiliges Display, 5x7 Font 0 0 1 0 0 0 Display ON/OFF 0 0 0 0 0 0 Display ein, Cursor ein, Cursor blinken 0 0 1 1 1 1 Clear Display 0 0 0 0 0 0 Display löschen, Cursor auf 1. Spalte von 1. Zeile 0 0 0 0 0 1 Entry Mode Set 0 0 0 0 0 0 Cursor Auto-Increment 0 0 0 1 1 0 was meine Frage ist, das erste senden des Funktion Set befehls für 4-Bit Mode sind nur die 4 High Nibble. dürfen die anderen auch noch gesendet werden, oder dürfen diese nicht gesendet werden? Ich sende diese zZt. noch mit. aber wie geschrieben, nach einem Reste welcher von Ponypreog kommt geht es. rene
Habe es gefunden und es Geht, es liegt nicht an den Delays, sondern an dem ersten senden. Dabei darf man nicht alle 8 Bit senden, sondern nur 4 Bit. void init_LCD() { delay(100); LCD_clr_rw(); LCD_clr_rs(); LCD_PORT = (0b00000010 & 0x0F); // set 4 Bit Mode noch im 8 Bit Mode pol_e(); delay(100); LCD_isend(0b00101000); // Set 4Bit im 4 Bit Mode delay(20); LCD_isend(0b00001111); // 2|4 zeilen | dislay on | courser on | 5x7font delay(20); LCD_isend(0b00000100); // Auto increment Mode delay(20); LCD_isend(0b00000001); // Clear Display delay(20); } Dies Funktioniert Super auch nach Power Down und Hardware Reset. Bye Rene
Das ist nur ein Effekt, der bei Dir jetzt gerade funktioniert. Lade Dir mal das Datenblatt vom Displaycontroller herunter. Wenn es ein HD44780 - kompatibles Display ist, dann gibt es dafür eine "kurze" Init und eine "lange". Die Lange Init kann auch ein aufgehängtes Display wieder starten, wenn die Reset-Kondition vorher unklar gewesen ist. Die "kurze" Init funktioniert nur bei einwandfrei gestartetem Display.
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.