Saludos al foro!
Llevo unos días volviéndome loco y al final he localizado un problema que pienso que es achacable al compilador CCS.
Yo usaba en mi código una técnica para almacenar valores en la eeprom de esta forma:
#define VALOR 300 // Valor a grabar
// ---------------------------------------------------------------------
// Datos en la Eeprom interna
// ---------------------------------------------------------------------
#define POS_EEPROM getenv("EEPROM_ADDRESS")
#rom POS_EEPROM = {VALOR} // Valor a grabar
Eso me ha funcionado siempre, después de la compilación, en la posición POS_EEPROM estaba el byte bajo de 300 (0x2C) y en la posición POS_EEPROM+1 el valor alto (0x01). Ésto ocurría, por ejemplo, con la versión 5.015 del compilador
Pues en las últimas versiones del compilador ésto ya no es así, si utilizamos el código anterior nos graba sólo el byte bajo (0x2C) dejando el byte alto sin grabar. Lo he probado con varias versiones, pero la más baja que me daba el problema era la 5.071. A todas las versiones superiores les ocurre lo mismo.
He tenido que modificar el código para que lo grabe en dos veces, separando el byte alto y el bajo.
No me parece de recibo que cambien este modo de compilación, puede que afecte a muchos códigos anteriores.
¿Le ha ocurrido a alguien más?