- Labornetzteil AliExpress         
Ergebnis 1 bis 8 von 8

Thema: PIC12F157x 128 byte non volatile data storage

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Ich erweitere mal meinen Thread, da es noch unmittelbar dazugehört.

    zum Ablegen einer bestimmten Struktur oder Daten, hab ich folgendes probiert:

    so kann ich an Speicherstelle 0x07F0 meine Struktur ablegen und auch
    gleich initialisieren beim Programmieren des Chips
    Ein MemoryDump (zumindest in der IDE) zeigt, dass meine Daten (Konstanten) tatsächlich auch dort gelandet sind

    Code:
    const struct 
    {
      U16 CalAtmV;
      U16 CalCount;
      U8  SoftVersionPre;
      U8  SoftVersionPost;
      U8  HardVersionPre;
      U8  HardVersionPost;
    } myCalData @0x07F0 =        /* an fester Adresse ablegen */
    {                             /* und gleich eine Initialisierung vornehmen */
      4000,
      1023,
      1,
      0,
      1,
      0
    };
    ich staune grad, ich kann so sogar direkt aus dem Array lesen:

    Code:
    x = myCalData.CalAtmV;
    das funktioniert, der Compiler scheint dafür den richtigen Code zu machen....
    muss das evtl. sogar volatile const sein ? tut zumindest nicht weh.
    Geändert von Siro (18.11.2016 um 13:31 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Siro Beitrag anzeigen
    Ich erweitere mal meinen Thread, da es noch unmittelbar dazugehört.

    zum Ablegen einer bestimmten Struktur oder Daten, hab ich folgendes probiert:

    so kann ich an Speicherstelle 0x07F0 meine Struktur ablegen und auch
    gleich initialisieren beim Programmieren des Chips
    Ein MemoryDump (zumindest in der IDE) zeigt, dass meine Daten (Konstanten) tatsächlich auch dort gelandet sind
    Mit const packt der Compiler (XC8 und XC16) Daten ins Flash, das ist normal. Das tut er auch, ohne daß du eine Adresse angibst. Du mußt nur aufpassen, daß er dir nicht von alleine irgendwelche andere Daten in diese 128 Byte packt.
    ich staune grad, ich kann so sogar direkt aus dem Array lesen:
    Das folgt aus dem gesagten.
    muss das evtl. sogar volatile const sein ? tut zumindest nicht weh.
    Doch tut es. Es verhindert, daß Zugriffe auf diese Variable optimiert werden. Und solange du die Daten nicht im Interrupt-Handler änderst, sind sie nicht volatile sondern das Gegenteil: const.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Ähnliche Themen

  1. volatile problem
    Von Siro im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 27.07.2010, 20:36
  2. unsigned volatile long ??
    Von Ali_Baba im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 04.03.2009, 20:31
  3. neues Byte aus Byte-Array erstellen
    Von BoondockDuck im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 06.09.2008, 07:53
  4. Volatile und Interrupt
    Von Arexx-Henk im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 11.03.2006, 09:04
  5. volatile, const
    Von pebisoft im Forum C - Programmierung (GCC u.a.)
    Antworten: 16
    Letzter Beitrag: 27.03.2005, 16:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests