www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik msp430 Flash


Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin,

ich habe mal eine Frage zu meinem MSP430F248 auf die ich bis jetzt noch 
keine Antwort finden konnte. Ich möchte Daten im Flash ablegen  und 
diese nach dem nächsten Neustart benutzen. Nun habe ich mir das Beispiel 
von TI besorg und adaptiert. In dem hier vorliegendem Beispiel werden 
aber immer gleich 64 Bytes geschrieben(Ein Paket?).

Ist es für die Lebensdauer des Speichers Sinnvoll immer 64Byts auf einen 
rutsch wie hier zu beschreiben?

'Beschreit' es diese sowieso immer auch wenn ich nur 1Byte beschreibe?



LG Bergie






void write_SegC(USIGN8* value)
{
  char *Flash_ptr;                          // Flash pointer
  unsigned int i;

  Flash_ptr = (char *)0x1040;               // Initialize Flash pointer
  FCTL3 = FWKEY;                            // Clear Lock bit
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  *Flash_ptr = 0;                           // Dummy write to erase 
Flash seg

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

  for (i = 0; i < 64; i++)
  {
    *Flash_ptr++ = value[i];                   // Write value to flash
  }

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

Autor: Daniel G. (daniel83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bergie,

In dem Beispiel werden nicht 64 Bytes auf einmal geschrieben sondern 
64x1Byte.

Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Über die Forschleife werden 64 Byte geschrieben, hintereinander weg

Wenn ich nun die einenfolge in dem ich den Falsh beschreibe nicht über 
n++ sondern über  (64+(n--))  abarbeiten lasse oder die 64 Addressen in 
zufälliger sich nicht wiederholender Reihenfolge anspreche, gibt es dann 
ein Nachteiliges Verhalten im bezug auf die Lebenserwartung meines 
Flashspeichers?

LG

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>(Ein Paket?)
Ein Block

>Ist es für die Lebensdauer des Speichers Sinnvoll immer 64Byts auf einen
>rutsch wie hier zu beschreiben?
Eigentlich nicht, Nein

>'Beschreit' es diese sowieso immer auch wenn ich nur 1Byte beschreibe?
Nein.


Grundsätzliches zum Flash:
Du kannst die Bits im Flash immer von "1" auf "0" problemlos ändern. 
Willst du aber eine "0" in eine "1" ändern, so kannst du nur den 
gesamten Block (64 Byte) in einem rutsch auf "1" setzen. Daher der Name 
"Flash" (Bitzartig alles auf "1" setzen).

Autor: Bergie B. (bergie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Grundsätzliches zum Flash:
> Du kannst die Bits im Flash immer von "1" auf "0" problemlos ändern.
> Willst du aber eine "0" in eine "1" ändern, so kannst du nur den
> gesamten Block (64 Byte) in einem rutsch auf "1" setzen. Daher der Name
> "Flash" (Bitzartig alles auf "1" setzen).

Achso,

das Grundsätzliche war mir nicht bewust. Deswegen ist mien Flash wohl 
nach dem löschen auch mit 1en geflutet und nicht mit 0en ;)

Gut das Hilft mir erst mal weiter! danke

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies mal die AppNote, da ist das beschrieben:
http://focus.ti.com/lit/an/slaa334a/slaa334a.pdf
(Besonders cumulative programming time!)

Was mich jetzt gerade sehr stutzig macht, ist folgendes:
Das DB zum F248 sagt: cumulative programming time: max. 4ms
Laut der obigen AppNote kann man diese (also 4ms) nur einhalten, wenn 
man den Flash Memory Controller mit der maximalen Frequenz von 476kHz 
taktet!
Ist die Frequenz kleiner, darf man (rein theoretisch) nicht alle 64 
Bytes nacheinander byteweise flashen! Wordweise würde allerdings 
gehen... ?!

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.