AtTiny85

The AtTiny85 packs a lot of features packed into the AtTiny85 pin dual in line package (DIP) chip.  There are a number of features that I like about the AtTiny85 micro-controller.  The small chip size is great with 8 pins available for fun.

Two of the pins are used to power the chip.  One pin for 5 volts or 3.3 volts direct current power and one for ground.  That leaves 6 pins for fun stuff.  One of the six pins is a reset pin, which can be made into another pin for fun by setting the fuse to no reset.  If you do this, then you can only program the chip with high voltage programming using a special programmer.  An Atmel Dragon programming board can do high voltage programming and set the fuses.  I used the Dragon to set the no reset pin, so I can use it for fun.  I like to use the internal clock set to 8MHz and that is done setting the fuses too.  Using the internal clock is nice because I don’t need an external crystal, which adds cost and takes up two pins.

Six pins are great for LED projects, because 6 LEDs can be flashing away all at once connected to the little chip.  There are 3 of the 6 that are pulse width modulation (PWM) pins.  These 3 pins can be used to drive an red-green-blue (RGB) LED and have 3 single LEDs running at the same time for a total of 4 LEDs.  I want to talk about the PWM pins, because there are many diagrams on the Internet that show 2 or 4 PWM pins, which is not true in either case.  The data sheet from Atmel shows pin 2 having and inverted oscillator OC1B for PWM, but this pin does not work as a PWM pin.  I think, I read there was a problem with this pin from day one.  I tested this pin and it does not do PWM.  Pins 3, 5, & 6 do have PWM, which I also tested and they work, so you can use an RGB LED and enjoy it.  Because of all the confusion with what pins have PWM or not, many of the Arduino hardware libraries for the AtTiny85 are wrong.  You will have to read the pins_arduino.h files to make sure the correct pins have PWM in the code.  I think, I made a code change in this file to fix the problem or I found the correct library to use.  (**I will update this later to share the details**)

The memory is large enough for a cool programs to be stored.  The flash for programming is 8 kilobytes (kb) in size.  The static random access memory (SRAM) is 512 bytes in size.