Witam,
przejdę od razu do meritum. Próbuję zmusić wewnętrzny EEPROM w atmedze8 do działania, jednakże bez skutku. Obudowałem zmienne w strukturę, zrobiłem funkcje dla zapisów flash->ram, ram->eeprom i odczytu eeprom-> ram. Wywołuje w programie funkcje zapisu do eepromu (pokolei z flash, przez ram do eeprom), po czym próbuję odczytać wartość za pomocą funkcji eeprom -> ram, odczytując pole z ram. Wszystko wydaje się okej, uzyskuje poprawną liczbę. Jednakże po wyłączeniu funkcji zapisu (czyli po jednokrotnym zapisaniu eepromu) i próbie odczytu eeprom-> ram, czytając to samo pole otrzymuje wartość 0 za każdym razem. Stworzyłem także dla próby, dodatkową zmienną dla struktury ram, żeby sprawdzić czy przypadkiem w ram nie siedzą wartości po zapisie flash-> ram i funkcja odczytu eeprom nic nie zmienia, jednakże przy wcześniejszym użyciu funkcji zapisu do eeprom przed odczytem, wszystko jest okej, używam innej zmiennej od flash do zapisu, innej do odczytu i wartość otrzymuje. Po za komentowaniu zapisu po raz kolejny wartość 0.
Zapewne to jakiś głupi problem, ale co może być nie tak?
Załączam kod :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oczywiście próbowałem z usuniętymi polami uint8_t programX[] i samymi dwoma ( w sumie trzema ) polami, jednakże także problem ten sam.
int main :
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
funkcja showNumber oczekuje liczby, ilości cyfr i czy poprzedzać zerem (dla zapisu czasu)
Ustawienia fusebitów :

Dodatkowo odczyt EEPROM z eXtreme Burner - AVR :

Czyli w sumie wygląda na to że problem z zapisem. Ale dlaczego zera?