I try to store different slots of datas in one page using the EEPROM library, my load and store functions are below this message.
It works when i have only the first slot edited, problems come when (in the order) : store first slot - store second slot - load first slot. Loaded datas seem to not make any sense. Additional question to this is : how can i save and store let's say 8 slots (2,5kBytes of datas). I guess i need two pages - and i m not sure how to adress the second page.
Thanks !
Code: Select all
void save_slot(int slot) //1 SLOT TAKES 337 bytes
{
int Status ;
EEPROM.PageBase0 = 0x801F000;
EEPROM.PageBase1 = 0x801F800;
EEPROM.PageSize = 0x800;
int k = slot * 338 ;
for (int i = 0 ; i < 16 ; i++)
for (int j = 0 ; j < 7 ; j ++)
{
Status = EEPROM.write( k + ( 14 * i ) + ( 3 * j ), lowByte(mem[0][i][j] >> 8));
Status = EEPROM.write( k + ( 14 * i ) + ( 3 * j ) + 1, lowByte(mem[0][i][j]));
Status = EEPROM.write( k + ( 14 * i ) + ( 3 * j ) + 2, lowByte(mem[1][i][j]));
}
Status = EEPROM.write( k + 336, lowByte(current_mod));
Status = EEPROM.write( 337, 1) ; //REGISTER SAYING THE MEMORY HAS BEEN UPDATED WHEN THE DEVICE LIGHTS UP THE FIRST TIME
}
void load_slot (int slot)
{
int Status ;
int data ;
EEPROM.PageBase0 = 0x801F000;
EEPROM.PageBase1 = 0x801F800;
EEPROM.PageSize = 0x800;
int k = slot * 338 ;
for (int i = 0 ; i < 16 ; i++)
for (int j = 0 ; j < 7 ; j ++)
{
mem[0][i][j] = 0 ;
mem[1][i][j] = 0 ;
data = EEPROM.read( k + ( 14 * i ) + ( 3 * j ));
mem[0][i][j] = mem[0][i][j] | (data << 8) ;
data = EEPROM.read( k + ( 14 * i ) + ( 3 * j ) + 1);
mem[0][i][j] = mem[0][i][j] | data ;
data = EEPROM.read( k + ( 14 * i ) + ( 3 * j ) + 2);
mem[1][i][j] = data ;
}
current_mod = 0 ;
data = EEPROM.read(k + 336);
current_mod = data ;
}