What The Tech

ATtiny85 Microprocessor

Rob Bell

Issue 9, March 2018

This tiny yet powerful microprocessor is unassuming, but you can unlock the power within!

The ATtiny85 is a RISC (Reduced Instruction Set Computer) based processor, part of a broader family of ATtiny processors. In fact, it’s still part of the AVR family, which is also home to the ATmega328p, and other popular processors used in Arduino boards.

Obviously right out of the box, an ATtiny85 can’t be used like an Arduino. There’s no USB port or hardware, you get the bare DIP8 packaged processor. The major benefit here though is it’s tiny size. When we think “basic ICs” we often think of a 555 timer or something similar. This is the same package size as a 555 timer, which is TINY! But don’t let its size fool you, this is still quite a beast of a microcontroller, suitable for all sorts of embedded projects. And when you can buy one for just a few dollars, they’re cost-effective in all sorts of things.

It can use an internal clock of around 8MHz thanks to an internal RC oscillator, or you can use an external clock source up to 20MHz (when running above 4.5V) - meaning it can use a 16MHz crystal just like an ATmega328p that you might already have. But if your circuit isn’t time-critical, you can omit the external clock and rely on the internal clock, reducing hardware required to run the micro.

The Arduino familiarity doesn’t stop there though, using the Arduino IDE to programme an ATtiny85 is very easy, with included board manager profiles in the Arduino IDE already (simply search “attiny” in the Board Manager). Of course, with no USB port, you’ll need a serial programmer, and may need to build a little circuitry around the system. Then you can compile and load all your standard Arduino compatible software, providing of course, you’re within the memory limits of the ATtiny, which are a little smaller than an UNO.

Many instructions are executed in a single clock cycle, meaning the advanced instruction set can execute up to 20MIPS @ 20MHz; that’s 20 million instructions per second - that’s a lot of instructions!

SPI PORT: Full SPI functionality which is a powerful interface, especially for advanced Arduino-compatible modules.

INTERRUPTS: Full support for internal and externally triggered interrupts, which makes handling trigger events much simpler.

Peripherals

  • An 8-bit timer/counter with prescaler and two PWM channels
  • An 8-bit high frequency timer / counter with separate prescaler, with two high frequency PWM outputs with separate output compare registers
  • USI (universal serial interface) with start condition detector
  • 10-bit ADC with 4 channels, 2 differential ADC channel pairs with 1x/20x gain, and temperature measurement
  • On-chip analogue comparator.
  • And a whole lot more!

The size and flexibility of this processor really lends itself to a host of PCB-level projects, which may normally be the domain of a few discrete ICs and components. However with some clever design and lean code, you can add some versatility and flexibility to tiny circuits, with precise digital accuracy of execution.

It’s also important to note that many very useful systems only need a few IO lines. There’s not a lot of use for 20 free IO pins in an embedded project, so if you don’t have high hardware IO demands (or very complex software), then you’re likely able to use an ATtiny85, while still leaving pins free for external clock (if desired), reset, and other handy functions that are useful to leave in place if you don’t need to squeeze them into IO.

Overall they’re a fantastic micro, and you’ll be seeing more ATtiny85s making their way into DIYODE projects!

ATTiny85 is available at many electronics retailers.

ATtiny85 Vital Stats:
Operating Voltage2.7-5.5V
Clock Speed: 0-20MHz @ 4.5-5.5V
(0-10MHz @ 2.7-5.5V)
Internal Flash: 8kB
EEPROM: 512 bytes
SRAM: 512 bytes

ATtiny85 is available at many electronics retailers: