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 ;-)
Gast
#4525906
Verstehe Flash als ROM und nicht als RAM.
Gast
#4525960
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.
Gast
#4525983
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.