Hallo, ich arbeite zur Zeit aus lerngründen das AVR-Tutorial durch und bin am LCD angekommen. Ich habe ein 4x20 LCD das den KS0066U Controller (Datenblatt als PDF angehangen) verwendet. Die Initialisierung und so ziemlich alle Funktionen des Displays und aus der lcd-routines.asm funktionieren. Allerdings tritt ein Problem auf wenn ich den Cursor über die DDRAM Addresse versetze und anschließend in die 4. Zeile schreibe. Die ersten drei Zeichen werden in die 4. Zeile geschrieben, das 4. Zeichen landet allerdings am Ende der 3. Zeile. Im angehangenen Bild habe ich die Zeichen 0 bis 9 ausgegeben nachdem ich den Cursor mit folgenden Befehlen versetzt habe:
1 | ldi temp1, $B7 |
2 | rcall lcd_command |
3 | |
4 | ldi ZL, LOW(text*2) |
5 | ldi ZH, HIGH(text*2) |
6 | rcall lcd_flash_string |
Man sieht wie der Cursor nach der 2 springt und die 3 in die 3. Zeile schreibt, statt in der 4. Zeile weiter zuschreiben. Dieses verhalten tritt nur auf wenn ich die DDRAM Adresse verändere, verschiebe ich den Cursor mit dem Shift befehl oder schreibe aus der Home Position kann die 4. Zeile ganz normal beschrieben werden. Nach langer Fehlersuche komme ich nicht weiter und hoffe auf Hilfe. Ich kann mir das Verhalten nicht erklären, hat hier vielleicht jemand eine Vermutung? Ich bin für jede Idee sehr dankbar.