Forum: Mikrocontroller und Digitale Elektronik AVR: Speichern im Flash


von the_devil (Gast)


Lesenswert?

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???

von Rahul, der Trollige (Gast)


Lesenswert?

Nimm lieber das EEPROM dafür.
FLASH würde vermutlich auch gehen, dürfte aber anstrengender werden.

von the_devil (Gast)


Lesenswert?

ach ja...

...geht das mit diesen speicherbefehlen, welche auch im tutorial 
beschrieben werden????

von Rahul, der Trollige (Gast)


Lesenswert?

>...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.

von johnny.m (Gast)


Lesenswert?

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.

von mbuchmann (Gast)


Lesenswert?

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?

von crazy horse (Gast)


Lesenswert?

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.

von mbuchmann (Gast)


Lesenswert?

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?

von ARM-Fan (Gast)


Lesenswert?

>> 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.

von crazy horse (Gast)


Lesenswert?

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?

von mbuchmann (Gast)


Lesenswert?

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.

von Ronny (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.