PIC18F2331/2431/4331/4431
The long write is necessary for programming the
8.5
Writing to Flash Program Memory
internal Flash. Instruction execution is halted while in a
long write cycle. The long write will be terminated by
the internal programming timer.
The programming block size is 4 words or 8 bytes.
Word or byte programming is not supported.
Table writes are used internally to load the holding
registers needed to program the Flash memory. There
are 8 holding registers used by the table writes for
programming.
The EEPROM on-chip timer controls the write time.
The write/erase voltages are generated by an on-chip
charge pump, rated to operate over the voltage range
of the device.
Since the Table Latch (TABLAT) is only a single byte,
the TBLWT instruction has to be executed 8 times for
each programming operation. All of the table write
operations will essentially be short writes, because only
the holding registers are written. At the end of updating
8 registers, the EECON1 register must be written to, to
start the programming operation with a long write.
Note:
The default value of the holding registers
on device Resets and after write operations
is FFh. A write of FFh to a holding register
does not modify that byte. This means that
individual bytes of program memory may
be modified, provided that the modification
does not attempt to change any bit from a
‘0’ to a ‘1’. When modifying individual
bytes, it is not necessary to load all 64 hold-
ing registers before executing a write
operation.
FIGURE 8-5:
TABLE WRITES TO FLASH PROGRAM MEMORY
TABLAT
Write Register
8
8
8
8
TBLPTR = xxxxx0
TBLPTR = xxxxx2
Holding Register Holding Register
TBLPTR = xxxxx7
TBLPTR = xxxxx1
Holding Register
Holding Register
Program Memory
2010 Microchip Technology Inc.
DS39616D-page 91