Categories
electronics

Smallest ATTiny45 USB

A progress report on building an ATTiny45-20 based USB dongle that speaks!

USB ATTiny45-20
USB ATTiny45-20


Just wanted to report on completing a quick electronics prototyping project – making a very tiny ATTiny45-based simple USB dongle.

I used the blueprints from here: http://macetech.com/blog/?q=node/46
Printed the thing on the Roland Modela in the Media Lab shop, stuffed it with components obtained from DigiKey (links) there are only 5…, and programmed with a combination of the code from macetech and this instructables tutorial, and voilla – it works.
The advantage of the ATTiny45-20 (as opposed to the 45 not ’20’, e.g. ’10’) is that it works at 5V, which is what you get from USB, and also has an internal oscillator and PLL that can go over 20MHz (@ 4.5V-5.5V), which surpasses the USB’s requirements of 16MHz. The ATTinyX5-10 will not do, as it doesn’t go over 10MHz. So basically this chip is all you need to create a USB device, how awesome is that?
This is the image I used for cutting out the board (it is to-scale at 500 DPI, meaning you can use it to mill your own board). The red marking can be used for cutting out the board:

Milling instructions for the Modela
Milling instructions for the Modela


To program it I used a SOIC-8 (the ATTiny25/45/85 package) “clip”, very useful thing!! You can program it after soldering it down to the board with all components. Sadly I couldn’t program when the USB was connected to anything, and had to use a 5V power supply.

ISP clip for SOIC-8, and power supply for the VCC and GND
ISP clip for SOIC-8, and power supply for the VCC and GND


For the actual programming I used the ubiquitous AVR mkII ISP with a makeshift 6-pin header for the ISP that connects to the 6 relevant pins on the SOIC-8 clip:

AVR mkII ISP connected to the SOIC8 clip
AVR mkII ISP connected to the SOIC8 clip


To prepare the connector I used this sheet I made:

Chart to help with connecting the USB Tiny to the ISP programmer
Chart to help with connecting the USB Tiny to the ISP programmer


Lessons I learned:

  • Again, check everything about the ISP programmer wiring. After you’re done checking – check again and use a multimeter.
  • pull-up resistor on RESET pin in unnecessary. Sometimes the mkII will say to check it, so then you should know the problem is elsewhere
  • DO NOT CONNECT TO USB to power the chip – use external 5v power supply. This is the only way I got mine to work. Apparently something is still going on in the D+ and D- USB lines, and it interferes with programming since the pins are shared.
  • fuses need to be: “-U lfuse:w:0xd1:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m” (PLL clock high-speed – 16MHz, no DIV/8). Use fusecalc: http://www.engbedded.com/fusecalc/

Leave a Reply

Your email address will not be published. Required fields are marked *