Hola. Firepic la libreria q intente usar para leer/escribir float es la external_eeprom.c del CCS 4.023, siendo estas las funciones:
// Purpose: Write a floating point number to external eeprom
// Inputs: 1) An eeprom address. Four eeprom locations will be used.
// 2) The floating point number to write to external eeprom
// Outputs: None
void write_float_ext_eeprom(EEPROM_ADDRESS address, float data)
{
int8 i;
for(i = 0; i < 4; ++i)
{
write_ext_eeprom(address + i, *(&data + i));
}
}
// Purpose: Read a floating point number from external eeprom
// Inputs: An eeprom address
// Outputs: The floating point number read from the external eeprom
float read_float_ext_eeprom(EEPROM_ADDRESS address)
{
int8 i;
float data;
for(i = 0; i < 4; ++i)
{
*(&data + i) = read_ext_eeprom(address + i);
}
return data;
}
Habiendo un error (creo) en el compilador porque revisando con el MPLAB SIM cuando hago esto: (&data + i), ocea que si le sumo por ejemplo + 1 a la direcion de "data", el compilador lo que hace es sumarle 4 bytes mas porque asi lo entendiera y creo que eso hacia que me devolviera variables erroneas, cosa mal porque tiene que seguir leyendo en los otros 3 bytes del valor flotante.
Bueno, ahora uso lo que propuso RICHI777 que va de maravilla. No conocia esa funcion memcpy que al parecer hace lo mismo pero de manera correcta, gracias.
Cuanto tenga mas tiempo probare a mas detalle si el problema es con el compilador u otra cosa.
Gracias a todos.
Un saludo.