www.mikrocontroller.net

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


Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht 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?
void Flash_writedown_ADC( void ) 
  {
  USIGN16 *Flash_Segment;
  Flash_Segment = (USIGN16*)0xF000;   /* Flash Segment start address */
  USIGN8 i_wort = 0;
  USIGN8 i_ADC  = 0;
      
  STOP_WATCHDOG;// Hold Watchdog, it will be switched on by the next SERVE_WATCHDOG.
    
  FCTL2 = FWKEY | FSSEL_1 | FN0;             /* select MCLK for flash timing */
  
  FCTL1 = FWKEY + ERASE;          // Set Erase bit
  FCTL3 = FWKEY;                  // Clear Lock bit
   
  *Flash_Segment = 0;              //Dummy write to erase Flash segment 
    
  while (! (FCTL3 & WAIT) );  // Wait while not ready

  FCTL1 = FWKEY + BLKWRT + WRT; // Enable block-write operation

  
    for (USIGN16 i=0; i < 256; i++) 
    {
    Flash_Segment[i] = eADC_ConfigDaten[i_ADC]._Word[i_wort] ;  
    if(++i_wort>=32)
      {
       i_ADC++;
       i_wort=0;
      }
    }
     SERVE_WATCHDOG;
  _NOP();
  RESET_CPU; //RESET!
  
  }

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!

Autor: Christian R. (supachris)
Datum:

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

Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.