Hi Georg, erstmal
und
Meine Überlegung ist, ob es nicht generell besser und schneller ist, die Ausgabe im Speicher zu zeichnen und dann auf's Display zu flutschen, so wie es in Programmen mit Grafikausgabe üblich ist (Double Buffering). Habe mir also Deinen Code mal genauer angesehen und bin dabei in set_pixel() womöglich über eine verdrehte Abfrage gestolpert.
/* set_pixel setzt 1 Pixel im Array nds3_bits */
void set_pixel(uint8_t x, uint8_t y) {
uint8_t bit,posx;
uint16_t i;
if (posx > 127) posx = 127; // Warum dies IF ..
posx = x/8; // ..wenn posx hier neu gesetzt wird?
bit = x%8;
if (y > 63) y = 63;
i = posx + (y *16);
nds3_bits[i] |= (1<<bit);
}
Hast Du schon mal getestet, wie lange die Bufferausgabe dauert?
Dann das Thema Display in Fahrtrichtung lesbar - wenn ich das wollte, würde ich das gesamte Display drehen, das Flachband ist doch lang genug..