ESP32 im EEPROM schreiben und lesen

Hallo,

ich nutze den Sparkfun ESP32 und möchte etwas im EEPROM speichern. Wenn ich den Speichern auslesen möchte, zeigt er mir “0” bzw. nichts an.

Mein Code:

#include <EEPROM.h>


void setup() {
  Serial.begin(9600);
  write_int(90, 6789);

void loop() {
  read_int(90); //Read from EEPROM
  delay(1000);
}


int read_int(int address)
{

  long byte_2 = EEPROM.read(address);
  long byte_1 = EEPROM.read(address + 1);
  int val = ((byte_2 << 0) & 0xFFFFFF) + ((byte_1 << 8 ) & 0xFFFFFFFF);

  Serial.print("Read from EEPROM (Address: ");
  Serial.print(address);
  Serial.print(",");
  Serial.print(address + 1);
  Serial.print("):");
  Serial.println(val);

  return val;
}

void write_int(int address, int value)
{
  byte byte_2 = (value & 0xFF);
  byte byte_1 = ((value >> 8 ) & 0xFF);
  EEPROM.write(address, byte_2);
  EEPROM.write(address + 1, byte_1);
  EEPROM.commit();

  Serial.print("Write to EEPROM (Address: ");
  Serial.print(address);
  Serial.print(",");
  Serial.print(address + 1);
  Serial.print("):");
  Serial.println(value);
}

Ausgabe:
Read from EEPROM (Address: 90,91):0
Read from EEPROM (Address: 90,91):0

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Schau Dir mal die Beispiele der EEPROM-Lib an. Da fehlt bei Dir etwas.
Der ESP32 hat übrigens keinen EEPROM, sondern simuliert das im Flash.

Gruß Tommy

Edit:
Du solltest Dir auch mal die Methoden in der EEPROM.h anschauen.
Ein int auf ESP32 ist übrigens 32 Bit breit.

void setup() 
{ 
  if (!EEPROM.begin(2048)) // size in Byte
  {
    Serial.println("failed to initialise EEPROM"); delay(1000000);
  }
}

EEPROM.begin anwenden

.get und .put anschauen https://www.arduino.cc/en/Reference/EEPROMGet