Widzę, na czym polegają błędy, ale nie umiem sobie z nimi poradzić.
1. Zapis do FRAM
memcpy(tKpop11, (void *)&nTemp24Max_Val, 4);
i2cFRAM.write(Temp24Max_Offset, tKpop11, 4);
powyższych dwóch linii używam wielokrotnie, zmieniając parametry, tu przykładowe nazwy:
- tKpop1 - tablica 4 bajtowa na zapisywaną wartość
- &nTemp24Max_Val - adres zapisywanej zmiennej
- Temp24Max_Offset - adres FRAM, int
2. Odczyt z FRAM
i2cFRAM.read(CurrentDay_Offset, tcDay, 4);
memcpy((void *)&nCurrentDay, tcDay, 4);
- CurrentDay_Offset - adres zmiennej we FRAM
- tcDay - tablica na wartość zmiennej
- &nCurrentDay - adres zmiennej
Używam tych operacji wielokrotnie dla różnych zmiennych i chciałbym wykorzystywać do tego dwie funkcje np. FRAM_read i FRAM_write
Wywołanie byłoby z parametrami, np:
FRAM_write (nazwa_zmiennej, adres_FRAM, tablica_zmiennej)
FRAM_read (adres_FRAM, tablica_zmiennej, nazwa_zmiennej)
Póki co, próbowałem napisać tak:
Code: Select all
void FRAM_Write(int tTabl, const int VarValue, int FRAM_address)
{
memcpy(tTabl, (void *)&VarValue, 4);
i2cFRAM.write(FRAM_address, tTabl, 4);
}1. przy "tTabl":
argument of type "int" is incompatible with parameter of type "void *"
int tTabl
==============
2. przy i2cFRAM.write:
no instance of overloaded function "Adafruit_EEPROM_I2C::write" matches the argument list
WI-240908-2130.ino(1058, 17): argument types are: (int, int, int)
WI-240908-2130.ino(1058, 17): object type is: Adafruit_EEPROM_I2C
write
+2 overloads
Writes a byte at the specific EEPROM address
Parameters:
addr – The 16-bit address to write to in EEPROM memory
value – The 8-bit value to write at addr
==================
EDIT: 15:40
Udało mi się usunąć błąd w pierwszej linii:
Code: Select all
obecnie: memcpy((void *)&tTabl, (void *)&VarValue, 4);
było: memcpy(tTabl, (void *)&VarValue, 4);Drugi błąd pozostał ;-(
