I had the genius idea of stripping cheap ATTiny85 chips from their boards on a Digispark and integrating them onto my own boards because they are easier to program on a board, and when I'm happy with the result, I can just place it on another board, and voila! Everything should work. Unfortunately, things weren't as easy as I expected.

Figure 1. Digispark

The first issue was that the circuit did not work,

So now I am stuck with a SMD ATTiny85 with no means of reprogramming it. I thought about soldering wires to the traces, which frankly isn't too difficult since the traces were quite spaced apart, however I wouldn't be able to change other parts of the circuit on the board, and that was a problem, finally I broke down and bought a breakout board.

Figure 2. SMT Breakout Board

Of course if you started with a DIP version of the ATTiny85, you wouldn't have to do this.

Lesson 1: Always prototype your circuits on a board first!

I tried plugging in the power and LEDs but nothing worked, so I decided to use an Arduino as an ISP to program the blink sketch into the ATTiny85. It worked! The light started to blink! But one issue was that it was set at 8Mhz, and changing it to 16Mhz or 1Mhz caused the time between the blinking to react strangely. I read that it has some issue with Arduino assuming that the original frequency is 8Mhz. However, with the Digispark software, all timings are correct and I was able to set it to the frequencies that I required previously.

The reason for choosing a lower frequency was that I wanted to conserve power. A lower frequency results in a slightly lower power draw from a battery, quite important if you are using a battery powered project.