www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variable ins FLASH schreiben beim AT91


Autor: Wolfgang U. (wolle68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wer hat einen kurzen Tip wie ich eine Variable beim AT91SAM7 ins Flash 
netzausfallsicher schreiben kann. Lesen und ablegen im Code über __at 
(adresse) geht, aber schreiben muss man ja anders. Leider habe ich hier 
nicht gefunden wie das geht und im einzig guten Beitrag den ich gesehen 
habe http://www.mikrocontroller.net/articles/AVR-GCC-Tu... 
wird eine eeprom.h benutzt, die aber beim Keil nicht dabei ist.

 Wäre toll wenn jemand eine Antwort weiß!

Autor: Matthias Kölling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daten werden in der Regel im EEPROM abgelegt und nicht im Flash. Das hat 
verschiedene Gründe:
1. Die Schreib-Lese-Zyklen sind beim EEPROM in der Regel um den Faktor 
10 höher.
2. Der EEPROM läßt sich byte-(word-)weise beschreiben, der Flash ist in 
Pages angeordnet.
Also erstmal im Datenblatt nachsehen, ob der Controller internes EEPROM 
hat oder externes verwenden.
Man kann natürlich auch eine EEPROM-Simulation inm Flash machen. Dazu 
muß man mindestens eine Page freihalten. Man braucht genau so viel RAM, 
um bei Änderungen erst den RAM-Spiegel upzudaten und dann die komplette 
Page wieder zu flashen.

Gruß Matthias

Autor: Wolfgang U. (wolle68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der µC hat kein EEPROM und ich muss auch nicht ständig Werte speichern. 
Es geht um einige Parameter, die in den ersten Tagen des Gerätes 
verändert werden und dann nahezu bis zum Defekt gleich bleiben ;). 
Lediglich ein Wert könnte ggf. bei jedem Netz aus gesichert werden, aber 
das ist nur 1-2 x am Tag und das Flash hat 100000 Zyklen - sollte gehen.

Mit dem Hinweis kann ich schon mal weitersuchen. Dennoch ist es ggf. 
einfacher ein externes EEPROM zu nehmen. Hat da jemand schon mal was mit 
einem seriellen Typ gemacht. Ich möchte nicht zu viele I/Os opfern. Am 
Atmel soll ja auch eine SD oder MMC gehen. Wäre ja eigentlich das 
Optimale, denn dann könnte man die Parameter sogar extern ändern.

Wäre schön noch weitere Hinweise zu bekommen!

Autor: gerhard (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@wolfgang:
für deine zwecke ist das flash durchaus geeignet da du nur eine 
begrenzte anzahl von schreibzyklen vor hast.

das schreiben in das flash erfolgt durch entsprechende routinen.
im anhang ein beispielprogramm von atmel (für iar, sollte aber ohne 
probleme mit anderen compilern nutzbar sein).

wichtig ist nur, daß deine schreib-funktion im ram (such mal nach 
_ramfunc) liegt da das flash nicht schreibfähig ist wenn gerade daraus 
gelesen wird.

gruss
gerhard

Autor: Wolfgang U. (wolle68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@gerhard: Danke für deine Hilfe. Ich probiere das gleich mal aus. 
_ramfunc kenne ich bereits, da ich auch die Interruptroutinen ins RAM 
gelegt habe damit es schneller geht. So langsam wird einem das Teil ein 
wenig vertrauter, aber aller Anfang ist schwer ;).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.