Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

In stock 43 in stock
19.95 1+ units
17.96 10+ units
15.96 100+ units

Description: The ATtiny45 and 85 are a couple of really cool little MCUs but did you know you can program them in Arduino? That's right, now you can shrink your Arduino projects down to "tiny size" by moving your code straight over to these small but capable ICs. The standard method for programming the ATtiny ICs involves a breadboard, lots of jumper wires and a hardware programmer, but David Mellis over at MIT Media Lab has simplified the process by laying out this handy USB programmer.

The Tiny AVR Programmer plugs directly into your USB port and provides a programming socket for the ATTiny45 and 85. Just slot an ATtiny into the socket, plug the programmer into your USB port and start up the Arduino IDE. After installing the proper board definitions, you simply program it the same way you would any other Arduino board. The programmer even breaks out the IC pins to female headers so you can easily prototype around the ATtiny without pulling and plugging it over and over. There are two ISP headers that have also been broken out so you can use the programmer of solder in a 6-pin header for other AVR microcontrollers!

Note: You'll need to install the USBTinyISP drivers if you don't have them yet, you can find them in the documents below!


Comments 27 comments

  • Works great! I’ve used it to program not only the ATtiny85, but the ATMEGA328P as well, via ICSP port.

    The only thing that threw me for a loop was that it doesn’t give a /dev/ device filename, even though the Mac OS X sees it on the USB bus.

    Arduino 1.5.x gave me some issues complaining about not being able to connect to a usb port at first, but choosing USBtinyISP works fine, just need to make sure no actual PORT is selected.

    Only wished it was better protected. On receiving mine, wrapped it up from the USB port to the first row of sockets with kapton tape to protect the chips from shorts.

  • This Tiny AVR Programmer makes programming the ATtiny85 chip for my project so much easier. I love it! However, I recently ran into a problem. I just tried loading some new sketches using Arduino IDE v1.0.5 on a Win7 64-bit machine and I get a verification error. I have used this machine and software many times before without problems. IT appears from my searches that this indicates some kind of communication breakdown between the programmer and the computer. The onboard LED does show communication activity. I have tried two different chips. I have tried burning bootloader in case fuses had been changed. I tried reloading the drivers and core files.

    Any ideas about how to fix? Is this a problem on the board or have my chips failed?

    here is the verbose upload output:

    Binary sketch size: 844 bytes (of a 8,192 byte maximum) C:\Program Files (x86)\Arduino\hardware/tools/avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny85 -cusbtiny -Uflash:w:C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex:i

    avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36 Copyright © 2000-2005 Brian Dean, Copyright © 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf"
         Using Port                    : lpt1
         Using Programmer              : usbtiny

    avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\.\libusb0-0001–0x1781-0x0c9f AVR Part : ATtiny85 Chip Erase delay : 4500 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     6     4    0 no        512    4      0  4000  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6    32    0 yes      8192   64    128  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
         Programmer Type : USBtiny
         Description     : USBtiny simple USB programmer,

    avrdude: programmer operation not supported

    avrdude: Using SCK period of 10 usec CMD: [ac 53 00 00] [00 00 53 00] avrdude: AVR device initialized and ready to accept instructions

    Reading | CMD: [30 00 00 00] [00 30 00 1e] CMD: [30 00 01 00] [00 30 00 93]

    ##########CMD: [30 00 02 00] [00 30 00 0b]
    ############################ | 100% 0.01s

    avrdude: Device signature = 0x1e930b avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. CMD: [a0 01 fc 00] [00 a0 01 ff] CMD: [a0 01 fd 00] [00 a0 01 ff] CMD: [a0 01 fe 00] [00 a0 01 ff] CMD: [a0 01 ff 00] [00 a0 01 ff] avrdude: erasing chip CMD: [ac 80 00 00] [00 ac 80 00] avrdude: Using SCK period of 10 usec CMD: [ac 53 00 00] [00 ac 53 00] avrdude: reading input file “C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex” avrdude: writing flash (844 bytes):

    Writing | CMD: [4c 00 00 00] [20 4c 00 00]

    CMD: [4c 00 20 00] [f7 4c 00 20]

    CMD: [4c 00 40 00] [24 4c 00 40]

    CMD: [4c 00 60 00] [01 4c 00 60]

    CMD: [4c 00 80 00] [00 4c 00 80]

    CMD: [4c 00 a0 00] [3f 4c 00 a0]

    CMD: [4c 00 c0 00] [00 4c 00 c0]

    CMD: [4c 00 e0 00] [40 4c 00 e0]

    CMD: [4c 01 00 00] [bf 4c 01 00]

    CMD: [4c 01 20 00] [91 4c 01 20]

    CMD: [4c 01 40 00] [93 4c 01 40]

    CMD: [4c 01 60 00] [c0 4c 01 60]

    CMD: [4c 01 80 00] [97 4c 01 80]

    CMD: [4c 01 a0 00] [00 4c 01 a0]

    | 100% 1.84s

    avrdude: 844 bytes of flash written avrdude: verifying flash memory against C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex: avrdude: load data flash data from input file C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex: avrdude: input file C:\Users\Krist\AppData\Local\Temp\build282759822894877516.tmp\ATtiny85_Blink.cpp.hex contains 844 bytes avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 1.11s

    avrdude: verifying … avrdude: verification error, first mismatch at byte 0x0080 0x57 != 0xe1 avrdude: verification error; content mismatch

    avrdude done. Thank you.

  • Uploading seems to be impossible with a USB3 port on at least on newer Mac laptops that only have USB3. This seems to be a common problem with USBTinyISP products. Discussion on Adafruit forum about this: This can be usually fixed with connecting the board through a USB2 hub.

    It might be a good idea to add to the tutorial that you can set the fuses of a ATtiny85 to 8 MHz by selecting the “internal 8 MHz clock option” and then using “burn bootloader” from the Arduino IDE.

  • How do you configure the ATTiny85 to use it’s 16mHz internal clock with the Tiny AVR Programmer?

  • Do i need USB drivers when I run the Arduino IDE on Ubuntu 64 Bit?

    • RTFM … sorry for the question. The answer is NO: :-)

  • You guys would be my heroes if you’d make a bigger version that could program 14 and 20 pin ATtiny chips. I’m using the ISP header on this to do that now. But if you’d make one device that could do it all, I’d happily buy it.

    • To keep the cost down we don’t plan on increasing the size of the PCB. But you can program 14 and 20 pin ATtinys - you just have to wire from the 6-pin connector on the end to the ICSP pins on the micros.

  • This has a small problem. You are going to push the far end to insert it. But since the jumper connector is surface mounted, there is little holding it on, so it will break off (and damage the pins).

    You should add some kind of glue to support it our use thru-hole parts that won’t break off. You need the thru-holes anyway for the 8 pin socket.

  • Is the ISP header used to program external devices, or to load code from an external programmer onto the ATTINY84 on the PCB? Or both?

    • Both. As-is for external devices, short the RST jumpers for ATTTiny84. Though I can’t think of a reason to reprogram the 84. It works very nicely as is.

      I’ve used this both for ATTiny85s and to reprogram the LCD serial pack with firmware that actually works. In that case I used avrdude in command line mode to download a prebuilt hex file. Great product.

  • The extra pins to the side make it easy if you use a crystal (for exact timing). I often solder them onto the side, but I have an application that doesn’t need that much precision, so I could changes the fuse settings back more easily.

    To do the HV stuff, you need an AVR Dragon. That is what I used before.

  • I entirely made an adapter for the programmer that I got from Adafruit. As for the HV fuses….I made an adapter for the Arduino HV Rescue shield to fit the ATtinys. But that was a few years ago…not even sure I still have it.

  • I wish it had a High Voltage programming capability to reset fuses (in case other methods of programming are disabled)

  • Shouldn’t it say somewhere, that this replaces PGM-11460…

  • The tie points on this aren’t as secure as I’d like them to be. I think this thing would be much easier to use if it used the wire wrap through-headers to just attach it to a breadboard. I can use a M-F USB extender cable for flexible connection to a computer.

    I don’t even need the headers soldered in, throw the long head headers in the bag and I can solder it myself.

    • Buy the 8-pin wire wrap socket below (PRT-08112) and some solder wick. Problem solved. They can’t make products to suit every taste or need, but they try their best. The rest is left to ‘maker’ ingenuity, and if you can’t manage that, well…

  • I like how on the schematic, it says “3x2 connector can be”. Also kind of wondering how they get the code into the ATtiny84.

    • They (not SparkFun) make ZIF sockets for SMT ICs that you can use to program bare chips before they’re soldered in place.

  • This board already uses through-hole parts, so why continue with the SMT machine pin headers? Wouldn’t the through-hole version be more resistant against mechanical stress?

    • I’ve been using mine for months with no connector issues. It’s plenty tough.

    • It’s cheaper to use the SMT version since they can be autopopulated by the pick and place machine.

      • That being said, they’re already leaving the 2x3 ICSP header unpopulated. They could have done the same with the two 1x4s. Maybe toss them in the package to be populated by the user if they want them. Or hell, leave them out and make them separately orderable.

        That said, the DIP-8 socket is already through-hole. they could easily make the 1x4s through-hole, insert all four headers in the board, flip it over, and solder them all real quick, all at once. And that’s assuming they’re doing the through-hole soldering by hand instead of using a wave-soldering machine. (which is really cool to watch in-use, btw)

Related Products