Hola!
Bueno pues revisando nuevamente el codigo, teneis razon, la funcion que estaba usando para leer en la eeprom estaba incorrecta. La asignacion la hacia mal....
Esto me ha enseñado una cosa: Si alguna vez me bajo mas codigo de algun sitio, tengo que revisarlo concienzudamente
dejo las funciones que he vuelto a picar y que me funcionan para int16:
void escribe_int16_eeprom(Int address, int16 data)
{
int aux;
aux = data;
write_eeprom(address, aux);
aux= data >>8;
write_eeprom(address+1, aux);
}
int16 lee_int16_eeprom(Int address)
{
int data;
data= read_eeprom(address + 1);
data = data <<8;
data= data + read_eeprom(address);
return(data);
}
Muchas gracias a todos, es asi como cuando uno no ve lo obbio, se da cuenta de que debe hacer un alto en el camino y recapacitar, no ocecarse.
Saludos y feliz navidad.