AVR programmer & SPI interface

Introduction

This is documentation for a simple open-source USB AVR programmer and SPI interface. It is low cost, easy to make, works great with avrdude, is AVRStudio-compatible and tested under Windows, Linux and MacOS X. Perfect for students and beginners, or as a backup programmer.

The project is based off of the USBtiny code & design. The main improvements are: adjusting the code to allow it to act as a SpokePOV interface, adding lowlevel bitbang commands, and addition of a "USB good" LED. Other changes are new VID/PID (to make it official), removing some of the commands, and moving around the pins a bit.

You can build this design using the schematic and firmware, or buy a kit from the Adafruit webshop. Having a full kit available solves the "chicken & egg" problem of purchasing or building a USB programmer that then needs a programmer of some sort to 'kick start'. (See USBasp, AVRdoper, USBprog)

All the firmware code is distributed under the GPL, the hardware design layout files are CC 2.5 Attrib./Share-alike.

What's so great about it?

Easy to make

  • Ultra low cost: programmer is $16 in parts, less than half the price of the AVRISP v2 ! (Kits are $22 and available from the adafruit shop.)
  • Kit comes with both 6-pin and 10-pin AVR-standard connectors and cables. Almost no programmers that are not from Atmel have both! (Including the AVRISP v2)
  • Easy to build: All through-hole parts, all common and available from large distributors.

Easy to use

  • AVRdude compatible - support for usbtiny added in v5.5!
  • USB drivers available for Windows using libusb, no drivers needed for Mac OS X or Linux.
  • Durable off-the-shelf enclosure
  • High speed! Max clock rate is 400KHz. Write speed:1Kb/s, read speed: 2Kb/s. (Atmega8 takes 8s to write, 4s to read/verify)
  • 2 LEDs to indicate "USB/Power good" and "Busy"
  • I/O is buffered to allow programming of 2V-6V targets (v2)
  • Works with any AVR ISP chip with 64K of flash (or less) - does not work with Atmega1281/1280/2561/2560

Easy to power

  • Powered off of 5V USB bus at less than 100mA to allow it to be used with unpowered USB hubs
  • Easily accessable jumper to power target project off of USB (target must be 5V tolerant, of course)
  • Remove the jumper and it will self-power but buffer the I/O to match the target device. (v2)

Easy to extend

  • Easily interfaced with libusb
  • Existing firmware allows for fast SPI interfacing using USB
  • Bit-bang commands provide 8 bits of I/O control (including LED) for open-ended project ideas

This guide was first published on Jun 10, 2013. It was last updated on Mar 08, 2024.

This page (Overview) was last updated on Apr 02, 2013.

Text editor powered by tinymce.