2.1 Flash Recovery
Defining the constant __FLASH_RECOVER
enables the Flash
recovery option for avoiding data loss in case of power failure. When Flash recovery is
enabled, one Flash page will serve as a recovery buffer. The value of
__FLASH_RECOVER
will determine the address to the Flash page used
for this purpose. This address must be a byte address pointing to an address in the
application section of a Flash page and the write functions will not be able to write to
this page. Flash recovery is carried out by calling the function
RecoverFLASH()
at program startup.
When the Flash recovery option is enabled a page write will involve pre-storing of data
into a dedicated recovery page in Flash, before the actual write to a given Flash page
takes place. The address for the page to be written to is stored in EEPROM together with
a status byte indicating that the Flash recovery page contains data. This status byte
will be cleared when the actual write to a given Flash page is completed successfully.
The variables in EEPROM and the Flash recovery buffer are used by the Flash recovery
function RecoverFlash()
to recover data when necessary. The writing of
one byte to EEPROM takes about the same time as writing an entire page to Flash. Thus,
when enabling the Flash recovery option the total write time will increase considerably.
EEPROM is used instead of Flash because reserving a few bytes in Flash will exclude
flexible usage of the entire Flash page containing these bytes.