mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pollin GLCD 160x80 LC7981/HD61830: Startaddresse


Autor: Meino Cramer (mcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin

...der Treiber für das im Betreff angegebene GLCD auf dem Linux/CentiPad
läuft soweit erstmal.
Es gibt allerdings eine Sache, an der ich mir die Zähne ausbeiße:

Laut Datenblatt hat das GLCD 2K VRam. Bei 160x80 Dots sind das 40 Byte 
"zuviel".

Mir will es einfach nicht gelingen, den Nullpuinkt der Grafikausgabe zu 
setzen.
Mehrfach hintereinnander eingespielte Grafiken, die immer mit dem 
gleichen
Set_Display_StartAddress beginnen, landen im Display an den 
verschiedensten Orten.

Da Text noch weniger Platz im VRam verbraucht, habe ich bisher den 
Textmode
nicht für eigene Texte benutzen können, kann Text aber sichtbar machen, 
wenn
ich einfach das VRam von vorne bis hinten mit ASCII-Zeichen "zukloppe".

Kennt hier jemand die Magie die hinter dem richtigen Setzen der Display 
StartAddresse und der Cursorpositionen liegt???

Ich sage schonmal herzlichen Dank im Voraus!
Schönes Wochenende!
Gruß
mcc

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timingprobleme? Fragst du das Busy vor jedem Befehl ab?

Autor: Meino Cramer (mcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Benedict,

laut datasheet muss lediglich vor jedem Instruction nicht jedoch vor
dem Schreiben der Daten das Busy abgefragt werden. Das mache ich mit
einer loop, das Busy pollt und nach jedem Check ein udelay(1)
einlegt.
Nach Verlassen der Loop wird Busy nocheinmal gefragt und wenn
frei: Gib's ihm...
Alles funzt, nur das Bild "wandert" bleibt aber heile.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte jetzt nicht nur bei dem Busy sondern auch generell das 
Timing: Hält der ARM das ein?

Autor: Meino Cramer (mcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ich keinen Osci besitze, kann ich Deine Frage nur nebulös 
beantworten:
Alle Befehle außer die Sache mit dem Screen Offset funktionieren.
Der CentiPad hat sonst zur Zeit nichts zu tun, es kommen also keine
großartigen Kernel-Lasten zustande.
Und wenn es tatsächlich am Timingleigen sollte, weiß ich nicht, wie ich
das ohne ein Osci in den Griff bekommen soll...

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt des Prozessors müsste das Timing stehen. Vermutlich kann 
man das Timing auch in weiten Bereichen verstellen.

Autor: Meino Cramer (mcc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Benedict,

hab' den Fehler:
Das Problem lag darin, dass ich annahm, dass die Display-Startadresse
die Adresse ist, an die ein nachfolgender Write-Vram-Befehl seine Daten
schreibt. Dem ist nicht so.
Die Display-Startadresse ist die Adresse, die als linke obere Koordinate
des Bildschirms angenommen wird.
Der Schreibbefehl ins VRam beginnt mit der Adresse die über den Befehl
"Set-Cursor Address register" vorher gesetzt wurde.
Da diese Adresse beim Schreiben ins VRam mit jedem Byte ein 
Autoinkrement
erfährt, landete meine Grafik -- und erst mein Text -- an immer wieder 
neuen Stellen...

Gruß
mcc

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.