Hi Frage: möchte in einem Projekt (geschrieben in C für atmega8 auf codevision avr c compiler) werte, die ich per taster verstellen kann, zurückschreiben in den Flash, damit ich sie nach ein- und ausschalten wieder zur verfügung habe; d.h. Wert sw_tmax=30 (vordefiniert im programm, ich glaub als unsigned int) verstelle ich im programm per taster auf 25; danach schalte ich spg ab; nach dem einschalten möchte ich wieder die 25 haben, und nicht die vordefinierten 30! ist das überhaupt möglich, und wenn ja, wie in etwa???
Nimm lieber das EEPROM dafür. FLASH würde vermutlich auch gehen, dürfte aber anstrengender werden.
ach ja... ...geht das mit diesen speicherbefehlen, welche auch im tutorial beschrieben werden????
>...geht das mit diesen speicherbefehlen, welche auch im tutorial >beschrieben werden???? Im Tutorium sind die Befehle für den WinAVR beschrieben - wie die beim CAVR heissen, sollte sich durch dessen Doku feststellen lassen. Sonst ist der Ablauf auch im Datenblatt beschrieben.
Flash schreiben geht grundsätzlich nur aus der Boot-Section des Flash. Wenn etwas gespeichert werden soll, muss eine Boot-Section definiert werden und alle Funktionen, die ins Flash schreiben sollen, müssen in dieser Section liegen. Für Werte, die nach Abschaltung erhalten bleiben sollen, die aber auch verändert werden sollen, ist das EEPROM eigentlich die einzig vernünftige Lösung, vorausgesetzt, die Größe reicht aus.
ich arbeite gerade an einem projekt, für das das SRAM des mega128 niht ausreicht - ist es möglich daten zur laufzeit ähnlich wie normale variablen im flash zu speichern?
prinzipiell ja, praktisch kaum. Nimm den EEPROM, achte aber drauf, dass das keine Variablen sind, die häufig geschrieben/gelesen werden. In erster Linie würde ich aber mal in Richtung Programmoptimierung nachdenken, da lässt sich meist viel machen.
leider ist das nicht möglich, wie gesagt der programmspeicher reicht völlig aus, nur der datenspeicher ist zu klein. Ich muss zur Laufzeit ca 16kb messdaten speichern - der mega128 hat leider nur 8k sram. hat vlt schon mal jemand sowas in codevision avr gemacht?
>> Ich muss zur Laufzeit ca 16kb messdaten speichern...
Wenn das mit den 16kB Meßdaten vorher bereits klar war,
dann hast du schlichtweg für Dein Projekt den falschen Controller
ausgesucht, oder?
Bleibt in diesem Falle nur noch ein ext. SRAM an den Bus zu hängen,
falls die Hardware noch nicht in Stein gemeißelt ist.
Wie oft schreibst du denn deine Daten? Es geht ziemlich schnell, dass dann der Flash hinüber ist... Bastel dir ein FRAM an den MC (FM25256 als SPI-Variante oder FM24C256 I2C), macht 32kB rel. schnellen Speicher, der nicht ermüdet. Ansonsten: schlechte Planung - das war doch vorher absehbar? Prozessorwechsel auf einen mit Interface für ext. RAM?
der mega128 hat ja ein interface für ext. ram - ich wollte nur den platz dafür sparen - aber naja - ich kenne leider keien avr 8 bit risc, der mehr als 8kb ram hat.
Wenn der Zugriff auf die Daten nicht allzu fix vonstatten gehen muss,könnte man ja auch ein serielles Flash dranhängen.Ein paar Pins für den SPI (falls die der Hardware schon verstrickt wurden) sollten doch immer noch frei sein...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.