Por que os Arduinos são enviados com cristal de 16 MHz em vez de 20 MHz?

33

Por que as placas Arduino são fornecidas com cristal de 16 MHz em vez de 20 MHz? Eles são especificados para operar em 20MHz, afinal.

Eu acho que existem algumas vantagens em rodar mais devagar (menor consumo de energia, vida útil mais longa), mas devo estar perdendo alguma coisa.

JellicleCat
fonte
1
Isso também foi solicitado no antigo Fórum do Arduino: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1240016311
vicatcu
3
Observe que essa diferença de velocidade de 25% no aplicativo pode ser superada várias vezes com a programação adequada. Eu tento ficar longe dos limites extremos de qualquer CI.
tyblu

Respostas:

29

Eu compraria a resposta no fórum do Arduino:

O ATmega8 Arduino original rodava em 16MHz, que era a velocidade de clock mais votada para o processador ATmega8 usado. Quando "atualizado" para o ATmega168 (com uma velocidade máxima de 20 MHz na CPU), o relógio foi deixado em 16 MHz (provavelmente) porque os designers pensaram que mais pessoas / código teriam problemas de compatibilidade com uma nova taxa de clock do que os 25 extras % de desempenho da CPU. Eu certamente acho que eles estavam certos ...

vicatcu
fonte
6

Na verdade, uma das melhores razões que ouvi é que o UART pode combinar perfeitamente as taxas de 1 Mbit e 2 Mbit quando rodando em 16 MHz, mas não quando rodando em 20 MHz. Existem vários dispositivos com entradas UART de 1 e 2 Mbit, como a linha Dynamixel de servos de robô.

Jon Watte
fonte
5

Um terceiro ponto é que o oscilador de cristal de baixa potência do ATmega168 e ATmega328 não está funcionando acima de 16 MHz. Portanto, se você tiver um cristal de 20 MHz conectado aos pinos XTAL, precisará usar o oscilador de cristal de balanço total que consumirá mais energia (ou não usará nenhum cristal).

Pascal Rosin
fonte