Najlepiej nigdy, przenigdy nie rób takich rzeczy

Argumentem tej funkcji powinien być wskaźnik ale ty stosujesz tu rzutowanie i na własną rękę numerujesz komórki pamięci w EEPROM. To doprowadzi cię kiedyś do zagłady
jak już to najpierw zdefiniuj sobie zmienną w pamięci EEPROM:
unsigned char zmienna EEMEM;
a potem np:
mem_year = eeprom_read_byte( &zmienna );
albo
eeprom_write_byte( &zmienna, mem_year );
Jednak i taki zapis danych w pamięci EEPROM może doprowadzić się na dłuższą metę do szaleństwa
Najlepiej to sobie zorganizować jakąś dużą strukturę, wewnątrz której będziesz miał zdefiniowane wszystkie zmienne jakie chcesz przechowywać w EEPROM, np:
Zaloguj się, aby zobaczyć kod
a potem korzystaj z funkcji typu:
eeprom_read_block(), albo
eeprom_write_block(). Takie rozwiązanie będzie bardzo bezpieczne. Bo masz pewność, że kompilator zawsze odpowiednio poukłada dane w EEPROM i nie będzie trzeba się w ogóle zajmować czy myśleć o adresach bezwzględnych.