Heinz schrieb:
> Habe mir die Sachen von Jan angesehen. Leider sehe ich die Sache etwas
> anders. Seine Sachen sind so umfangreich das
"daß".
So. Und nun mal ganz ernsthaft:
Um einigermaßen Ordnung in eine Firmware zu kriegen, mußr du selbige
sinnvoll aufteilen. Dann wird das Ganze auch übersichtlicher.
Also in deinem Falle:
Unterste Schicht: der Lowlevel-Hardwaretreiber für dein Display. Der
beinhaltet die alleruntersten Funktionen, also bei I2C-Displays ist das
ein Treiber für den I2C mit StartCond, StopCond, Adressieren, Bytes
schreiben und lesen. Bei Parallelanschluß wäre das dann Setzen von A0
(bze.C/D) und Port schreiben und lesen. Dieser Treiber ist
selbstverständlich plattformspezifisch, hat aber ein Interface nach oben
(die .h), was bereits plattformunabhängig ist.
Zweitunterste Schicht: der eigentliche Displaytreiber. Der stützt sich
auf den o.g. Treier der untersten schicht und er beinhaltet das
Initialisieren, Kontrast einstellen, ggf. Spiegeln usw. und den
Blocktransfer von einem µC-internen Displayram ins eigentliche Display.
Wenn du einen zu kleinen µC hast, der zu wenig RAM hat, dann mußt du in
diesen Treiber auch das Setzen von Einzel-Pixeln aufnehmen. Dieser
Treiber ist also plattformunabhängig und er bietet nach oben hin auch
ein displayunabhängiges Interface. Das Einzige, was bleibt, ist das
Bekanntgebe der Pixelanzahl in X und Y und die Anzahl der Farben (hier
wohl 4: schwarz, 2x grau, weiß)
Dritte Schicht: das ist das GDI, also die Funktionen zum Zeichnen von
Punkten, Linien, Flächen usw. und Text.
Vierte Schicht: Das sind Fonts und Grafiken in einer Form, die vom GDI
verstanden wird.
Mal ein paar Lese-Hinweise:
https://www.mikrocontroller.net/attachment/316790/STM32F103C8T6.ZIP
https://www.mikrocontroller.net/attachment/305446/Bastelquellen.zip
W.S.