All Programmers

This list is all of the programmers I could find to program an AVR. Many are very similar, but the difference is to support some specific software requirement of the original designer. All of them work equally well if you are using something like avrdude, which supports them all.

It is obviously not the be-all end-all list, since it doesn't include the 100's of USB designs. It was intended to be a list of only the programmers one might reasonably be able to make from spare parts when in a pinch. Many are obsolete simply because the newer PC motherboards and Macs don't even have serial and parallel ports. For those of you in that situation (I am one) you should go to ebay and get order a $4 programmer from China. It might arrive before you need it!

BSD

The BSD is the simplest programmer available. It is also up with the best on speed. It takes a few minutes to get one running, but beware of cable length issues. They will be difficult to track down, but you can assume that if you are having problems, and the diagram was followed, the cable is too long. Increasing the value of the resistors can help cut ringing on longer cables, but you have to slow it down if you do that.

Schematic

All Programmers schematic

BASCOM

The BASCOM programmer is an unbuffered parallel port programmer similar to the STK-200. If has the same challenges with cable length, so the resistance should be tweaked to compensate.

BASCOM Schematic

All Programmers schematic

Buffered Multi-Voltage

The chief advantage of this programmer is its ability to protect both the target and the PC from odd voltages when one side is powered off. The buffers are open-drain, and each is pulled up to the Vcc of the receiving party. The MC74LCX07 has an operating Vcc rating of 2.0 to 5.5V. In addition, this programmer is the only buffered programmer that allows the PC and the target to operate at different power supply voltages. Great for working with 3.3V microprocessors on a 5V PC.

Schematic

Open Drain Buffered parallel port Atmel AVR programmer schematic diagram.

STK200

The STK200 is buffered to protect the ports and to give a little integrity to the signal. With the 74HC125 it can drive a longer cable than an unbuffered programmer, although the cable length still needs to be no longer than a foot or so. This is probably the most widely used parallel port programmer.

Schematic

All Programmers schematic

PonyProg STK200

The PonyProg is buffered, like the STK200, to protect the ports and to give a little snort to the signal. This programmer is an STK-200 with the addition of an LED, which is used by avrdude to tell us when it is programming.

Schematic

PonyProg schematic

DASA

The DASA is an RS-232 to TTL level shifter circuit, which is used by software to create an ISP interface. It is significantly slower than the parallel port programmers.

Schematic

DASA schematic

DASA-2

The DASA-2 is an RS-232 to TTL level shifter circuit, which is used by software to create an ISP interface. There is a transistor used to invert the reset line. If you have active reset circuitry, and if that circuitry is open collector, this programmer will draw less current from the serial port than a DASA programmer.

Schematic

DASA-2 schematic

DASA-3

The DASA-3 is an RS-232 to TTL level shifter circuit, which is used by software to create an ISP interface. There is a transistor used to invert the reset line. If you have active reset circuitry, and if that circuitry is open collector, this programmer will draw less current from the serial port than a DASA programmer. Otherwise, there is no advantage to the increased complexity.

Schematic

DASA-3 schematic

Serial Uploaders

Discrete RS232 Uploader

The Discrete RS232 Uploader is an RS-232 to TTL serial converter circuit, used to upload code from the Arduino environment, or as a serial port for an AVR.

Schematic

Discrete RS232 Uploader schematic

MAX232 Uploader

The MAX232 Uploader is an RS-232 to TTL serial converter circuit, made using a Maxim MAX232, and used to upload code from the Arduino environment, or as a serial port for an AVR. If you leave off C5 and the connection to the RESET line, it is just an RS-232 port for your AVR.

Schematic

MAX232 Uploader schematic

ArduinoISP

The ArduinoISP is a real USB to SPI converter with programming code in it. If you have an Arduino, you can have a programmer. With that programmer, you can burn a bootloader into another ATmega328 and have another Arduino. The one disappointment is the speed. The ArduinoISP is slow. It is slower than the serial port programmers we tested.

Schematic

ArduinoISP schematic

Serial Uploaders

FTDI-231X Uploader

The FTDI-231X Uploader is a USB to serial converter chip, and is often used as a means to upload code from the Arduino environment to an AVR with a bootloader. The bootloader does not have to be used exclusively by the Arduino environment, but can be used for your uploading your own hex code.

Schematic

FTDI-231X Uploader schematic

USB to TTL Cables

There are several manufacturers of these USB to serial cables. The only thing I would be concerned with is the fact that the FTDI cable pinout has become a sort of a standard, due to it's use on the Arduino. It is the one I use, but the others are probably no better or worse, and likely have the FTDI chip in them. Be wary of the ones having the CP2102. Some operating systems have no support at all for the CP2101, and the programmers will not work on those systems.

Schematic

USB Arduino AVR programmer

ArduinoISP

The ArduinoISP is a real USB to SPI converter with programming code in it. If you have an Arduino, you can have a programmer. With that programmer, you can burn a bootloader into another ATmega328 and have another Arduino. The one disappointment is the speed. The ArduinoISP is slow. It is slower than the serial port programmers we tested.

Schematic

ArduinoISP schematic

Serial Uploaders

FTDI-231X Uploader

The FTDI-231X Uploader is a USB to serial converter chip, and is often used as a means to upload code from the Arduino environment to an AVR with a bootloader. The bootloader does not have to be used exclusively by the Arduino environment, but can be used for your uploading your own hex code.

Schematic

FTDI-231X Uploader schematic

USB to TTL Cables

There are several manufacturers of these USB to serial cables. The only thing I would be concerned with is the fact that the FTDI cable pinout has become a sort of a standard, due to it's use on the Arduino. It is the one I use, but the others are probably no better or worse, and likely have the FTDI chip in them. Be wary of the ones having the CP2102. Some operating systems have no support at all for the CP2101, and the programmers will not work on those systems.

Schematic

USB Arduino AVR programmer

ATmega328 Standalone

This programmer is a parallel high-voltage programmer. High voltage is 12V. It's only purpose is to burn the fuses on ATmega328 devices. It resets them to factory default. It is a fairly involved circuit - not in complexity, but in the number of connections. It took a few hours to build this one.

Schematic

High voltage ATmega328 programmer schematic diagram.