English
Language : 

PIC18F258 Datasheet, PDF (64/384 Pages) Microchip Technology – High Performance, 28/40-Pin Enhanced FLASH Microcontrollers with CAN
PIC18FXX8
5.5 Write Verify
Depending on the application, good programming
practice may dictate that the value written to the mem-
ory should be verified against the original value. This
should be used in applications where excessive writes
can stress bits near the specification limit.
Generally, a write failure will be a bit which was written
as a ’1’, but reads back as a ’0’ (due to leakage off the
cell).
5.6 Protection Against Spurious Write
There are conditions when the device may not want to
write to the data EEPROM memory. To protect against
spurious EEPROM writes, various mechanisms have
been built-in. On power-up, the WREN bit is cleared.
Also, the Power-up Timer (72 ms duration) prevents
EEPROM write.
The write initiate sequence and the WREN bit together
reduce the probability of an accidental write during
brown-out, power glitch, or software malfunction.
5.7 Operation During Code Protect
Data EEPROM memory has its own code protect
mechanism. External read and write operations are
disabled if either of these mechanisms are enabled.
The microcontroller itself can both read and write to the
internal data EEPROM, regardless of the state of the
code protect configuration bit. Refer to Section 24.0,
Special Features of the CPU for additional information.
5.8 Using the Data EEPROM
The data EEPROM is a high-endurance, byte address-
able array that has been optimized for the storage of
frequently changing information (e.g., program vari-
ables or other data that are updated often). Frequently
changing values will typically be updated more often
than specification D124 or D124A. If this is not the
case, an array refresh must be performed. For this rea-
son, variables that change infrequently (such as con-
stants, IDs, calibration, etc.) should be stored in FLASH
program memory. A simple data EEPROM refresh
routine is shown in Example 5-3.
Note:
If Data EEPROM is only used to store con-
stants and/or data that changes rarely, an
array refresh is likely not required. See
specification D124 or D124A.
EXAMPLE 5-3: DATA EEPROM REFRESH ROUTINE
Loop
clrf
bcf
bcf
bcf
bsf
bsf
movlw
movwf
movlw
movwf
bsf
btfsc
bra
EEADR
EECON1,CFGS
EECON1,EEPGD
INTCON,GIE
EECON1,WREN
EECON1,RD
55h
EECON2
AAh
EECON2
EECON1,WR
EECON1,WR
$-2
; Start at address 0
; Set for memory
; Set for Data EEPROM
; Disable interrupts
; Enable writes
; Loop to refresh array
; Read current address
;
; Write 55h
;
; Write AAh
; Set WR bit to begin write
; Wait for write to complete
incfsz EEADR,F
bra
Loop
; Increment address
; Not zero, do it again
bcf
EECON1,WREN
bsf
INTCON,GIE
; Disable writes
; Enable interrupts
DS41159B-page 62
Preliminary
 2002 Microchip Technology Inc.