Forum: Mikrocontroller und Digitale Elektronik T6963C an Mega16 - Einige Pixel verirren sich ^^


von Andreas Galauner (Gast)


Lesenswert?

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

von Manos (Gast)


Lesenswert?

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...

von Andreas Galauner (Gast)


Lesenswert?

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?

von Peter (Gast)


Lesenswert?

ja

von Ralf (Gast)


Lesenswert?

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

von Andreas Galauner (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der Source.

Vielen Dank fürs nachschauen!

von Ralf A. (warpnine)


Lesenswert?

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

von Andreas Galauner (Gast)


Lesenswert?

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

von Hauke Radtki (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.