# PIC EEPROM after re-programming

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) returns true 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
• Typically the flash used for the program memory will wear out before the EEPROM does. Mar 20 '15 at 11:43
• I'm, indeed, using a PICKit3 (added it to the question). And I didn't know that, but will it theoretically add up? Or well, does "Preserve EEPROM" mean it re-writes the EEPROM?
– Paul
Mar 20 '15 at 12:29
• I've always understood the "preserve EEPROM" setting to mean that the EEPROM is left alone and ignored, not that it gets read out, erased and then re-programmed... Mar 20 '15 at 12:54
• Hmm, I somehow thought my output window echo'd something like: Programming areas: 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 or undefined?
– Paul
Mar 23 '15 at 20:47
• 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 says area(s) will be programmed ~ EEData memory
– Paul
Mar 26 '15 at 12:31