mikrocontroller.net

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


Autor: Andreas Galauner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manos (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Andreas Galauner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Galauner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist der Source.

Vielen Dank fürs nachschauen!

Autor: Ralf Altmann (warpnine)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Galauner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.