Hallo, Ich hab mir hier aus dem Forum eine Lib für ein T6963C Display besorgt. Bis jetzt geht es auch, nachdem ich endlich mal den Startpunkt für den Grafik- und Textram eingestellt hab. Allerdings verirren sich jetzt einige Pixel auf dem Display. Wenn ich Text schreibe, entsteht die untere Reihe an wirren Pixeln. Beio Grafik sind ein bis zwei Pixel immer an der falschen Stelle. Ab und zu gehts auch ohne fehler bei der Grafik. Die Pixel sind immer wo anders und es fehlen auch immer andere. Weiß jemand, woran das liegen könnte? http://andy.gsm-modding.de/sany0003.jpg
Vielleicht hast Du ein schlechtes Timing - versuch doch mal zwischen den Bytes eine kurze Pause einzulegen oder vielleicht gibt es eine Busy-Flag welches man auswerten kann...
Ja, es gibt ein Busy Flag. Das werte ich auch aus. Achja nochwas! Die Fehler sind doch IMMER an der selben Stelle. Und sobald ich in den unteren Bereich des Displays schreibe, bekomme ich noch mehr Müll raus, als weiter oben. Ich geh davon aus, dass die RAM Adressen irgendwie falsch sind. Kann das sein?
1. Poste deinen Code, sonst sehe ich nicht, wo das Problem liegen könnte 2. Prüfe die Einstellung des Display-RAMs bzgl. Text- und Grafik-Bereich, ob sich diese nicht überlappen. Ralf
Hier ist der Source. Vielen Dank fürs nachschauen!
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
Ja, ich hab den Code kopiert und ihn an mein Display angepasst. Ich war mir auch länger nicht im klaren, wie das mit dem RAM abläuft usw. Aber mitlerweile hab ichs doch (hoffentlich begriffen). Ich werd den Code nochmal durchgehen und überprüfen. Danke für deine Hinweise! Andreas
TXT_HOME = 0x1400 GRAPH_HOME = 0x0000 (aus meinem assembler proggi) Passt soweit ich weis für JEDES t6963c LCD. Jetzt setzt du die page eben auf deine Display größe und gut is.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.