Flashing a ATmega328 that came from an Arduino to not use an external oscillator I have a ATmega328p chip from a kit that was supposed to be an Arduino compatible thing. I decided to go beyond Arduino and try to program the chip directly. I setup an UNO as an Arduino ISP, more or less like the image here, but added some LEDs to pins 8, 9 and 10 for feedback.



This image has this caption.


  Because no external clock source is connected, the ATmega must be configured to use its internal clock.


I think this chip was flashed with whatever tells it to use an external oscillator. And I do not have an external oscillator. 

So how can I tell the chip to again use an internal oscillator when using an UNO as my programmer?

» avrdude -p m328p -c avrisp -b 19200 -P /dev/cu.usbmodem1d11121

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.05s

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.


I assume a device id of zero means the chip is not responding with data? because it's core is not cycling?

Do I need an oscillator installed just so I can wake it it up and tell it to not use an oscillator?
Do I need an oscillator installed just so I can wake it it up and tell it to not use an oscillator?


Yes, yes you do.

Pick up a 8-16MHz crystal (not an oscillator) and two 15pF capacitors and use very, very short wires to connect them to the chip as shown in the "System Clock and Clock Options" section of the '328P datasheet. You will then be able to reprogram the fuses using AVRDUDE.