Hallo zusammen,
ich möchte eine bestimmte Variable im Falle eines Spannungsverlustes im
Flash Speicher ablegen und Sie beim nächstern power on wieder auslesen,
als Sicherung sozusagen.
Zunächst habe ich versucht überhaupt mal irgendeinen Wert zur Laufzeit
im Flash abzulegen. Beim ersten Mal schreiben wird der Wert der Variable
(Wert = 60) noch richtig abgespeichert. Beim nächsten Programmdurchlauf
nur noch Blödsinn, Wert = 16, Wert = 0. Danach wird nur noch 0
geschrieben.
Jemand eine Idee was hier schief läuft?
1 | void write_memory (unsigned int value)
|
2 | {
|
3 | unsigned int *Flash_ptr; // Flash pointer
|
4 |
|
5 | Flash_ptr = (unsigned int *) 0xFF00;
|
6 | FCTL2 = FWKEY + FSSEL0 + FN1;
|
7 | FCTL3 = FWKEY; // Clear Lock bit
|
8 | *Flash_ptr = 0;
|
9 | FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
|
10 |
|
11 | *Flash_ptr = value; // Write value to flash
|
12 |
|
13 | FCTL1 = FWKEY; // Clear WRT bit
|
14 | FCTL3 = FWKEY + LOCK; // Set LOCK bit
|
15 | }
|
Viele Grüße