Adding Shiftregisters to an Attiny10

I have a problem: if I underuse a microcontroller, i feel uncomfortable. So if I see a project with an Arduino or standalone Atmega328 that uses only say 2 pins, I start thinking ‘Attiny’. But even then I would feel bad only using 2 pins of say an attiny85.

For a summer project for a friends daughter, she needed a number of LED’s to flash (on a costume). Well great for an Atmega328, after all that has a lot of pins, but then using an Atmega328 just to flash some LED’s? When it can do so much more? Plus, I had my bare Atmega328 chips already destined for other projects.

I had Attiny85 and Attiny13 chips, the latter being a great candidate… but that only has 4 pins to drive LED’s with, so i was thinking ‘Shift Register’. I still had some 595’s and 164’s.
But they need about 3 pins ‘underusing’ the Attiny13.
Anyway… I had an Attiny10, just one that I had been playing with.
Now I would not really suggest anyone to get these as even at aliexpress they are relatively expensive: I saw 10 for about 8 USD, while for about 1.60 USD one can already get a pro-mini. I might be anal retentive but I am not stupid. If you are lucky enough to frequent Japan though, they are available there for only 35 cts (eurocents).
Also they are in SOT23-6 which makes soldering difficult. And they cannot be programmed via ICSP like the Attiny85.
Mine however came from a guy who had bought a couple of them and gave me one to play with.
So, plenty of reasons to skip this chip, but as I had one, I saw it as a challenge to use it.
The circuit I used is pretty standard:
There are SOT23 to DIL adapters but they are kinda expensive plus that seemed defeating the purpose of using a small chip, so for testing and programming I etched a small board (I know, will probably never use it again) with a  clothes-pin as main ingredient (to keep the attiny10 in place). For the resistors I used sip packages.

Programming the Attiny10 is not done through ICSP but  through TPI. TPI programming can be done roughly via 3 ways:

  • A commercial AVR programmer (STK or AVRISP)
  • An FTDI break out board that has DTR CTS and RTS broken out
  • Your Arduino.

I opted for the latter and this is how to do that.

attiny10Connect the Attiny10 with digital pins D10-D13 as indicated in the circuit to the right.

Then you need the programming firmware. This has been developed by Keri Duprey. The latest version can be found here:

ATtiny4_5_9_10_20_40Programmer.ino or check here. The latter code does not program the Attiny20 or Attiny40, but solved some hickups in the former code

The former program can be used standalone or with a GUI that can be found here:
GUI: ATTiny4_5_9_10_20_40_Programmer.jar

The program  expects a hex file to be copied in the serial monitor. If you are using the GUI, it just lets you upload the hex file.

If you prefer to program the Attiny with an FTDI brak-out board, check this blog. Further interesting reading is found here.