Hi,

Entschuldigung für meine zahlreichen Nachfragen gestern, Ich hatte nicht gesehen, daß du deinen (fast) kompletten Code angehängt hast.

Folgendes ist mir aufgefallen:

LCD_init(void) ist IMHO so in Ordnung.

In write_cgram() steht folgendes
Code:
    LCD_setCursorAddress( adresse + (8*index));
    for ( i = 0; i < 8 ; i++) {
        LCD_writeChar( pixels[i]);
        LCD_setCursorAddress( adresse + (8*index) + i);
    }
IMHO müsste da stehen:
Code:
    for ( i = 0; i < 8 ; i++) {
        LCD_setCursorAddress( adresse + (8*index) + i);
        LCD_writeChar( pixels[i]);
    }
Eventuell nach jedem Befehl an das LCD noch ein LCD_waitReady(),
genauso wie im init. Die Befehle brauchen auch auf Displayseite
etwas zum ausführen.

Warum am Ende von write_cgram() ein LCD_clear() ?
Das ist IMHO nicht notwendig.

Ansonsten scheint mir xxx() soweit zu stimmen.


Insgesamt sollte das so funktionieren.
Bitte probier die obigen Vorschläge aus.


Wenn das nicht klappt folgendes probieren:
- die initialisierung ganz ohne xxx() ausführen
- mit xxx, aber nur ein selbstdefiniertes Zeichen, möglichst aus der Mitte
- langsam alle Zeichen dazunehmen
Und dann nach jedem Schritt ausprobieren, ob das Fehlerbild noch auftritt.

Zum Fehlerbild fällt mir nur folgendes ein: Es könnte sein, daß deine 'Display Start Address' verschoben ist. Im Zweifelsfall das Display
ausgehend von LCD_setCursorPos(0,0) mit den Zeichen a-zA-Z0-9 vollschreiben und schauen ob sich ein Muster ergibt.


Ragnar