Piszę program który w założeniu ma posiadać pamięć ustawień. Dokładniej jest w nim 11 zmiennych oraz 128 możliwości ich ustawień (128 banków pamięci dla tych 11 zmiennych). Każda zmienna jest 8bitowa.
No i dostaje od kompilatora (WinAVR ) dziwne komunikaty:
warning: pointer targets in passing argument 1 of 'eeprom_read_byte' differ in signedness
W kodzie zaznaczona jest ostatnia linijka
Ten sam komunikat pojawia się przy zapisie
Jak narazie udało mi się go pozbyć jedynie podstawiając za adres &st_eeprom jakąś stałą liczbę
Wtedy pamięć działa, zapamiętuje i odczytuje bezproblemowo.
W czym tkwi problem?/
-------------------------------------------------------------------
PO PROBLEMIE
Okazuje się że nie można definiować zmiennych eepromowych za pomocą char tylko trzeba to robić używając polecenia uint8_t (lub innych - uint16_t, 32, 64):
No i dostaje od kompilatora (WinAVR ) dziwne komunikaty:
warning: pointer targets in passing argument 1 of 'eeprom_read_byte' differ in signedness
W kodzie zaznaczona jest ostatnia linijka
int pr = 1;
char eq1 = 8, eq2 = 8, eq3 = 8, eq4 = 8, eq5 = 8;
char vol = 24, V1 = 16, V2 = 16, pt = 8, st = 1, ch = 1;
static char EEMEM ch_eeprom[128];
static char EEMEM st_eeprom[128];
static char EEMEM pt_eeprom[128];
static char EEMEM V2_eeprom[128];
static char EEMEM V1_eeprom[128];
static char EEMEM vol_eeprom[128];
static char EEMEM eq1_eeprom[128];
static char EEMEM eq2_eeprom[128];
static char EEMEM eq3_eeprom[128];
static char EEMEM eq4_eeprom[128];
static char EEMEM eq5_eeprom[128];
st = eeprom_read_byte(&st_eeprom[pr]);Ten sam komunikat pojawia się przy zapisie
eeprom_write_byte(&st_eeprom[pr], st);Jak narazie udało mi się go pozbyć jedynie podstawiając za adres &st_eeprom jakąś stałą liczbę
eeprom_write_byte(0x00, st);Wtedy pamięć działa, zapamiętuje i odczytuje bezproblemowo.
W czym tkwi problem?/
-------------------------------------------------------------------
PO PROBLEMIE
Okazuje się że nie można definiować zmiennych eepromowych za pomocą char tylko trzeba to robić używając polecenia uint8_t (lub innych - uint16_t, 32, 64):
static EEMEM uint8_t pr_eeprom;
static EEMEM uint8_t ch_eeprom[128];