# ATtiny44 millis() not working with 16 MHz external clock

I'm using ATtiny44 with Arduino IDE according to this tutorial: http://highlowtech.org/?p=1695

I have a problem with `millis()`. When I use an internal 1 MHz clock it works correctly but when I use external 16 MHz clock it takes `millis()` much more time than one second to be divisible by 1000.

I tested it with LCD and Hello World sketch, modified to correspond ATtiny's pins. Do `millis()` actually work with Tiny's?

Why does it work properly with 1MHz and not with 16 MHz which is the same as used in Arduino platform.

• Did you forget to unprogram CKDIV8? Commented Jul 13, 2016 at 8:20
• Testing whether `millis()` is divisible by 1000 is a terrible idea. With a 16 MHz clock millis does not count every millisecond: it is updated only every 1024 µs and occasionally jumps by 2 ms. Commented Jul 13, 2016 at 9:41
• Please post the Fuses config Commented Jul 13, 2016 at 10:40
• If you are specific about 'much more time', that will help people to explain the specific problem you observed. As you can see, there are several possible interpretations of the problem. Commented Jul 13, 2016 at 12:06

Let me guess: "much more time" is about, ohhh, 16 times?

When `millis()` was written, it had to assume what the input clock was. There is no way to detect the speed of the input clock: to do so would require another clock! So the writers of the function defined a starting constant, set it to `1000000`, and required anyone that changed the clock would have to change that constant.

Find the constant, and set it to `16000000`. Voilà!

Here's an article on the source code of the function:

https://ucexperiment.wordpress.com/2012/03/16/examination-of-the-arduino-millis-function/

• I think faster clock and F_CPU 1000000UL results in "much less time", not in "much more time".
– KIIV
Commented Jul 14, 2016 at 10:51
• Except that he's dividing by 1000 - or is he dividing 1000 by it? There's an inversion going on... Or @EdgarBonet is correct, and he's missing the crucial point in time when it is exactly divisible Commented Jul 15, 2016 at 0:42