16MHz vs 8MHz Clock

The Trinket by default runs at 8 MHz, a plenty fast speed for nearly all of your microcontroller needs. However, you may want to use code that requires it to run at 16 MHz, or maybe you just want a little boost in speed.

The 16 MHz clock speed is for Trinket 5V only!

The ATtiny85 is only specified to run at 16 MHz when powered at 5V - that means that officially you can only run the 5V Trinket at 16 MHz.
However, the AVR series is pretty forgiving for overclocking, so you may be able to run the 3V Trinket at 16 MHz. Note that this is still overclocking, your code may run flakey or not at all! Overclocking should not damage the AVR, but we still recommend sticking with 8 MHz only for the 3V version, and 8 or 16MHz only on the 5V version.

Power Tradeoffs

Doubling the speed will increase the power usage just a bit. At 8 MHz the current draw is about 9 milliamps. That number includes the green power LED which draws about 3mA so thats 6mA for the microcontroller itself.

At 16 MHz the draw is 12mA total. Subtracting the green LED current draw, that means 9mA for the microcontroller itself.

How to activate the 16 MHz clock

...on AVR-GCC

We can activate the 16MHz clock 'in software' simply by asking the chip to set the clock prescale. If you are using raw avr-gcc, run this as the first line in main()


You may need to add #include to your file so that the commands are recognized. Then make sure to compile your code with F_CPU = 16000000

...Arduino IDE

Using 16 MHz mode is very similar when using the Arduino IDE. Add the following line to the very top of your Arduino sketch (as the first line)

#include <avr/power.h>

Then, in setup() - add this as the first line in the function:

if (F_CPU == 16000000) clock_prescale_set(clock_div_1);

Then select Trinket 16MHz from the Tools->Board menu. Your code will compile and run at 16 MHz!

Last updated on 2016-06-03 at 04.08.50 PM Published on 2013-09-03 at 01.30.12 PM