> Was meinst du genau mit Timing.
Na ja.
Beim Initialisieren des Displays und auch später gilt es
Wartezeiten einzuhalten. Aus dem Tutorial geht leider nicht
eindeutig hervor für welche Taktfrequenz der Code geschrieben
wurde und nachgerechnet hab ichs auch nicht.
Aber du solltest das nachrechnen!
Rechne doch mal nach, ob die Warteschleifen mit den im
Tutorial genannten Konstanten tatsächlich die angegebenen
Wartezeiten bei 4 Mhz ergeben.
delay50us: ;50us Pause
ldi temp1, $42
delay50us_:dec temp1
brne delay50us_
ret ;wieder zurück
;Längere Pause für manche Befehle
delay5ms: ;5ms Pause
ldi temp1, $21
WGLOOP0: ldi temp2, $C9
WGLOOP1: dec temp2
brne WGLOOP1
dec temp1
brne WGLOOP0
ret ;wieder zurück
Die sind kritisch. Vor allem in der Initialisierungsphase kommen
ein paar Kommandos an das LCD zum Zuge die je nach konkretem LCD
Kontroller längere Zeiten brauchen. Wenn du beim Text-Schreiben
mal ein Kommando verlierst, weil das LCD noch nicht aufnahmebereit
ist, dann siehst du das, weil Text fehlt. Wenn dir aber in der
Initialisierungsphase ein Kommando an das LCD fehlt, dann siehst
du nur: Das LCD initialisiert nicht so wie das willst.