jedfra6 napisał(a):
Do obsługi pamięci EEPROM stosuje się kilka funkcji
Wiem że je wymieniłeś, jednak nie napisałeś które stosujesz i w dalszej części postu używałeś "write", stad moja sugestia

jedfra6 napisał(a):
Dwa, właśnie mój problem polega na tym, że przy zapisie eeprom_update_byte((uint8_t*)addr,value) kiedy adres jest już większy od uint8_t, wtedy dostaje warninga, i prawdopodobnie adres jest obcinany.
W przypadku wskaźników nie ma mowy o żadnym obcinaniu (w AVR są one 16-bitowe). "uint8_t" to nie jest typ adresu, bo on może być ogromny... To jest informacja że ten wskaźnik wskazuje na jedno-bajtowe miejsce w pamięci.
Cóż to za "warning"? Z niedowierzania aż u siebie sprawdziłem i żadnych ostrzeżeń nie otrzymuję...
Proponuję się bliżej przyjrzeć wskaźnikom poprzez niebieską książkę Mirka, albo
http://helion.pl/ksiazki/wskazniki-w-je ... wskazc.htmjedfra6 napisał(a):
W moim przypadku nie używam EEMEM. Mam po prostu tablicę addr[n] = {20,40,60,...} i w zależności od elementu, który zapisuję odwołuje się do addr[n] i addr[n]+1,addr[n]+2,...
Użycie tablicy wcale nie wyklucza "EEMEM":
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jedfra6 napisał(a):
Czy poprawne dla adresu większego od uint8_t ale zmiennej w zakresie uint8_t będzie zapis:
eeprom_update_byte = ((uint16_t *)addr, value)?
Absolutnie nie. Wystąpi konflikt typów (
http://www.nongnu.org/avr-libc/user-man ... d4b3e51991).