Help with Arduino-compatible minimal board (ATmega328)


I’m trying to follow the very clear tutorial that Nick Gammon posted here: Gammon Forum : Electronics : Microprocessors : How to make an Arduino-compatible minimal board

Basically I am trying to build the Arduino compatible minimal board starting with detecting the microcontroller type but have had zero success with the first step (detection). I only get the “Atmega chip detector.” message. I triple checked all connections. I tried the detection with a vanilla ATmega328P chip as well as with a verified to be working ATmega328P chip that has the Arduino bootloader preloaded. I’m using the Arduino Uno board for running the sketch.

Is there any troubleshooting guide or any hint that anyone can provide to help me understand what I’m doing wrong? It looks like the programAcknowledge response is never received. I’m attaching a picture of the wiring, I hope it’s clear enough.

Thanks in advance,

Try the Shrimp.It blog or my blog My Python Projects: Make your own cheap and customizable DIY Arduino : Shrimpduino. I have done it on about 10 Atmega328s it works perfectly well.

If your chip isn't virgin (eg. came with a bootloader pre-loaded) then it will need an external clock to be able to program it.

If your chip isn't virgin (eg. came with a bootloader pre-loaded) then it will need an external clock to be able to program it.

He does appear to be using the external clock to pin 9.

Yes, I connected pin D9 from the Arduino to pin 9 on the ATmega.

As for Shrimp.It - I appreciate that there are other ways to accomplish the same thing but I wanted to understand what is incorrect with my wiring/setup first. I know the reset signal gets sent because I wired an LED in the middle to verify that. I also know that the programAcknowledge signal is not received because I printed debug messages to the serial port. However, I’m not sure what other debug or problem isolation methods would be effective in this case to figure out why the “acknowledge” is not received. Any hint/tip would be appreciated.


I had an interesting development today and I wonder if it can give anyone an idea on what's going on.

I swapped the ATmega328 on the Arduino board with the one from the breadboard. I had no problem programming the one from the breadboard when it was sitting on the original Arduino board (as expected). Then I ran the board detection program and it worked! I saw all the details printed into the serial monitor window for the chip that used to sit on the Arduino board and was now sitting on the breadboard.

I then swapped the two chips back and tried the program again and this time it did not work (per my original problem).

What could be the explanation for that? Does anyone have an idea what I should be looking at? What could the difference between the two chips be when it comes to the basic detection? I know I can program both chips so I'm not sure what's going on.