Some different types of programmers that can be used for flashing AVR microcontrollers
On all boards developed by me, I'm using only the 6 Pin Variant.
My preferred programmer. It just works without problems and even very fast (writing 32 KiBytes in a little more than 6 seconds). It's default SCK clock is so fast that many of my AVRs can't handle it, therefore I have to use the -B 2 option.
See FastUSBasp for more info.
I bought this one at http://www.myavr.de
but I would not do so again. With the firmware delivered when I bought it, I
could not program the fuses with avrprog. It just said this memory type was
unsupported. What a stupidity. Maybe it would have worked with the provided
windows software, but it did not want to buy and install Windows just to
program AVR microcontrollers!
Meanwhile, with firmware version 2.5 it is sometimes (very unreliable) possible
to program the fuses.
This type of programmer is easy to build and very cheap. You basically need
(beside the DB-25 plug) a 74LS244 buffer and a 100 kΩ pull-up resistor.
The disadvantage: Modern computers often have no parport, and the use with
a USB to parallel converter will most likely not work because the timing
is not accurate enough (or it will work, but painfully slow).