Witam!
Piszę program który ma mniej więcej obliczać mi ile paliwa jest wtryskiwane do cylindra w samochodzie.
Ale chciałem aby wartość uśredniona już nie była tracona wraz z odłączeniem zasilania, tak więc trzeba ją do EPROM'a zapisać.
Robię to tak:
Czyli zmienna "wynik" typu float ma być zapisana do pamięci EEPROM w ściśle określonym przez ze mnie miejscu.
Po próbie kompilator (WinAVR) wypluwa:
Trochę dziwne, bo przecież zmienną float chce zapisać do pamięci jako float a mu to się nie podoba.
No ale, jak nie tak to inaczej spróbowałem i zmienna float na uint16_t (w EEPROM) wrzuciłem i tutaj już nie było problemu, po za takim że program nagle z 12% przybrał wielkość 124%... (w sumie z warning'iem powyżej też tyle warzy).
Natomiast przy próbie odczytu wcina mi pamięć RAM w 200% niezależnie z jakiego typu w pamięci EEPROM ściągam dane.
Pozdrawiam
Piszę program który ma mniej więcej obliczać mi ile paliwa jest wtryskiwane do cylindra w samochodzie.
Ale chciałem aby wartość uśredniona już nie była tracona wraz z odłączeniem zasilania, tak więc trzeba ją do EPROM'a zapisać.
Robię to tak:
float wynik = 0;
eeprom_write_byte( (float *)0x0, wynik);
wynik = eeprom_read_byte( (float *)0x0);Czyli zmienna "wynik" typu float ma być zapisana do pamięci EEPROM w ściśle określonym przez ze mnie miejscu.
Po próbie kompilator (WinAVR) wypluwa:
../licznik.c:37: warning: passing argument 1 of 'eeprom_write_word' from incompatible pointer typeTrochę dziwne, bo przecież zmienną float chce zapisać do pamięci jako float a mu to się nie podoba.
No ale, jak nie tak to inaczej spróbowałem i zmienna float na uint16_t (w EEPROM) wrzuciłem i tutaj już nie było problemu, po za takim że program nagle z 12% przybrał wielkość 124%... (w sumie z warning'iem powyżej też tyle warzy).
Natomiast przy próbie odczytu wcina mi pamięć RAM w 200% niezależnie z jakiego typu w pamięci EEPROM ściągam dane.
Pozdrawiam
