¿Por qué los Arduinos se envían con cristal de 16MHz en lugar de 20MHz?

33

¿Por qué las placas Arduino se envían con cristal de 16MHz en lugar de 20MHz? Están especificados para operar a 20MHz, después de todo.

Supongo que hay algunas ventajas de correr más lentamente (menor consumo de energía, mayor vida útil), pero debo estar perdiendo algo.

JellicleCat
fuente
1
Esto también se preguntó en el antiguo Foro de Arduino: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240016311
vicatcu
3
Tenga en cuenta que esta brecha de velocidad de aplicación del 25% se puede superar muchas veces con la programación adecuada. Sin embargo, trato de mantenerme alejado de los límites extremos de cualquier CI.
tyblu

Respuestas:

29

Compraría la respuesta en el Foro Arduino:

El ATmega8 Arduino original funcionaba a 16MHz, que era la velocidad de reloj más alta para la CPU ATmega8 utilizada. Cuando se "actualizó" a ATmega168 (con una velocidad máxima de la CPU de 20MHz), el reloj se dejó a 16MHz (probablemente) porque los diseñadores pensaron que más personas / código tendrían problemas de compatibilidad con una nueva velocidad de reloj de la que se beneficiarían de los 25 adicionales % de rendimiento de la CPU. Yo desde luego creo que tenían razón ...

vicatcu
fuente
6

En realidad, una de las mejores razones que he escuchado es que el UART puede igualar perfectamente las velocidades de 1 Mbit y 2 Mbit cuando se ejecuta a 16 MHz, pero no cuando se ejecuta a 20 MHz. Hay varios dispositivos que tienen entradas UART de 1 y 2 Mbit, como la línea de servos de robot Dynamixel.

Jon Watte
fuente
5

Un tercer punto es que el oscilador de cristal de baja potencia del ATmega168 y ATmega328 no funciona por encima de 16 MHz. Entonces, si tiene un cristal de 20 MHz conectado a los pines XTAL, debe usar el oscilador de cristal de oscilación completa que consumirá más energía (o no usará ningún cristal).

Pascal Rosin
fuente