Hallo zusammen,
ich habe mir eine Art PropellerClock programmiert, welche aus 56 LEDs besteht. Pro Umdrehung habe ich eine Auflösung von 512 Zeilen.
Als Microcontroller benutze ich einen ATmega328p.
Die PropellerClock zeigt Grafiken an.
Pro Grafik benötige ich also einen Speicher von 3584bit bzw. 3,5kByte (56*512/8/1024).
Mein Ziel ist es, so 5-6 Grafiken auf dem MC zu haben.
Der interne eeprom ist also zu klein um diese Daten zu beinhalten.
Ich habe die Grafiken nun mit in den Flashspeicher aufgenommen (mit dem Data Befehl). Beispiel:
Code:
Grafik1:
Data &B11111111, &B11111111, &B00110011, ........
Grafik2:
Data &B00000000, &B11111111, &B00110011, ........
Grafik3:
Data....
Grafik4:
Data....
Grafik5:
Data....
.......
Soweit läuft alles sehr gut.
Aber ich würde nun gern die Bilddaten auch im fertig programmierten MC per UART abändern können.
Ich weiß, dass das ändern des Flash nicht über den normalen Programmablauf machbar ist.
Also wäre eine Idee ein angepasster Bootloader, der nur die bestimmten Datenbereiche der Grafiken abändert.
Ist das überhaupt möglich? Lohnt es sich weiter in diese Richtung zu überlegen?
Gibt es vielleicht andere, einfacherer Möglichkeiten?
Probleme die ich sehe:
- Die Grafikdaten müssten an bestimmten Adressen im MC liegen, damit ich im Bootloader die Möglichkeit habe, nur diese bestimmten Adressen zu überschreiben. (Kann man die Adressbereiche für den Data Befehl eigentlich vorgeben?)
- Meine Bilderdateien bestehen aus 3584 Einsen und Nullen. Kann ich diese Info eigentlich einfach so benutzen, oder müssen die Daten vorher kompiliert werden? Ich habe mir meine momentane Kompilierte Hex Programdatei noch nicht angesehen, würde ich in der Hex Datei irgendwo die 3584 Bit der einzelnen Grafiken unverändert wiederfinden? Oder ändert der Bascom Compiler die Bits beim kompilieren des Programms um?
Danke und Gruß,
Marco
Lesezeichen