37

Why do Arduino boards ship w/ 16MHz crystal instead of 20MHz? They are spec'ed for operating at 20MHz, after all.

I guess there are a few advantages to running more slowly (lower power consumption, longer life), but I must be missing something.

JellicleCat
  • 649
  • 1
  • 8
  • 18
  • 1
    This was also asked in the old Arduino Forum: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240016311 – vicatcu Jun 03 '12 at 19:22
  • 3
    Note that this 25% application speed gap can be gained many times over with proper programming. I try to stay away from any IC's extreme limits, though. – tyblu Jun 03 '12 at 19:29

3 Answers3

30

I'd buy into the answer on the Arduino Forum:

The original ATmega8 Arduino ran at 16MHz, which was the top rated clock speed for the ATmega8 cpu used. When "upgraded" to ATmega168 (with a 20MHz top cpu speed), the clock was left at 16MHz (probably) because the designers thought that more people/code would have backward compatibility issues with a new clock rate than would benefit from the extra 25% cpu performance. I certainly think they were right...

vicatcu
  • 22,499
  • 13
  • 79
  • 155
7

Actually, one of the best reasons I've heard is that the UART can perfectly match 1 Mbit and 2 Mbit rates when running at 16 MHz, but not when running at 20 MHz. There are a number of devices that have 1 and 2 Mbit UART inputs, such as the Dynamixel line of robot servos.

Jon Watte
  • 5,650
  • 26
  • 36
6

A third point is that the Low Power Crystal Oscillator of the ATmega168 and ATmega328 is not working above 16 MHz. So if you have a 20 MHz crystal connected to the XTAL pins, you have to use the Full Swing Crystal Oscillator which will consume more power (or use no crystal at all).

Pascal Rosin
  • 203
  • 4
  • 8