15.2.2.3 NVMREG Erase of DFM
DFM can be erased by writing ‘
0xFF
’ to all locations that need to be erased. To
erase a DFM word: - Set the NVMREGS bit.
- Write the desired address into the NVMADRH:NVMADRL register pair.
- Set the WREN bit.
- Perform the unlock sequence as described in the NVM Unlock Sequence section.
- Set the WR bit.
A single byte (0xFF
) is written into the DFM location. The DFM circuitry
automatically erases the memory location before performing the write operation. If the
DFM address is write-protected, the WR bit will be cleared and the write operation will
not take place.
While erasing/writing data memory, CPU operation is suspended and resumes when the operation is complete. Upon completion, hardware clears the WR bit, the NVMIF bit is set, and an interrupt will occur if the NVMIE bit is also set.
Erasing One Byte of Data Flash Memory
// Code sequence to erase one byte of DFM NVMCON1bits.NVMREGS = 1; // Point to DFM NVMADR = DFM_ADDR; // NVMADRH = 0x70, NVMADRL = DFM address NVMDATL = 0xFF; // Load NVMDATL with 0xFF NVMCON1bits.WREN = 1; // Allows program/erase cycles INTCONbits.GIE = 0; // Disable interrupts // Perform required unlock sequence NVMCON2 = 0x55; NVMCON2 = 0xAA; NVMCON1bits.WR = 1; // Begin program/erase cycle INTCONbits.GIE = 1; // Restore interrupt enable bit value NVMCON1bits.WREN = 0; // Disable program/erase // Verify byte erase operation success and call the recovery function if needed if (NVMCON1bits.WRERR) { ERASE_FAULT_RECOVERY(); }