Datum:
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:
struct daten{ unsigned char speed; unsigned int time; }; |
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
Datum:
Sorry, meine natürlich es ist mir nicht möglich die Werte während des Programms nochmals zu ändern!!! =)
Datum:
> 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. Und worin besteht jetzt der Unterschied zwischen "Programmspeicher" und "Flash-Speicher"?
Datum:
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
Datum:
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/shinyPlaye... 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.