Ich habe deinen Code jetzt mal ganz_ _leicht überflogen.
1. Was für ein Display verwendest du jetzt eigentlich????
Ganz oben steht was von 240x64, dann steht bei dir in den Definition
von 128x64. Was stimmt denn jetzt??? Ich bin mir schon darüber klar,
dass das Display auf deinem Bild ein 128x64 ist, aber dein Problem
besteht darin, dass du fremden Code offenbar einfach kopiert hast, und
erwartest, dass das funktioniert!
2. #define glcd_BYTES_PER_ROW 21 // 40 chars per row
Wieso heisst dein Kommentar 40 Chars per row?
Dein Code ist für andere unverständlich!
3. Deine Berechnung für die Größe des Grafik-Speichers ist falsch.
0x400 = 1024. Das funktioniert nur bei einer Font-Größe von 8x8 für ein
128x64 Display.
Die Berechung des Grafik-Speichers erfolgt so:
X * Y / F
X = Anzahl der Pixel in horizontaler Richtung
Y = Anzahl der Pixel in vertikaler Richtung
F = Breite eines Zeichens
Das heisst für dich:
128 * 64 / 6 = 1366 Bytes = 0x556
Aus diesem Grund hast du auch mehr Müll im unteren Bereich deines
Displays bekommen, da dein Text-Bereich von der RAM-Position her
gesehen im unteren Teil deines Displays beginnt.
DER MÜLL DEN DU AUF DEINEM DISPLAY SIEHST, MÜSSTE DIREKT ABHÄNGIG VOM
AUSGEGEBENEN TEXT SEIN!!!
Ändere mal dein "Hallo..." in einen anderen Text, der Müll sollte
anders aussehen.
3. Deine Routinen gehen nach wie vor davon aus, dass ein Byte im
GrafikRAM auch 8 Pixeln entspricht. DAS IST BEI 6x8 NICHT SO!!! Bei 6x8
entspricht ein Byte im Grafik-RAM 6 Pixeln.
Mich wundert es ehrlich gesagt, dass das Rechteck so schön angezeigt
wird.
Tja, es sieht wohl so aus, als ob du deinen ganzen Code überarbeiten
musst. Ich hab auch gar nicht weiter in deinem Code nach Fehlern
geguckt, weil das aus meiner Sicht keinen Sinn macht.
Falls du noch Fragen hast, nur zu, ich hab auch ne ganze Weile
gebraucht, bis mein Display so lief, wie ich es haben wollte ;-)
Ralf