los micros de Microchips cada día tienen menos EEPROM, incluso ahora los AVR, los recortaron y parecen pic con míseros 128 ó 256 de eeprom, en vez de mejorar empeoran.
A tu duda... básicamente es falta de conocimiento del lenguaje C, es fácil, los números flotantes suelen ser de 32, 64 ó 80 bits, o más con las arquitecturas de 32bits o 64! , entonces con un puntero encontrás la dirección de la variable flotante, con un sizeof, de cuantos bytes es, ahora lees sucesivamente el número de bytes requeridos, y los guardas, uno a uno en la eeprom.
La lectura es lo mísmo, pero desde la eeprom a la ram, pensando siempre en sucesión de bytes, y punteros que indican donde están guardados.
Gracias por la respuesta.
Hace un par de años tuve a la vista la implementación de un módulo multiplicador de p.f. de 16 bits pensado para FPGA.
Ahí trabajaban con mantisa y exponente porque esa es la norma IEEE para guardar los números de p.f.
No sabía eso de los punteros para los pics, pero resulta entendible (hasta para un "outsider" como yo).
Me han quedado algunos pics un poco obsoletos (16F877A) como para probar este tipo de cosas raras.
De hecho, a partir de este tema se me ha ocurrido una aplicación para probar hasta qué punto una red neuronal puede facilitar y/o mejorar el rendimiento de un controlador pequeño dedicado a unos sensores ópticos.
Hace unos años por aquí se planteó el problema de triangulación a partir de solo 3 sensores. Las fórmulas que surgen de la geometría son sencillas, ... hasta que uno las quiere implementar en un pic. Ahí aparecen propagaciones de errores desde cada cuenta que se hace.
Cuantas menos cuentas mejor.
Con redes neuronales "debería" ser más simple de implementar y hasta me animo a decir más preciso. Digo más simple porque uno se evita las cuentas de todos los procesos intermedios, y se centra en adquirir la señal y utilizar las coordenadsa que da la RN. Digo más preciso porque las cuentas son menos y más simples. Pero no lo he hecho aún.
Lo que sí es que requiere trabajar en punto flotante, y guardar y leer los coef. en EEPROM.
La etapa de entrenamiento conviene en una pcy luego devolver al pic los coeficientes y guardarlos en EEPROM.
Ya me está agarrando ganas de probar ...
Un saludo !
... y siempre recuerden que "Yo sólo sé ce, no ce más más, ... y no sé más ..."
Depende con qué programes.
Si fuera CCS tenés las funciones write_eeprom(addr,val) y read_eeprom(addr).
Como escriben de a 1 byte , podés usar un union , ej:
C:
union FLN { float f ; struct {int8 b3,b2,b1,b0;};} ;
union FLN float1 , float2 , float3 ; // las que uses...
....
float1.f = 4.1 ; // la trabajás como punto flotante
// pero la guardás/leés de a byte
write_eeprom( 0, float1.b3 );
write_eeprom( 1, float1.b2 );
write_eeprom( 2, float1.b1 );
write_eeprom( 3, float1.b0 );
float1.b3 = read_eeprom( 0) ;
float1.b2 = read_eeprom( 1) ;
float1.b1 = read_eeprom( 2) ;
float1.b0 = read_eeprom( 3) ;
Gracias Eduardo, hace años que no programo en pic ... ni me imagino las cosas nuevas que habrá ...
En algún momento probé CCS por las bibliotecas para display grafico, pero siempre me abrí con mis propias rutinas y el viejo "HI-TECH C".