Arduino EEprom ATTiny85 oder ESP8266 read/write

Das EEROM ist halt eine recht exotische Hardware Eigenschaft der AVRs.

Wenn du nicht das .eeprom Section Feature nutzen möchtest und auch nicht per USBasp das EEPROM beschreiben willst. Also auf alle diese genialen Features verzichten möchtest, kannst du immer noch die EEPROM Daten in Strukturen ablegen und die Pos in der Struktur mit offsetof() vom Kompiler berechnen lassen.
Das funktioniert dann mit ALLEN Gcc und ALLEN Speichern, egal ob internes EEPROM oder I2C FRAM usw., wenn denn die Pointer Size(Adressraum) ausreichend ist.

Wichtig ist, meines bescheidenen Erachtens nach:
Die händischen Berechnungen/Festsetzungen der Adressen aus dem Code vollständig zu eliminieren.
Denn das ist eine ganz fatale Fehlerquelle!

#include <EEPROM.h> 

// ein plaetzchen im eeprom vorsehen
struct Eeprom
{
  byte speicher;
  byte osccal;
  float interneRefrenzSpannung;
};

#ifdef __AVR__
Eeprom eeprom EEMEM __attribute__((used)) {5,122,1.05}; // Arduino erzeugt *.eep Datei
#endif


void setup() 
{
  Serial.begin(9600);
  EEPROM[offsetof(Eeprom,speicher)] = 9;
  
}

void loop() 
{
  byte wert = EEPROM[offsetof(Eeprom,speicher)];
  Serial.println(wert);
  delay(10000);
}