0xFF
’ to all locations that need to be erased. To
erase a DFM word: 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.
// 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(); }