1.2.3 Device Not Detected or Device ID = 0x0000

If the microcontroller is not detected by the programmer, or an invalid device ID (such as 0x0000) is detected, then odds are that there is an electrical issue on the board. Verify that the wiring for the programmer is correct and there is continuity from the programming header to the I/O pin. A common ICSP issue is flipping the ICSPCLK and ICSPDAT lines.

Another possible cause is if a capacitor was placed on one of the programming lines, especially MCLR or RESET. Capacitance on these lines may cause unexpected behavior during programming or if the supply voltage (VDD) drops while running.

It is also possible for a Fuse or Config bit to cause programming failures. For example, some AVR devices have the option of changing the UPDI pin behavior, which prevents normal activation of UPDI for programming. Instead, UPDI must be activated with a High Voltage pulse into the pin. Not all programmers/debuggers support this; please consult the programmer documentation for more guidance.

Finally, some devices have the option for One Time Program (OTP). Once this is set, then the device cannot be reprogrammed or communicated with.