Datasheet

PIC18F2XXX/4XXX FAMILY
DS39622L-page 14 2010 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 3-2 and the flowchart is shown in Figure 3-1.
TABLE 3-2: BULK ERASE COMMAND
SEQUENCE
FIGURE 3-1: BULK ERASE FLOW
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.
4-Bit
Command
Data
Payload
Core Instruction
0000
0000
0000
0000
0000
0000
1100
0000
0000
0000
0000
0000
0000
1100
0000
0000
0E 3C
6E F8
0E 00
6E F7
0E 05
6E F6
3F 3F
0E 3C
6E F8
0E 00
6E F7
0E 04
6E F6
8F 8F
00 00
00 00
MOVLW 3Ch
MOVWF TBLPTRU
MOVLW 00h
MOVWF TBLPTRH
MOVLW 05h
MOVWF TBLPTRL
Write 3F3Fh to 3C0005h
MOVLW 3Ch
MOVWF TBLPTRU
MOVLW 00h
MOVWF TBLPTRH
MOVLW 04h
MOVWF TBLPTRL
Write 8F8Fh TO 3C0004h
to erase entire
device.
NOP
Hold PGD low until
erase completes.
Start
Done
Write 8F8Fh to
3C0004h to Erase
Entire Device
Write 3F3Fh
Delay P11 + P10
Time
to 3C0005h