# Have I bricked my ATMEGA3328p by setting

I was playing around with setting the "system clock prescalar" (CLKPR).

I'm now in a situation where I can see that the clock is 244.9KHz, using my logic analyser and the "Clock output on PORTB0" fuse. (I am also using the /8 fuse.)

My code is still running on the ATMEGA, even after powering off/on.

AVRdude will no longer let me write to it, either to the flash or the to the fuses.

\$ avrdude -p atmega328p -c avrispmkII -P usb -U flash:w:main.hex -F

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: Unknown status 0x00
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x88ab81
avrdude: Expected signature for ATmega328P is 1E 95 0F
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.

avrdude done.  Thank you.


Is there a failure mode where setting the AVR's clock too slow can make it unprogrammable?

The device's signature seems to have changed, it now randomly takes values which include:

• 0x888b02
• 0x88ab81
• 0x886bf8
• 0x888b02

I have already tried powering-off the ATMEGA and the AVR ISP MK-II.

Is there any way to fix this chip?

You can lower the programming clock speed by using the -B switch in avrdude, provided that you programmer hardware supports it.