Hi ich benutze gerade ATMEL studio und ein SAM D10 ARM Cortex. Hier mit habe ich meine Variable ins flash gelegt. uint32_t __attribute__((section(".eeprom"))) on_Counter_eeprom = 0; wie schreibe ich jetzt auf meine variable? Danke ;-)
Hacker R. schrieb: > wie schreibe ich jetzt auf meine variable? Da musst du dich wohl mal mit dem Datenblatt des SAM D10 beschäftigen, genauer: Mit dem Non-Volatile Memory Controller (NVMCTRL) S.349 ff Datenblatt: http://www.atmel.com/images/atmel-42242-sam-d10_datasheet.pdf Der NVMCTRL ermöglicht eine EEPROM-Emulation, allerdings muss man dazu den Controller entsprechend bedienen und man kann (anders als bei echtem EEPROM) nicht einfach Datenworte überschreiben, sondern muss eine Row (= 4 Pages) löschen, bevor man sie neu beschreiben kann. Wenn also mehrere Variablen dort liegen, müssen die Daten zuvor eingelesen, verändert und wieder geschrieben werden.
Einschaltvorgänge zu zählen geht villeicht gerade noch mit der EEPROM-Emulation. Wenn du öfter schreiben willst, würde ich ernsthaft über ein externes EEPROM bzw. besser gleich ein FRAM nachdenken. Die lassen sich über I2C-Bus oder per SPI anschließen und Wortweise umprogrammieren. Das FRAM hat ggü. EEPROM noch den Vorteil, daß es keine Schreibzyklen-Begrenzung hat, und daß man keinen BUSY-Handshake beim Schreiben benötigt, da das Teil so schnell geschrieben, wie gelesen werden kann. Geeignet für den SAM wären 3V-Typen wie z.B. von Cypress FM24CL64 (I2C) oder FM25CL64 (SPI)
Hi
Danke für die Antworten.
>> Mit dem Non-Volatile Memory Controller beschäftigen:Also wenn ich variablen
habe dessen Werte bei Stromausfall bestehen sollen, habe ich keine andere
möglichkeit als diesen Weg richtig? Abgesehen von hardware Erweiterung mit
externer FRAM/EEPROM.
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.