Cara, eu gravo meus atmega com um cabo paralelo e 3 resistores (1K, 1K e 10K). Muito tranquilo, e é razoavelmente rapido (grava um ATMEGA8 totalmente em cerca de 3 segundos). Eu soldei os 2 resistores de 1K no proprio cabo (em série) e o 10K fica de pull-up no RESET do atmega. Só alimentar com 5V, plugar o cabo (5 vias necessárias: MISO, MOSI, SCK, RESET, GND) e pronto.
monte o cabo a partir desse link:
http://www.captain.at/electronics/atmel-programmer/
e use o AVRDUDE.EXE para gravar, ele vem junto com o pacote WINAVR que vc baixa da internet.
com o AVRDUDE vc programa também tudo q precisar, fusíveis, eeprom, lê a calibração de fábrica dos osciladores internos do chip, etc. Eu tenho as command lines prontas:
gravar flash:
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U flash:w:program.hex
gravar eeprom:
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U eeprom:w:program.eep
ler fusiveis
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U lfuse:r:lfuse.hex
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U hfuse:r:hfuse.hex
gravar fusiveis
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U lfuse:w:lfuse.hex
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U hfuse:w:hfuse.hex
ler calibração:
avrdude.exe -p ATmega8 -c dapa -P lpt1 -v -u -U calibration:r:calibration.hex
não esquece de instalar o "install_give_io.bat" que tem na mesma pasta bin/ do WinAvr