Moin Moin ...
Ich war mal wieder für ein paar Tage abgetaucht.
Zunächst einmal die gute Nachricht.
Mein Rewrite der Fontfunktionen geht ganz gut voran.
Ich hab einen neuen Code zum anzeigen von Bitmaps, der jetzt byteweise statt bitweise durch die Bitmaps iteriert.
Der ist erstens schneller und zweiten in jeden Fall kompatibel mit dem was gängige Konverter ausspucken.
Nur leider läuft er noch nicht auf Avr, sondern nur in meiner schnell zusammengehackten Display Simulation am PC.
Die nächste schlechte Nachricht ist, dass ich im Moment einfach nicht dazu komme da mit so viel Zeitaufwand weiter zu arbeiten, wie nötig wäre.
Und weil meinen bisherige Version aus genau diesem Grund so viele kleine Bugs hat, werde ich versuchen dieses mal etwas gründlicher zu arbeiten.
Was das Problem dem Textmodus angeht, bin ich leider noch nicht wirklich weiter gekommen.
Allerdings äußert sich das Problem bei mir komplett anders.
Anstatt fehlerder Pixel bekomme ich einen dicken schwarzen Balken am rechten Bildrand.
//Edit1: Ich glaub ich habs.
Is zwar aus der Kategorie dirty hack, aber es scheint zu funktionieren.
Und zwar kommt der schwarze Balken daher das der Controller die überzählen Pixel am ende der Zeile nicht ansteuert.
Aber im Graphicmodus kann ich die ausschalten.
Also mit folgendem Code und meiner aktuellen lib geht es bei mir :
Code:
lcd_init(LCD_GRAPHIC); //erstmal alle Pixel aus.
lcd_init(LCD_TEXT); // Texmodus
lcd_write_text("12345678901234567890123456"); ///Tada !
Nur um vor zu beugen :
Mein Display wird so initialisiert :
Code:
if(mode == LCD_TEXT) {
lcd_mode = LCD_TEXT;
lcd_write_command(0x00,0x3C);
lcd_write_command(0x01,0x75);
lcd_write_command(0x02,LCD_TEXT_COLUMNS -1);
lcd_write_command(0x03,0x4F);
lcd_write_command(0x04,0x07);
lcd_write_command(0x08,0x00);
lcd_write_command(0x09,0x00);
lcd_write_command(0x0A,0x00);
lcd_write_command(0x0B,0x00);
}
else {
lcd_mode = LCD_GRAPHIC;
lcd_write_command(0x00,0x32);
lcd_write_command(0x01,0x07);
lcd_write_command(0x02,(LCD_GRAPHIC_WIDTH / 8)-1);
lcd_write_command(0x03,0x4F);
lcd_write_command(0x08,0x00);
lcd_write_command(0x09,0x00);
lcd_write_command(0x0A,0x00);
lcd_write_command(0x0B,0x00);
}
Bitte vorher wirklich checken, ob das auch wirklich so in der lib steht oder ob das wieder eine andere ist. (In meiner stand NIE etwas anderes, das kann ich garantieren.)
Wär schön wenn jemand das mal jemand testen könnte.
Und für alle die auf die neue Version meiner Lib warten :
Sie wird definitiv kommen, nur wann kann ich nicht sagen. (In 1-2 Monate vllt.)
Ich brauche meine Lib nämlich selbst für ein Projekt, aber bevor ich soweit bin, muss ich erst ein paar andere Dinge fertig bekommen.
Put first things first wie is auf Englisch so schön heißt.
Gruß
Sebastian
Lesezeichen