Post by wiken on Jul 1, 2019 10:17:52 GMT
Hi.
I'm moving the contentc of an SD Card into EEPROM, and now I discover that 0x020DF or 8415 is the last address I can write to.
The EEPROM should be 384KBytes long, so I guess I should be able to write between 0x0 to 0x5DBFF or 0 to 383999.
I do need a space of 0x0DD70 or 56688 bytes at least.
What am I missing?
/*----------------------------------------------------------------------------------*/
/** @brief Reads data from EEProm
* @param [address] start of data to read.
* @param [len] lenght to read.
* @param [values] data content returned.
* @return integer, number of bytes read.
* */
/*----------------------------------------------------------------------------------*/
int EEProm_Read(uint32_t address, uint32_t len, char *values)
{
uint32_t cnt = 0;
uint32_t acnt = 0;
uint8_t value;
if(dbge)
{
dtt(F("EER1 at"), 0, 0);
dtt(address, 1, 1);
}
acnt = address;
do
{
value = EEPROM.read(acnt);
values[cnt] = value;
if(dbge)
{
dtt(acnt, 0, 0);
dtt(F("-"), 1, 0);
dtt(value, 2, 0);
dtt(F(":"), 3, 0);
dtt(cnt, 4, 0);
dtt(F("-"), 5, 0);
dtt(values[cnt], 6, 1);
}
acnt++; // advance to the next address of the EEPROM
cnt++;
}while(124 != value);
// if(255 == value)
// value = 0;
return(cnt);
}
/*----------------------------------------------------------------------------------*/
/** @brief Writes data into EEProm.
* @param [address] to write at.
* @param [values] data to write.
* @param [num_values] number of bytes to write.
* @return integer, number of bytes written.
* */
/*----------------------------------------------------------------------------------*/
int EEProm_Write(unsigned long address, char *values, int num_values)
{
int cnt = 0;
int ret = 0;
unsigned long acnt = 0;
char *tmp = 0;
acnt = address;
tmp = values;
if(dbgew)
{
dtt(F("EEW1"), 0, 0);
dtt(num_values, 1, 0);
dtt(F("into"), 2, 0);
dtt(acnt, 3, 0);
dtt(tmp, 4, 1);
}
do
{
EEPROM.write(acnt, tmp[cnt]);
if(dbgew)
{
dtt(acnt, 0, 0);
dtt(F("-"), 1, 0);
dtt(tmp[cnt], 2, 1);
}
acnt++;// advance to the next address of the EEPROM
cnt++;
}while(cnt < num_values);
//EEPROM.write(acnt+1, 0x0);
EEPROM.eeprom_update();//Store data from Ram into DFLASH
return(cnt);
}
\Wiken