Best ATMega328 programmer?

I have some ATMega328's that are preburned with the arduino bootloader. I have used my Uno as an ISP and it makes sense, but doesn't seem ideal. Is a FTDI Basic going to make my life easier? Would a USB to Serial breakout board would just let me plug in straight to the breadboard and upload a sketch, when I've connected all of the pins to eachother, just like I did when I used my UNO as an ISP?


Do I need a separate cable for these to connect to the breadboard? Or do I actually connect jumpers directly to it? Is using one of these the best way? Any information would help!

I just use a 5V FTDI Breakout Board. Pull the TX, RX out, connect DTR to RST via a 0.1uF cap, add VCC and GND and you're done.

Keep in mind though, if you ever plan on re-burning the bootloader, you'll have to set your Uno back into ISP mode to do that.

so would be a good choice? Do you use a special FTDI cable or anything or do you just pull the connections using some jumpers? I can't see a good picture of the connections so I was a little confused as to how to connect to them.

There's a 6-pin female header under the board (it's the last picture.) So you have to pull those pins out from your AtMega. If you're breadboarding them, just pull the 6 pins (RX, TX, DTR, VCC, and 2x GND) and line them up in the correct order for the break out board. You can either plug them right into the breakout board, or connect them with a 1x6 male header.

If you're building a custom board, break out those pins in a 1x6 header. See the attached image of a custom board I made recently (with an SMD AtMega 328P). There are two 1x headers on it, the bottom one is for the FTDI connection. The pins are, from left to right: DTR (goes to RST via 0.1uF cap), TX, RX, VCC, GND, GND.

The other headers are for a Nordic module (above the FTDI one), and in the lower right, for an SPI connection (so I can burn a bootloader since I buy the ICs without a bootloader, and I also burn fuses using that through AVR Studio.)


Awesome! Really appreciate the information.

I've used FTDI boards from both Sparkfun and from Adafruit. Both work fine. Sparkfun's uses a surface-mount connector, Ada's uses a through-hole type and so is mechanically more robust. I'm not usually too rough on things but I managed to break one from Sparkfun, the connector got pried away from the board and lifted a trace off the PCB. I was able to repair it, and I also used some super glue to attach the body of the connector to the board. I did buy a second one from Sparkfun before diagnosing and repairing the first, once I realized what happened, I worked a drop of super glue under the connector on the newer one as well, hoping to prevent a similar failure.

For ICSP, I've had nothing but good luck with Ada's USBtinyISP.

If I'm burning bootloaders or whatever on several chips, I use the USBtinyISP along with a target board from Evil Mad Science with a ZIF socket:

For breadboarding, I designed a pair of small PC boards that give me both the FTDI and ICSP connections:

I'll put in a good word for the Evil Mad Science ISP Shield for Arduino that I recently bought. This made sense for me since I had already dedicated a board to ArduinoISP for burning bootloaders. It can also be used, via the ICSP header, to flash a new HEX file (compiled sketch) to your chip using avrdude from the command line.


I like the FTDI Basic for downloading sketches into boards without a USB/Serial adapter built in (promini, or similar standalone builds).
I believe still carries the thru-hole version that has been very solid for me.

For downloading bootloaders into '328s, I use a Duemilanove with pins added next to the FTDI chip so the signals can be jumpered to the ICSP pins and burn bootloaders on the board. Will give westwf's optiload a try one of these days.
For 1284's on my Bobuino boards, I use the $13 AVR programmer from

Thanks for stopping me from re-inventing the wheel. Though I will more than likely convert it to SMD parts.

Thanks for all the info! I went with the FTDI Friend for now because I liked the way the female header looked. Really appreciate the help!

Thanks for all the info! I went with the FTDI Friend for now because I liked the way the female header looked. Really appreciate the help!

I would strongly suggest the same thing JC suggested, which is to place a drop of super glue under the header. It's very easy to bend it and lifting a trace.

There is also the Pololu USB AVR programmer. It is an ISP programmer, but also has a six pin header serial port which can be used to bootload Arduinos. It doesn't use the same pinout as the FTDI adapters from Sparkfun and ada, but you already have to solder to it, so a simple rerouteing of wires is easy. Do make sure to follow their instructions for installing the driver.

To use it as an ISP directly from the Arduino environment, just add theses three lines to the end of programmers.txt in /Arduino/hardware/arduino/ ISP v2

It's not the cheapest option, but a standalone ISP is nice compared to using another Arduino. They also sell it bundled with some of their controllers, including the Baby Orangutang.

As a side note, I don't work for Pololu, I'm promoting this option because I've been using it and it works well.

I also own the Pololu USB AVRISP II programmer and it is great. I just flashed my Baby Orangutan B-328 with the Uno bootloader earlier today. It flashed it in about 7 seconds. Plus, I have used it to program my Baby O, from the Arduino environment several times without a hitch. I got it for super cheap during a sale that was having on black friday. I think I paid 19.95 for the AVRISP II, and the Baby O. I couldn't pass it up. Alone the programmer is like 19.95 here is a link,