Daten in Programmspeicher speichern

#1561562
Lesenswert?

Hallo!

Ich programmiere zurzeit ein Programm für den Atmega32.
Ich benötige für das Programm eine Tabelle, besser gesagt ein Feld des 
folgenden structs:
1
struct daten{
2
  unsigned char speed;
3
  unsigned int time;
4
};

Das Feld soll nun 600 Feldelemente beinhalten, d.h. ich benötige dafür 
1800Byte. Da ich aber mehrere solche Felder benötige ist natürlich der 
Flash-Speicher gleich voll. Deswegen habe ich vor meine Felder mit dem 
Befehl "PROGMEM" im Programmspeicher zu speichern.
Das funktioniert bereits einwandfrei, nur muss ich das Feld vorher 
initialisiern und es ist mir nicht möglich die Werte im Programm 
nochmals zu lesen.
Gibt is irgendeine Möglichkeit das Problem so zu lösen, dass ich in 
meinem Programm die Werte des Feldes ändern kann?
Möchte das ganze aber ohne zusätzliche Hardware machen!

Danke für eure Antworten!

lg tommy
#1561622
Lesenswert?

Du mußt Dir eine Hilfsfunktion im Bootbereich schreiben, die eine Page 
löschen und programmieren kann.

Du kannst aber auch meinen Bootloader benutzen, der enthält eine solche 
Funktion, angepaßt an den AVR-GCC.
Das apicall.c fügst Du Deinem Programm hinzu.
Dann brauchst Du nur eine Page im SRAM mit den neuen Daten zu füllen und 
dann die Funktion copy_flash() aufzurufen.


Peter
Gast #2173986
Lesenswert?

Hallo Leute,

ich arbeite an einem Projekt das 512 Leds ansteuert. Die anzuzeigenden 
"Bilder" werden per USB an eine Steuerplatine übergeben die sie dann 
anzeigt.

http://www.mike-gareiss.de/New/Projekte/shinyPlayer/shinyPlayer.html
http://klautesblog.blogspot.com/search/label/LED%20Matrix

Meine Aufgabe bestand die Daten vom Rechner bis zum USB-Port zu bringen. 
Die Platine zum ansteuern der LEDs sowie die Firmware wurde von Klaute 
entworfen und zusammengelöten. Leider ist Klaute zur Zeit mit seinem 
Studium voll ausgelastet so dass ich mich um die Weiterentwicklung 
kümmere. Als blutiger Anfänger mit Programmierkenntnissen in C/C++ 
beisse ich mich da durch.

Vor ein paar Tagen habe ich mir den Bootloader von Peter Dannegger 
(fastboot_build24) runtergeladen und konnte die datei apicall.c nicht 
finden. Wo hat die sich denn versteckt?

CU Mike

PS: Ich arbeite auf einem Linuxsystem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren