Forum: Mikrocontroller und Digitale Elektronik MSP430G2553: 10 Werte/Bytes permanent im Flash ablegen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sven Scholz (Gast)


Lesenswert?

Hallo Gemeinde,

ich würde gerne meinen MSP430G2553 eine eindeutige ID verpassen und 
müsste hierfür max. 10 Bytes im Flash ablegen bzw. für die "Ewigkeit" 
speichern.

Die Werte sollten auch nach dem Hochladen neuer Software via MSP-Fet 
unter CSS persistent sein.

Gibt es irgendwo eine Beschreibung wie ich das bewerkstellige?
Meine SW lässt sich in <5kB unterbringen.
Ich hätte jetzt spontan die Möglichkeit gesehen, die Werte für die ID in 
die letzte Flash-Speicherbank abzulegen.
Dann dürften die doch nicht überschrieben werden?

Wie ich dann elegant von der SW aus auf diese Werte zugreife ist mir 
allerdings noch nicht ganz klar...

Ist das prinzipiell überhaupt möglich oder sollte ich mir lieber ein 
EEPROM besorgen?

Vielen Dank!

von Gerald K. (geku)


Lesenswert?

Der MSP430 hat 4x 64Byte Informationsspeicher Segment A bis D.

Segment A ist schon belegt und sollte nicht verwendet werden.

Beispiel fürs Schreiben eines Strings ins Segment B :

1
    #define SEGM_A (char *)0x1000
2
    #define SEGM_B (char *)0x1040
3
    #define SEGM_C (char *)0x1080
4
    #define SEGM_D (char *)0x10C0
5
 
6
            char *ps;
7
            char *pd;
8
             
9
            strcpy(ibuf,"ID=1234567890\r\n");
10
11
            ps=ibuf;
12
            pd=SEGM_B;
13
14
            BCSCTL1=CALBC1_1MHZ;   //run with 16MHz DCO
15
            DCOCTL=CALDCO_1MHZ;
16
17
            {
18
                FCTL1=FWKEY+ERASE;  // Set Mass Erase bit
19
                FCTL3=FWKEY;        // Clear Lock bit
20
                *pd=0;              // Dummy write to erase Flash segment B
21
                FCTL1=FWKEY+WRT;    // Set WRT bit for write operation
22
                FCTL1=FWKEY;        // Clear WRT bit
23
                FCTL3=FWKEY+LOCK;
24
            }
25
26
            while ((*ps!='\r')&&(*ps!='\n')&&(*ps!=0))
27
            {
28
                FCTL1=FWKEY+WRT;
29
                FCTL3=FWKEY;
30
                *(unsigned char *)pd=*ps;
31
                FCTL1=FWKEY;
32
                FCTL3=FWKEY+LOCK;
33
                ps++;
34
                pd++;
35
            }

Eine ID lässt sich auch, ohne SW, über die Speicherzugriffsfunktion 
MEMORY des Code Composer Studios ins FLASH schreiben.

PS : ich habt den Takt der MCU auf 1MHz heruntergeschaltet um den 
vollen Betriebsspannungsberreich für den Batteriebetrieb nutzen zu 
können.

Der Takt kann nach dem Beschreiben des Flashs wieder hinauf gesetzt 
werden.

: Bearbeitet durch User
von Sven Scholz (Gast)


Lesenswert?

Wow - richtig gut.
Probiere ich aus.
Vielen herzlichen Dank!

von Gerald K. (geku)


Lesenswert?

Sven Scholz schrieb:
> Wie ich dann elegant von der SW aus auf diese Werte zugreife ist mir
> allerdings noch nicht ganz klar...
1
#define SEGM_B (char *)0x1040
2
3
char *px;
4
5
px= SEGM_B; 
6
7
printf("%s",px);

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]
  • [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.