Aquí puede ver las funciones que estoy usando para almacenar datos en Flash, pero los datos se borran después del reinicio de la alimentación, por lo que aún está en la memoria RAM y no en Flash.
#define OFFSET_ADDRESS 0x00030000
#define OFFSET_VERSION 0x00030002
#define OFFSET_SERIAL 0x00030004
void read_from_flash (void) {
BYTE i, *pok_add, *pok_ver, *pok_serial_no;
pok_add = (BYTE *)OFFSET_ADDRESS;
display_address = *pok_add;
delay_1_ms();
if ((display_address > MAX_OUTDOOR_DISPLAY_ADDRESS) || (display_address < MIN_OUTDOOR_DISPLAY_ADDRESS)) display_address = UNI_ADDRESS;
pok_ver = (BYTE *)OFFSET_VERSION;
version = *pok_ver;
delay_1_ms();
if (version > MAX_FW_VERSION) version = 0;
for (i=0;i<8;i++) {
pok_serial_no = (BYTE *)OFFSET_ADDRESS;
serial_no[i] = *pok_serial_no++;
delay_1_ms();
}
for (i=0;i<8;i++) if (serial_no[i] > 9) serial_no[i] = 0;
}
void write_to_flash (void) {
BYTE i;
iap_copy_to_flash(&display_address, OFFSET_ADDRESS, 1);
delay_1_ms();
iap_copy_to_flash(&version, OFFSET_VERSION, 1);
delay_1_ms();
for (i=0;i<8;i++) {
iap_copy_to_flash(&serial_no[i], OFFSET_VERSION+i, 1);
delay_1_ms();
}
}
¿La pregunta es donde me equivoco? Sectores en un dispositivo LPC178x / 177x enlace en la página 883. Tal vez no escribo y leo datos correctamente por lo que todavía se encuentra en la memoria RAM.