GarageGeek:
I took a brief look at programmers (starting with JoeN's AVR ISP II recommendation). It seems like I can spend anywhere from $10 to $150+.
What features are important?
Is the software provided with most programmers?
The IDE calls the avrdude program to upload the compiled sketch to the board/AVR.
avrdude knows how to talk to most programmers.
As long as the programmer is supported by avrdude then the IDE can use the programmer
to program the chip.
avrdude supports pretty much all the AVR programmers out there.
To name a few:
AVRisp mkII
AVR JTAGice
USBasp
USBTiny
AVR Dragon
PC parallel port
All of those above except for Dragon are now supported by the IDE
out of the box. You can always go in and modify the programmers.txt file to add support
for other programmers that avrdude supports like AVR Dragon.
So for all those above, there is no additional software needed.
The biggest difference in the programmers is some of the capabilities.
For example, devices like the AVR dragon can do high voltage programming
which is used to erase a part when the fuses have been set to not allow the ISP interface to do this.
Other devices like the Dragon and the JTAGice allow source level debugging.
While it is possible to source level debug when using the Arduino IDE, it isn't automated
nor particularly easy since the IDE doesn't have any built in support for this type of debugging.
The dragon has an area on the board where you can solder in a ZIF socket and then
with the addition of some jumpers you can make the Dragon into a standalone programmer.
The Arduino IDE would be able to use it since avrdude would be used to program the parts.
Me personally, I wouldn't want a programmer that didn't work with avrdude
since having avrdude support means it can used from both the Arduino IDE and the commandline.
Another thing to pay close attention to is target voltage.
Some can power the target and some can't.
Nearly all the programmers that can supply target voltage
have a jumper to enable/disable this however, some of the USBasp programmers have the target voltage permanently
enabled. (But you can easily modify it to put the header back in to allow using a jumper).
I have a Dragon but I usually use my $6 USBasp kk multicopter programmer that I got off Ebay.
It is actually faster at programming than the Dragon.
I like the kk multicopter version since it uses a 6 pin cable and requires no adapters.
As a word of caution, if you get a dragon, and you intend to use it burn bootloaders using the IDE,
it will not work. "As is", today, the Arduino IDE cannot burn a bootloader using the Dragon.
Here is the bug report on it: Google Code Archive - Long-term storage for Google Code Project Hosting.
Bottom line is that if using the dragon, you have to modify the IDE or avrdude in order to be
able to use the IDE to burn a bootloader.
(I use avrdude with the patch I suggested in the savannah bug report - it is only about 6 lines of code)
I think the best value for the money are the USBasp programmers.
For doing simple programming or burning bootloaders in chips like
m328 or Attinys it's hard to beat.
If you go that route and need a 6 pin ISP connector,
make sure you get one with a 6 pin header/cable or get an adapter
or cable for the 6 pin header since most of the USBasp devices
come with a 10 pin header.
--- bill