Deklaration: /* Empfaenger Impuls Register */ volatile struct Impuls_Struct EEMEM Impuls_Structs_eeprom = \ { Impuls_Zeit:3750, Impuls_Pause:55000,\ Impuls_Zeit_Min:2250, Impuls_Pause_Min:50000,\ Impuls_Zeit_Max:5250, Impuls_Pause_Max:60000}; /* ADC und Gluehung Struktur */ volatile struct Alarm_Struct EEMEM Alarm_Structs_eeprom = \ { Spannung1_Alarm_1:160, Spannung1_Alarm_2:145,\ Spannung2_Alarm_1:160, Spannung2_Alarm_2:145,\ Spannung3_Alarm_1:240, Spannung3_Alarm_2:20,\ Gluehung_Step1:3300, Gluehung_Step2:3000,\ Gluehung_Timer2_Step1:235, Gluehung_Timer2_Step2:225 }; volatile struct Impuls_Struct EEMEM Save_Impuls_Structs_eeprom; volatile struct Alarm_Struct EEMEM Save_Alarm_Structs_eeprom; volatile struct Alarm_Struct Alarm_Structs; volatile struct Impuls_Struct Impuls_Structs; Lesen aus dem EEPROM: /* Read the eeprom data */ do {} while (!(eeprom_is_ready())); eeprom_read_block((void *) &Impuls_Structs, (const void *) &Save_Impuls_Structs_eeprom, (size_t) sizeof(Impuls_Structs)); eeprom_read_block((void *) &Alarm_Structs, (const void *) &Save_Alarm_Structs_eeprom, (size_t) sizeof(Alarm_Structs)); /* when no Save-Data, then read the original */ if(!(Impuls_Structs.Impuls_Zeit)) { eeprom_read_block((void *) &Impuls_Structs, (const void *) &Impuls_Structs_eeprom, (size_t) sizeof(Impuls_Structs)); eeprom_read_block((void *) &Alarm_Structs, (const void *) &Alarm_Structs_eeprom, (size_t) sizeof(Alarm_Structs)); } Schreiben in EEPROM: /* disable interrupt */ cli(); /* wait for EEPROM ready */ do {} while (!(eeprom_is_ready())); /* write structs to EEPROM */ eeprom_write_block((const void *) &Impuls_Structs, (void *) &Save_Impuls_Structs_eeprom, (size_t) sizeof(Impuls_Structs)); do {} while (!(eeprom_is_ready())); /* write structs to EEPROM */ eeprom_write_block((const void *) &Alarm_Structs, (void *) &Save_Alarm_Structs_eeprom, (size_t) sizeof(Alarm_Structs)); /* enable interrupt */ sei();