I was trying to get my EEPROM read/write working on my PIC.
I first programmed a write cycle, and then reprogrammed it to read it out. (To avoid writing every time I start the program/pic)
But I luckily found out that re-programming your PIC causes EEPROM to get... changed? I found a way to fix this, by using the setting "Preserve EEPROM".
My questions on this are:
- Does "Preserve EEPROM" write the EEPROM everytime you program your chip? (So re-programming a million times will break EEPROM theoretically)
- What value is EEPROM after it's programmed...
(val != 0xFF)
returnstrue
Can I say it's corrupted after programming, or does it get a default value I could check on?
Using: (though it's more theoretical)
- MPLAB X IDE
- PICKIT3
- PIC18F66K22
1 Answer 1
'Preserve EEPROM' suggests EEPROM content is not changed when chip is reprogrammed. I am not sure if it means the memory is not touched at all during the process. I might involve Pickit reading the data EEPROM, erasing the whole chip, programming the chip, then writing the data EEPROM with the old values.
If you are using Programmer-to-Go mode of Pickit, preserving EEPROM may not work like this.
If you have the CPD (Data EEPROM code-protected) fuse set, then Pickit can't read the EEPROM. You can work around this with 'Erase Configuration Bits' command.
Also a discussion at Microchip suggested that 'Erase all before programming' option overrides the 'Preserve EEPROM' setting.
-
\$\begingroup\$ Still not sure if it does re-write it. But it actually doesn't matter that much, as the flash memory is probably worn out earlier. \$\endgroup\$aaa– aaa2015年04月20日 10:02:37 +00:00Commented Apr 20, 2015 at 10:02
Flash (0x00 to 0xFF) EEPROM
. But I'm unable to replicate this. Using preserve EEPROM does not have any disadvantages? What about the value of the EEPROM after programming (withouth preserve), is it 0xFF orundefined
? \$\endgroup\$The following memory area(s) will be programmed: program memory: start address = 0x0, end address = 0x347f configuration memory EEData memory
Programmer output when programming the chip... ...for me it looks like it's 'rewriting' the EEPROM. As it saysarea(s) will be programmed
~EEData memory
\$\endgroup\$