Arduino u8g2 Framebuffer vs. Singlebuffer

Die Arduino-Bibliothek u8g2 ist sehr mächtig durch die Unterstützung diverser Displaytreiber. Allerdings ist es wichtig den Unterschied zwischen Framebuffer und Singlebuffer zu kennen, insbesondere wenn man mit weniger perfomanten Boards arbeitet.

Grundlegendes

Der Framebuffer-Mode besitzt einen andere Initialisierung verglichen zum Singlebuffer.

Beispiel :


U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);    // Initialisiert als Singlebuffer
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);    // Initialisiert als Framebuffer

Während der Singlebuffer zwar langsamer ist, benötigt er deutlich weniger RAM. Beim Framebuffer ist es umgekehrt. Geschwindigkeit wird gegen benötigten RAM ausgetauscht.

Framebuffer

Schnell aber ressourcenraubend zeichnet man folgendermassen ein vorher definiertes Bild als XBM :


u8g2.clearBuffer();
u8g2.drawXBMP( licht_x, licht_y, licht_w, licht_h,kein_licht_bits);
u8g2.drawXBMP( ccm_x, ccm_y, ccm_w, ccm_h,oil_ccm_bits);
u8g2.sendBuffer();

 

Singlebuffer

Langsamer aber ressourcenschonend zeichnet man folgendermassen ein vorher definiertes Bild als XBM :


u8g2.firstPage();
do{
  u8g2.drawXBMP( licht_x, licht_y, licht_w, licht_h,abblend_licht_bits);
  u8g2.drawXBMP( ccm_x, ccm_y, ccm_w, ccm_h, preglow_ccm_bits);
} while ( u8g2.nextPage() );

Zusammenfassung

Durch den Einsatz des Singlebuffer kann ein nicht unerhebllicher Anteil an Arbeitsspeicher / RAM eingespart werden im Vergleich zum Framebuffer.
Im Praxisfall läuft es darauf hinaus, dass ein Arduino Micro mit einem Programm auf Basis Framebuffer erfahrungsgemäß komplett hängen bleiben kann, während das identische Programm auf Basis Singlebuffer ohne jegliche Probleme abläuft.
Einen Arduino Due hingegen stellt der Framebuffer vor keine wahrnehmbare Herausforderung.

Daher muss der verwendete Typ Arduino etc. vor der Programmierung der Anzeigeroutinen genauer betrachtet werden.

....

Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.