PIC18F2XXX/4XXX FAMILY
DS30009622M-page 20 2010-2015 Microchip Technology Inc.
3.0 DEVICE PROGRAMMING
Programming includes the ability to erase or write the various memory regions within the device.
In all cases, except high-voltage ICSP Bulk Erase, the EECON1 register must be configured in order to operate on a
particular memory region.
When using the EECON1 register to act on code memory, the EEPGD bit must be set (EECON1<7> = 1) and the CFGS
bit must be cleared (EECON1<6> = 0). The WREN bit must be set (EECON1<2> = 1) to enable writes of any sort (e.g.,
erases) and this must be done prior to initiating a write sequence. The FREE bit must be set (EECON1<4> = 1) in order
to erase the program space being pointed to by the Table Pointer. The erase or write sequence is initiated by setting the
WR bit (EECON1<1> = 1). It is strongly recommended that the WREN bit only be set immediately prior to a program
erase.
3.1 ICSP Erase
3.1.1 HIGH-VOLTAGE ICSP BULK ERASE
Erasing code or data EEPROM is accomplished by configuring two Bulk Erase Control registers located at 3C0004h
and 3C0005h. Code memory may be erased, portions at a time, or the user may erase the entire device in one action.
Bulk Erase operations will also clear any code-protect settings associated with the memory block being erased. Erase
options are detailed in Table 3-1. If data EEPROM is code-protected (CPD = 0), the user must request an erase of data
EEPROM (e.g., 0084h as shown in Table 3-1).
TABLE 3-1: BULK ERASE OPTIONS
The actual Bulk Erase function is a self-timed operation. Once the erase has started (falling edge of the 4th PGC after
the NOP command), serial execution will cease until the erase completes (Parameter P11). During this time, PGC may
continue to toggle but PGD must be held low.
The code sequence to erase the entire device is shown in Table and the flowchart is shown in Figure 3-1.
Description
Data
(3C0005h:3C0004h)
Chip Erase 3F8Fh
Erase Data EEPROM
(1)
0084h
Erase Boot Block 0081h
Erase Configuration Bits 0082h
Erase Code EEPROM Block 0 0180h
Erase Code EEPROM Block 1 0280h
Erase Code EEPROM Block 2 0480h
Erase Code EEPROM Block 3 0880h
Erase Code EEPROM Block 4 1080h
Erase Code EEPROM Block 5 2080h
Note 1: Selected devices only, see Section 3.3 “Data EEPROM Programming”.
Note: A Bulk Erase is the only way to reprogram code-protect bits from an ON state to an OFF state.