Grüße,
ich habe eine 144x36 LED Matrix die ich via Multiplexing ansprechen muss. Das Multiplexing habe ich soweit gelöst. Ich habe jetzt einen 648 Byte großen Framebuffer den ich via timer interrupt aufs display multiplexe, das klappt problemlos, schnell und ohne flackern. Der RAM reicht theoretisch auch für einen double framebuffer, aber das ist eher Nebensache.
Wichtig ist mir jetzt, ich will diesen Framebuffer per u8glib (oder guter alternative? nehm gerne Vorschläge entgegen) mit Inhalt füllen.
Soweit ich das verstehe kann die u8glib intern nicht mit einem kompletten Framebuffer arbeiten, sondern rendert immer nur einen kleineren Bildausschnitt und führt dann eine Geräteabhängige Funktion aus die diesen Bildausschnitt in den Display-Framebuffer schreibt um Ram zu sparen.
Wie bekomme ich nun die u8glib möglichst effizient dazu, meinen kompletten Framebuffer mit Inhalt zu füllen? (Effizient heisst vermutlich mit wenigst möglich Picture-Loops?)
Vermutlich werde ich ein eigenes "device" für die Bibliothek schreiben müssen... Ich habe mir das Flipdisc-Beispiel angesehen, aber so wirklich gut dokumentiert ist da ja leider nichts. Hat da jemand eine bessere Doku?
Prinzipiell sehe ich zwei Möglichkeiten:
- die u8glib macht intern ihr Ding mit kleinen Bildausschnitten und die Funktion die sonst auf das Gerät schreiben würde, schreibt dann eben in meinen Framebuffer
- ich schaffe es dass die u8glib das Display nur in einen Bildausschnitt teilt und greife dann irgendwie auf den internen Buffer der Bibliothek zu um ihn auszulesen, statt ihn unnötig in meinen eigenen Framebuffer zu kopieren
Hat jemand schonmal so ein Framebuffer-Device geschrieben? Oder hat jemand eine Ahnung wie man das macht? So schwer kann es ja nicht sein (wenn man die u8glib intern etwas kennt ;)). Leider weiss ich garnicht wo ich ansetzen soll...
Mein interner Framebuffer ist übrigens horizontal angelegt (siehe Anhang). Ich kann das Display MSB first oder LSB first befüttern, das soll also erstmal egal sein.
Bin für Hinweise dankbar ![]()
