Forum: Mikrocontroller und Digitale Elektronik DOGXL an STM32


von Thomas B. (escamoteur)


Lesenswert?

Hi,

nachdem mein DOGXL endlich läuft, bin ich mir nicht sicher wie ich mit
den Font-Daten umgehen soll.

Der Font Editor von Hagen ist ja absoult super und auch das DOGXL legt
seine Daten spaltenweise ab, ABER: Der Controller des Displays erwartet
2 Bits pro Pixel, d.h. ein Byte entspricht immer nur 4 Vertialen Pixeln.
Das DOGXL ist aber ein reines Monochrom Display.

Klar kann ich die Fontdaten jetzt entprechend aufblasen und und jedes
zweite Bit auf 0 setzen, aber mich würde interessieren, ob es auf einem
STM32 eventuell eine elegante Möglichkeit gibt, dass sozusagen on the
Fly beim verwenden der Fontdaten erst zu machen.

Gruß
Tom

von Hannes S. (Gast)


Lesenswert?

Also "aufblasen" der Daten ist halt Speicherverschwendung - bei 
2bit/Pixel mag das noch gehen, aber angenommen Du wechselst später mal 
auf 16bit/Pixel, dann sollte man das tunlichst bleiben lassen.
Hier hilft also alles nix, Du wirst eine kleine Funktion schreiben 
müssen, welche die Fontmatrix "scannt" und dann das Ergebnis erstmal im 
RAM zusammensetzt und schließlich ans Display überträgt. Idealerweise 
ist das reiner hardware-unabhängiger C-Code und möglicherweise findet 
sich da schon was existierendes im Web für Dein Display, wenn auch für 
einen anderen Controller.
Gruß,
Hannes

von Thomas B. (escamoteur)


Lesenswert?

16 Bit ist für diese Anwendung sehr unwahrscheinlich :-)

Nach einiger Diskussion mit einem Freund werden ich wohl den Font als 1 
bit abspeichern und dann eine 32Byte große Lookup Tabelle machen, sollte 
wohl der beste Kompromiss zwischen Speicherbedarf und Performance sein.

Gruß
Tom

von Hannes S. (Gast)


Lesenswert?

Wegen der Performance: Die Umrechnerei fällt im Vergleich zur relativ 
langsamen I2C/SPI übertragung kaum ins Gewicht. Aber wenn man sie mit 
einer Lookup Table schneller gestalten kann, dann schadet das natürlich 
auch nicht.

von Marc P. (chiefstyle)


Angehängte Dateien:

Lesenswert?

Hi Tom,

angehängt mal die Terminal Schrift in der Größe 7x5 für das DOGXL 
Display als Array und zwei Funktionen GLCD_WriteString() und GLCD_Write.

Mit der GLCD_WriteString() übergibst du den String und die Position, 
also

GLCD_WriteString(10, 10, "String");

Aus dieser heraus wird die GLCD_Write() aufgerufen, die das angegebene 
Schrift Array von 8 Pixel/Byte auf 4 Pixel/Byte umrechnet.

Diese Art der Umrechnung verwende ich auch bei meinen Bildern (muss nur 
ein wenig angepasst werden), so haben meine Bilder 2080 Byte anstatt der 
4160 Bytes (160x104x2 Pixel).

Ach übrigens das Display kann doch die 2bit greyscale anzeigen. Leider 
hab ich noch kein Programm gefunden, dass mir das Bild mit 2bit 
greyscale  Informationen angibt.

VG Marc

von Thomas B. (escamoteur)


Lesenswert?

Dank Dir!

Habs grad probiert, Paintshop Pro kann die umwandlung in 4 Farben.

Weiß aber nicht, ob das wirklich Sinn macht auf einem solchen Display, 
zumindest für Textausgabe etc.

Gruß
Tom

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.