Because once I was able to fix this problem by installing the Duemilanove bootloader instead of optiboot, I ran through a sequence of tests to see if the fuses somehow were becoming corrupted. This time, the problem again went away using the Duemilanove bootloader (without the diode). But unlike my previous experience, when optiboot was restored to the chip, the problem came back. I had to put the diode back for the board to work with optiboot.
What I conclude from this is that if I use optiboot, I need a signal diode to clamp the voltage on the RESET pin. But the diode is not required with the Duemilanove bootloader.
Output from fusebytes under various scenarios follow, just for the record.
Optiboot, no diode, latchup problem exists.
Compiled for ATmega328P
No Serial Number
Fuse bits (L/H/E): FF DE FD
Lock bits: CF
Signature: 1E 95 F (ATmega328P)
Oscal: A9
Fuse Low = 11111111 (FF)
||||++++______Low Power Crystal 8 - 16MHz
||++__________Start Up Time=11
|+____________Clock Output Disabled
+_____________(no divide)
Fuse High = 11011110 (DE)
|||||||+______Reset to Bootstrap
|||||++_______256 words (512 bytes)
||||+_________EEPROM Erased on chip erase
|||+__________Watchdog programmable
||+___________ISP programming enabled
|+____________DebugWire off
+_____________RST enabled
Fuse Extended = 11111101 (FD)
|||||+++______Brownout at 2.7V
Lock Bits = 11001111 (CF)
||||||++______Read/Write to everywhere
||||++________R/W Application
||++__________No Write to Boot, no read from App
Bootloader at 0x7E00 is not readable
Reinstall diode, problem is gone, no changes in fuses:
Compiled for ATmega328P
No Serial Number
Fuse bits (L/H/E): FF DE FD
Lock bits: CF
Signature: 1E 95 F (ATmega328P)
Oscal: A9
Fuse Low = 11111111 (FF)
||||++++______Low Power Crystal 8 - 16MHz
||++__________Start Up Time=11
|+____________Clock Output Disabled
+_____________(no divide)
Fuse High = 11011110 (DE)
|||||||+______Reset to Bootstrap
|||||++_______256 words (512 bytes)
||||+_________EEPROM Erased on chip erase
|||+__________Watchdog programmable
||+___________ISP programming enabled
|+____________DebugWire off
+_____________RST enabled
Fuse Extended = 11111101 (FD)
|||||+++______Brownout at 2.7V
Lock Bits = 11001111 (CF)
||||||++______Read/Write to everywhere
||||++________R/W Application
||++__________No Write to Boot, no read from App
Bootloader at 0x7E00 is not readable
Remove diode, overwrite bootloader with Duemilanove bootloader, problem gone:
Compiled for ATmega328P
No Serial Number
Fuse bits (L/H/E): FF DA FD
Lock bits: CF
Signature: 1E 95 F (ATmega328P)
Oscal: A9
Fuse Low = 11111111 (FF)
||||++++______Low Power Crystal 8 - 16MHz
||++__________Start Up Time=11
|+____________Clock Output Disabled
+_____________(no divide)
Fuse High = 11011010 (DA)
|||||||+______Reset to Bootstrap
|||||++_______1024 words (2048 bytes)
||||+_________EEPROM Erased on chip erase
|||+__________Watchdog programmable
||+___________ISP programming enabled
|+____________DebugWire off
+_____________RST enabled
Fuse Extended = 11111101 (FD)
|||||+++______Brownout at 2.7V
Lock Bits = 11001111 (CF)
||||||++______Read/Write to everywhere
||||++________R/W Application
||++__________No Write to Boot, no read from App
Bootloader at 0x7800 is not readable
No diode, overwrite bootloader with optiboot, problem has returned:
Compiled for ATmega328P
No Serial Number
Fuse bits (L/H/E): FF DE FD
Lock bits: CF
Signature: 1E 95 F (ATmega328P)
Oscal: A9
Fuse Low = 11111111 (FF)
||||++++______Low Power Crystal 8 - 16MHz
||++__________Start Up Time=11
|+____________Clock Output Disabled
+_____________(no divide)
Fuse High = 11011110 (DE)
|||||||+______Reset to Bootstrap
|||||++_______256 words (512 bytes)
||||+_________EEPROM Erased on chip erase
|||+__________Watchdog programmable
||+___________ISP programming enabled
|+____________DebugWire off
+_____________RST enabled
Fuse Extended = 11111101 (FD)
|||||+++______Brownout at 2.7V
Lock Bits = 11001111 (CF)
||||||++______Read/Write to everywhere
||||++________R/W Application
||++__________No Write to Boot, no read from App
Bootloader at 0x7E00 is not readable