Arduino on a breadboard and Arduino as an ISP

Hi I need help getting an Arduino Nano (or "Sainsmart nano V3.0) working as an ISP for a ATMEGA328P-PU on a breadboard. A lot of the instructions for this specific to the Nano I got from http://www.martyncurrey.com/arduino-nano-as-an-isp-programmer/, basically just changing pin "SS" to 10, and making sure to change delay(40) to delay(20) as usual.

Problem is I can't get the programmer to work, the heartbeat works correctly but every time I try to program or burn a bootloader I get the warning light on and error "not in sync" with various response codes, 0x66, 0x83 and 0x03. Even just powering the standalone chip from the 5v and GND from the Nano does not result in a blink (nor from a blink sketch or the bootloader fast blink) on PB5.

Thanks in advance

In Tools\Programmer
you’re selecting ‘Arduino as ISP’?

And in Tools\Board you’re selecting _____ ?

Yes I’m selecting “Arduino as ISP” and using the “Arduino/Genuino Uno” option now that I have a 16MHz crystal. Previously when I didn’t have a crystal I was using the 8MHz Arduino on a breadboard from the 1.6.x boards.txt on the Arduino website

I have used the Arduino IDE version 1.0.5 and above, and uploaded the ArduinoISP sketch with no modifications, and it works just fine. I believe the idea of changing a delay was from a very old version of the IDE. After uploading the ArduinoISP sketch, disable the auto reset on the Nano. You can do this by adding a 10uF or bigger capacitor with neg or striped lead on GND and pos lead on the Nano RST pin.

Nano target pin 10 RST pin 11 MOSI pin 12 MISO pin 13 SCK GND GND 5V VCC

If you have a target chip which may have been programmed with fuses for an external crystal, but now you are trying to program it to use the internal oscillator, you may have to temporarily provide a clock signal to it while you program it with the new fuse values. You can do that by temporarily connecting a crystal, or Adafruit has a version of the ArduinoISP sketch which provides a clock signal from pin 9 of the programmer Arduino. You can google "adafruit github arduinoisp" to find it.

Thank you so much, using the Adafruit one which provides a clock worked perfectly, even worked without a cap across the reset pin! One last question, is using the internal oscillator very stable? Having uploaded a triple blink program to it to test if it works it seemed that every now and then it would skip a blink or a delay in places, however it may have just been my eyes playing tricks on me.

I believe internal oscillator is stable and reliable. The main difference you may notice is the frequency will vary depending on the VCC voltage and the temperature when using the internal oscillator. It will probably vary enough to make something like serial communication unreliable. But for stuff like blinking LEDs it should be very good.

If it skips a blink or delays, there may be a minor problem with your sketch, or your processor is resetting which could be caused by not having a pull up resistor on the reset pin or by not having adequate decoupling capacitors on each VCC connection. Or wiring is not solid.

Something to read http://www.gammon.com.au/breadboard

Ah okay I see, so it would possibly not be very suitable running on the internal oscillator for something as time sensitive as say the LED strips with only a single data line?

Well, I would tend to say controlling LED strips blinking is not time sensitive. If you're trying to communicate using a protocol to some other system such as a PC or another Arduino, that may be time sensitive.