9.10.13 persistent
The persistent
attribute specifies that the variable
should not be initialized or cleared at startup. A variable with the
persistent
attribute could be used to store state information that
will remain valid after a device Reset.
int last_mode __attribute__ ((persistent));
Persistent data is not normally initialized by the C run-time. However, from a cold-restart, persistent data may not have any meaningful value. This code example shows how to safely initialize such data:
#include <xc.h>
int last_mode __attribute__((persistent));
int main()
{
if ((RCONbits.POR == 0) &&
(RCONbits.BOR == 0)) {
/* last_mode is valid */
} else {
/* initialize persistent data */
last_mode = 0;
}
}
This attribute can only be used in conjunction with a RAM resident object, i.e. not in FLASH.