33
\$\begingroup\$

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.

\$\endgroup\$
  • 1
    \$\begingroup\$ This was also asked in the old Arduino Forum: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240016311 \$\endgroup\$ – vicatcu Jun 3 '12 at 19:22
  • 3
    \$\begingroup\$ 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. \$\endgroup\$ – tyblu Jun 3 '12 at 19:29
29
\$\begingroup\$

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...

\$\endgroup\$
6
\$\begingroup\$

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.

\$\endgroup\$
5
\$\begingroup\$

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).

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.