MSP430 FLASH beschreiben Problem

Gast #3927857
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
Gast
Super, danke!

Jetzt funktioniert es. Das Beispiel von TI ist da sehr hilfreich:
1
void write_SegC (char value)
2
{
3
  char *Flash_ptr;                          // Flash pointer
4
  unsigned int i;
5

6
  Flash_ptr = (char *) 0x1040;              // Initialize Flash pointer
7
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
8
  FCTL3 = FWKEY;                            // Clear Lock bit
9
  *Flash_ptr = 0;                           // Dummy write to erase Flash segment
10

11
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
12

13
  for (i=0; i<64; i++)
14
  {
15
    *Flash_ptr++ = value;                   // Write value to flash
16
  }
17

18
  FCTL1 = FWKEY;                            // Clear WRT bit
19
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
20
}

Beste Grüße

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.