Best way to program a bare 328P?

I'm done programming my 16mhz ATMEGA328P prototype with the Arduino IDE in the standard manner via FTDI. Now I'd like to get onto designing the end user board that will have a bare ATMEGA328P. All I'd like to do is flash my program (.hex) and get the fuses set on the bare MPU (I think this is all I'll need). I'd rather not have a bootloader on the end user boards unless it greatly simplifies the MPU programming.

From web browsing for quite a while, there seem to be a number of ways to go about doing this. Any recommendations?

I'm looking for simplicity and least risk of problems (missing PC drivers, etc.). I'm on a Windows 7 64 bit platform. If I also need to purchase some ISP programmer, so be it.

Also, what MPU pins should I be sure to have access to for programming the final board?

Finally, you Arduino experts are a great wealth of knowledge, I hope to be able to contribute myself when I can.


I just use my arduino as an ISP programmer, power, ground, 4 data lines, done

Or bite the bullet and spend a few bucks for a USB ISP programmer, there are many cheap ones these days that work just fine, either within the arduino IDE (and then use the upload sktech using programmer option) or directly with AVRDUDE in command line mode.

Here is one I got last month that seems to work just fine, $5 + shipping.


My bare bones board notes:

I have Atmel AVR ISP MKii and use it for everything. 328P, 1284P, 2560. Put an ICSP header on your board to plug it onto. Does not suppy power, only monitors it. Can be hacked to supply power, I haven't bothered.

Use ArduinoISP if you won't be programming chips very often, otherwise buy an ISP. Include a 6-pin ICSP header on your board. In your hardware design, make sure nothing will be driving the MOSI, MISO or SCLK pins during programming, and that nothing will object to seeing signals on those pins.

If you are using your Arduino as ISP, I would recommend the TinyISP sketch. Using that, you will be able to have debug capabilities without extra hardware, and wire fiddling.

dc42: Use ArduinoISP if you won't be programming chips very often, otherwise buy an ISP.

eh, I use 168's with the isp programmed on them and bolt them onto pogo pin jigs for boards I will make more than one of, cost about the same and I dont have to waste money on connectors that get used once and never seen again

This shield with ZIF works flawlessly: