amuttsch / multiqlock

Automatically exported from code.google.com/p/multiqlock
0 stars 0 forks source link

Bilder in PROGMEM speichern #15

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Um Speicher zu sparen macht es Sinn große Daten im PROGRAM MEMORY abzulegen. 
http://arduino.cc/en/Reference/PROGMEM und 
http://www.arduino.cc/playground/Learning/Memory

Als erste Stufe habe ich mal die hiLo Bilder und die sekundenzahlen dort hin 
verfrachtet. 

Es ist darauf zu achten dass diese nur einmal gespeichert werden. (also in 
einem .cpp File) und im dazupassenden .h File als extern definiert werden. 
IM PROGMEM können keinen zweidimensionalen Arrays gespeichert werden (siehe 
Link oben). Ich finde den Weg mit zusätzlichen Variablen jedoch unnötig, da 
wir eigentlich immer wissen wie groß ein Bild ist. Daher werden die Bilder im 
Progmem einfach eines nach dem anderen gespeichert. Beim Abruf muss man dann 
die vorhergehenden Bilder ggf. überspringen. (siehe Plugin_Seconds)

Darüber hinaus habe ich DisplayMatrix um eine Funktion erweitert die gleich 
die ganze Matrix leert und ein komplettes Bild aus dem PROGMEM auf die Matrix 
speichert. 

Änderungen (zu v2.3.3): 
[ ]outputObjects.h        // Bilder entfernen und nur die Deklaration speichern
[+]outputObjects.cpp      // include <avr/pgmspace.h> und Bilder speichern
[ ]plugin_Seconds.cpp     // Zahlen aus PROGMEM holen 
[ ]plugin_Temperature.cpp // Zahlen aus PROGMEM holen 

[ ]plugin_SetLDR.cpp      // Bilder hi/lo aus PROGMEM holen (über printPic)
[ ]DisplayMatrix.cpp      // printPic(prog_uint16_t* address_short_start)
[ ]DisplayMatrix.h        // printPic public deklarieren 

Original issue reported on code.google.com by goebernd...@gmail.com on 22 Jan 2012 at 9:44

Attachments:

GoogleCodeExporter commented 9 years ago
Aufbauend darauf soll dann printChar(string, pos[0,1]) => plugin_Seconds & 
plugin_Temperature
und marqueeString() für plugin_Text() folgen...

Original comment by goebernd...@gmail.com on 22 Jan 2012 at 9:47

GoogleCodeExporter commented 9 years ago
Guter Ansatz. Es würde mich auch mal interessieren, wie viel RAM die 
multiqlock verbraucht.

Mich interessieren ein paar Dinge zu dem PROGMEM. Da die Daten im Flash 
gespeichert werden, wird dadurch der Sketch größer? Spontan würde ich nein 
sagen, weil ja nur der Zugriff über den Flash und nicht das SRAM läuft?
Wie verhält sich dies mit der gesamten Performance? Ich schätze einfach mal, 
dass es bei der Sekunden- und Temperaturanzeige keinen großen Unterschied 
macht.

Ansonsten guter Fund! Ich werde mich morgen genauer in die PROGMEM Thematik 
einlesen, habe es jetzt nur kurz überflogen. Dort könnte man dann ja auch die 
Texte für die seriellen Ausgaben sichern. Vielleicht klappt es dann mit den 
großen Ausgaben im SerialHandler ;)

Des Weiteren werde ich mir die Tage deine Modifikationen ansehen und in die 
multiqlock einbinden.

Vielen Dank für deine Mühen, die multiqlock wird immer besser :)

Original comment by asfa...@googlemail.com on 22 Jan 2012 at 10:17