Forum: Mikrocontroller und Digitale Elektronik msp430 Flash Löschen und beschreiben


von Bergie B. (bergie)


Lesenswert?

Hi!

Ich benutzte den MSP430f248 und arbeite mit der IAR Software.

Ich möchte den Falsh löschen und neu beschreiben. Wobei das löschen 
ersteinmal neben sächlich ist da zZ überall 0xFF steht.

Der Info bereich ist leider zu klein, aus diesem Grunde habe ich mich 
endscheiden am ende des Code bereiches, meine Daten zu schreiben.

Leider werden die Daten welche ich in eADC_ConfigDaten nicht erfolgreich 
geschrieben.

Wo ist mein Fehler?
1
void Flash_writedown_ADC( void ) 
2
  {
3
  USIGN16 *Flash_Segment;
4
  Flash_Segment = (USIGN16*)0xF000;   /* Flash Segment start address */
5
  USIGN8 i_wort = 0;
6
  USIGN8 i_ADC  = 0;
7
      
8
  STOP_WATCHDOG;// Hold Watchdog, it will be switched on by the next SERVE_WATCHDOG.
9
    
10
  FCTL2 = FWKEY | FSSEL_1 | FN0;             /* select MCLK for flash timing */
11
  
12
  FCTL1 = FWKEY + ERASE;          // Set Erase bit
13
  FCTL3 = FWKEY;                  // Clear Lock bit
14
   
15
  *Flash_Segment = 0;              //Dummy write to erase Flash segment 
16
    
17
  while (! (FCTL3 & WAIT) );  // Wait while not ready
18
19
  FCTL1 = FWKEY + BLKWRT + WRT; // Enable block-write operation
20
21
  
22
    for (USIGN16 i=0; i < 256; i++) 
23
    {
24
    Flash_Segment[i] = eADC_ConfigDaten[i_ADC]._Word[i_wort] ;  
25
    if(++i_wort>=32)
26
      {
27
       i_ADC++;
28
       i_wort=0;
29
      }
30
    }
31
     SERVE_WATCHDOG;
32
  _NOP();
33
  RESET_CPU; //RESET!
34
  
35
  }

von Stefan (Gast)


Lesenswert?

Führ' Dir nochmal das entsprechende Kapitel im User-Guide zu Gemüte!
Block-Write kann nicht aus dem Flash heraus ausgeführt werden, der Code 
dazu muss im RAM laufen! Wobei ich bezweifle, dass Du unbedingt 
Block-Write brauchst?!

von Christian R. (supachris)


Lesenswert?

Außerdem solltest du durch ein angepasstes Linker-Script sicherstellen, 
dass der Linker auch wirklich keinen Code in deinem Flash-Segment 
ablegt.

von Bergie B. (bergie)


Lesenswert?

Hi!

Habe mein Problem gelöst.

Ich hatte den flaschen Clock gewählt.

Danach hatte ich das Problem das die werte die ich geschrieben habe 
nicht gespeichert wurden. Ich habe bei jedem Auslesen Hausnummer 
bekommen.

Nun geht es.

LG

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
Noch kein Account? Hier anmelden.