AVR: Speichern im Flash

Gast #487082
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???
Gast #487091
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.
Gast #487103
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.
Gast #490265
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.
Gast #490775
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?
Gast #490782
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.
Gast #490787
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?
Gast #491136
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...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.