- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 15

Thema: mal wieder eine EEPROM Frage

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694

    Bitte um Hilfe bei EEPROMfragen: EE.., Foo, Arrays ..

    Ich möchte mehrere Vektoren im EEPROM (m)eines Controllers - mega.. - ablegen, Bytes und Words. Ich möchte die auf ganz bestimmten Stellen ablegen, damit ich nach einem Flashen das EEPROM nicht neu beschreiben muss bzw. damit ich nach dem Flashen auf die "alten" EEPROM-Werte auch wieder zugreifen kann, da es sich um Einstell- und Justagedaten dreht.

    Anmerkung: habe den alten Thread wegen des genau passenden Titels wieder aufgewärmt.

    Variable kann ich im EEPROM an einer bestimmten Stelle ablegen und auch wieder auslesen, auch nach dem neu Programmieren, das läuft problemlos. Ein Array der Art

    /* Byte-Array */
    uint8_t eeFooByteArray1[] EEMEM = { 18, 3, 70 };
    uint8_t eeFooByteArray2[] EEMEM = { 30, 7, 79 };

    kommt dann aber möglicherweise an einen Speicherplatz, der variieren kann. So gehts mir jedenfalls bei einem früheren, winzigen Projekt. Von diesem Projekt habe ich etwa diesen Stand:

    Textfeld, das ins EEPROM beim Flashvorgang geschrieben wird.
    unsigned char TestTimedOut[] EEMEM = "Timeout!";

    Definition einer (EINER!) Bytevariablen auf die Adresse 0x004
    #define EE_VALUE2 0x004 // Bytevariable

    Wert dieser Variablen
    [EE_VALUE2] = 0xFF

    und so eine Schreibroutine
    Code:
    // ============================================================================== =
      void DEEsch (int8_t data, uint8_t EEPadd)    // Datum wegschreiben auf Adresse
     {                              // 
    //      Evtl Parameter : (unsigned short address, unsigned char data)
    // - - - - - - - - - - - - - - -//  cli ();
      while (EECR & (1<<EEPE));     // Schreiben möglich ? vorheriger Zugriff zu Ende?
      EEAR           = EEPadd;      // Setze Adresse
      EEDR           = data;        // Schreib Datum ins EEPROM-Data register
      EECR          |= (1<<EEMPE);  // 
      EECR          |= (1<<EEPE);   // Starte Schreibzugriff
      sei ();                       //
    // - - - - - - - - - - - - - - -//
     }                              //
    // ===  Ende DEEsch (uint8_t dat, uint8_t EEPadd)
    // ============================================================================== =

    Bitte jetzt um Hilfe/Erläuterung zu diesen Fragen, der Vollständigkeit halber auch ein paar Anfängerfragen. Danke schon jetzt für die Antworten.

    Wie definiere ich den GENAUEN Ort eines Datenfeldes im EEPROM?

    Was bedeutet dieses ..foo.., ..Foo.. das ich bei EEPROM-Themen immer wieder lese?

    Was bedeutet in den Zeilen
    // schreiben
    eeprom_write_word (&eeFooWord, 2222);
    dieses &eeFooWord? Word verstehe ich (vermute ich), aber & und Foo ? ?
    Geändert von oberallgeier (11.01.2013 um 09:35 Uhr)
    Ciao sagt der JoeamBerg

Berechtigungen

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

LiFePO4 Speicher Test