vorweg: Ich weiß, daß dieses Thema schon oft behandelt wurde und ja, ich habe die diversen Beiträge gelesen!
Ich wollte bei einem Projekt das genannte Display mit einem ATmega 8 einsetzen und versuche schon seit Tagen die Initialisierung hinzubekommen. Anfangs nur mit Hilfe der Datenblätter vom Display und vom Controller und später mit den diversen Codes im Forum. Allerdings beschränke ich mich im wesentlichen auf ASM.
Da alles erfolglos war habe ich
zwei neue Displays gekauft
den ATmega 8 gewechselt
die Steckbrettschaltung in eine fest verdrahtete Version geändert.
Nach vielen vergeblichen Versuchen hatte ich dann gestern ein erstes Lebenszeichen mit dem Code von Bernhard (5V, 4Bit)
Nachdem es schon spät war habe ich alles unverändert gelassen und nur ausgeschaltet.
Als ich dann heute wieder eingeschaltet habe, tat sich wieder nichts.
Nach diversen Versuchen bin ich nun dahinter gekommen, daß das Display nur nach dem Flashen startet. Oft auch erst beim 2. Mal.
Das ist natürlich keine Lösung und ich frage mich was die Ursache sein könnte!
Ich habe vor der Initialisierung auch schon 1s Pause eingelegt, aber ohne Änderung.
Wie kommt Bernhard S. auf die 10 us, bei einem CPU-Takt von 1 MHz?
Das ist zwar ein guter Hinweis, aber eine Änderung hat leider nichts gebracht.
Ich habe mir in der Zwischenzeit auch noch mal die Timing-Vorgaben im Datenblatt angesehen. Eigentlich hat Bernhard überall sehr viel Luft gelassen:
Soll Ist
vor Initialisierung >40ms 100ms
nach dem ersten Schritt >1,6ms 10ms
danach jeweils >26,3us 1ms
nach Initialisierung >26,3us 100ms + 1s
bleibt noch das toggeln von EN, aber auch da ist mit 50us genug Zeit eingebaut.
Ich habe mir in der Zwischenzeit auch noch mal die Timing-Vorgaben im
Datenblatt angesehen. Eigentlich hat Bernhard überall sehr viel Luft
gelassen:
Soll Ist
vor Initialisierung >40ms 100ms
Das ist oft ein kritischer Punkt, wenn man sein Gesamtsystem nicht überblickt. Was passiert auf den Leitungen, bevor der zuständige Treiber die Kontrolle darüber übernimmt?
Hier hauen gerne mal schlecht programmierte Bestandteile der ohne Sinn und Verstand zusammenkopierten Software rein. Oder auch genauso ohne Sinn und Verstand designte Hardware...
Bei der Identifizierung eines Problems in diesem Bereich hilft übrigens ein LA nicht. Da muss es schon wirklich ein Oszi sein.
... daß das Display nur nach dem Flashen startet.
Oft auch erst beim 2. Mal.
Bernhard S. hat das LCD auf den Port B gelegt - über diesen läuft aber auch das Programmieren (Flashen). Was passiert, wenn stattdessen Port D benutzt wird?
Im 5V 4-Bit Modus ist Vin mit Vout zu verbinden und dort 5V einzuspeisen. Das DOGM163 läuft bei mir völlig problemlos, ich benutze aber SPI und 3,3V Betrieb.
Erstmal danke für das Interesse und die guten Ratschläge.
Ich habe den Fehler gefunden!
Ist mir zwar peinlich, aber da muß ich jetzt durch!
Da ich übernommene Codes auch verstehen möchte, schreibe ich sie grundsätzlich neu, auch wenn ich nichts ändern will. So auch hier.
Dabei habe ich aus Versehen das RS Signal vor der Initialisierung nicht auf low gesetzt. So nahm das Drama seinen Lauf!
Erstmal danke für das Interesse und die guten Ratschläge.
Ich habe den Fehler gefunden!
Ist mir zwar peinlich, aber da muß ich jetzt durch!
Da ich übernommene Codes auch verstehen möchte, schreibe ich sie
grundsätzlich neu, auch wenn ich nichts ändern will. So auch hier.
Dabei habe ich aus Versehen das RS Signal vor der Initialisierung nicht
auf low gesetzt. So nahm das Drama seinen Lauf!
Also, wie von mir vermutet: Das Problem lag vor der eigentlichen Initialisierung.
Oder anders ausgedrückt: die Intialisierung ist offensichtlich unvollständig. Wenn der Zustand von RS eine Rolle spielt, dann hat die Initialisierung sich natürlich auch um dieses Signal zu kümmern.