eeprom esp8266

voglio memorizzare lo stato di un input in eprom
non capisco cosa succede
pare che ogni volta che compilo mi legge valori strani

eprom read0 12900
eprom read1 25652
eprom read2 14437
eprom read3 13620
eprom StatoD0....12900
eprom StatoD1....12900

se faccio scrivere almeno una volta

eprom read0 0
eprom read1 0
eprom read2 14437
eprom read3 13620
eprom StatoD0....0
eprom StatoD1....0

faccio cosi

Serial.println("");
  Serial.print("eprom read0      ");
  //EEPROM.write(0, highByte(digitalRead(1)));
  //EEPROM.write(0 + 1, lowByte(digitalRead(1)));
  delay(2000);
  Serial.println(statoD0 = EEPROM.read(0) * 256 + EEPROM.read(1));
  delay(200);
  digitalWrite (D0,statoD0);
  delay(1000);
  /code]
ho provato a spostarlo in tutti i punti del programma 
non ce verso ,cosi una eeprom cosi è inutile la devo formattare o scrivere in fase di compilazione  
la voglio tutta a 00 o FF
dove sbaglio ?

EEPROM
This is a bit different from standard EEPROM class. You need to call

EEPROM.begin(size)

before you start reading or writing, size being the number of bytes you want to use. Size can be anywhere between 4 and 4096 bytes.

EEPROM.write

does not write to flash immediately, instead you must call

EEPROM.commit()

whenever you wish to save changes to flash.

EEPROM.end()

will also commit, and will release the RAM copy of EEPROM contents.
EEPROM library uses one sector of flash located just after the SPIFFS.

Questo perché L’ESP non ha una vera EEPROM, ma viene emulata con la flash. Quindi occhio che le scritture a disposizione non saranno 100000 come sugli AVR.

Non capisco però perché sia necessario specificare la dimensione. Se intanto ci dedicano comunque solo un blocco di flash, non potevano fare direttamente che la dimensione era quella?

Però io ci scrivo come una normale
Eeprom , è la Prima lettura che è incasinata , dopo aver scritto la prima volta tutto normale ,
Ma a sto punto come faccio a scriverlaiIn fase di programmazione
Così elimino il problema alla Radice , perlomeno la trovo come dico io
E stavo anche pensando di metterne una esterna così decido io quanto metterla grande

Ma hai letto quel che ha scritto Brunello? Hai fatto EEPROM.commit()?

Un momento il mio problema non ė scriverla o leggerla, il problema ė che alla prima lettura i valori sono a casaccio , non sono 00 o FF
Non so se con .commit facendo un ciclo e resettandola , magari al riavvio resta pulita , domani proverò
Ma esiste un modo per scrivere quando compilo e programmmo ?

All'inizio devi prevedere una funzione di formattazione, non è detto che sia piena di 0xFF, se ci hai già caricato qualcosa sopra.

No, non c'è modo, almeno non su Arduino.