Arduino em 20 MHz?

9

Eu me pergunto por que o Arduino não roda em 20 MHz, a frequência para a qual o AVR está especificado. Agora, rodando a 16 MHz, estamos desperdiçando 20% do desempenho por nada.

Eu não acho que existem quaisquer implicações quando substituir o ressonador 16 MHz com um tipo de 20 MHz, com, provavelmente, a única exceção para a taxa de transmissão no bootloader. Ou existe?

Alguém sabe por que os designers do Arduino escolheram 16 MHz?

Joris Groosman
fonte
Não se esqueça de definir os fusíveis quando você faz isso
portforwardpodcast
11
@portforwardpodcast não há necessidade de trocar os fusíveis. Eles já estão definidos para "Oscilador externo de oscilação total".
Gerben

Respostas:

6

Não há nenhuma razão de hardware (até onde eu saiba) que você não possa executar um Arduino adequado a 20 MHz. Você pode encontrar pequenas imprecisões de tempo no software, pois a configuração padrão do Arduino aparentemente funciona melhor se a velocidade do relógio for 8 ou 16MHz.

Eu suspeito que isso seja em grande parte por razões históricas. As primeiras placas Arduino eram baseadas em chips que subiam apenas a 16 MHz, como o ATmega8. Usar a mesma configuração para todos os chips mantém tudo um pouco mais simples e consistente.

Há mais informações aqui sobre os problemas de tempo: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708

Peter Bloomfield
fonte
11
Obrigado pela sua resposta. Você pode elaborar o "poder exato de 2"? O período de 1 segundo durante o qual os pulsos de clock são contados não significa nada para um microcontrolador, ele sabe apenas os tiques do relógio. Além disso, 16 MHz não é uma potência exata de 2, que teria que ser 16,777216 MHz.
Joris Groosman
@JorisGroosman Desculpe, eu não expliquei isso direito. É sobre a maneira como o núcleo do Arduino calcula microssegundos a partir de marcações de clock. Este tópico do fórum fornece uma explicação muito melhor do que eu poderia.
Peter Bloomfield
4

Você pode, e eu faço.

Tecnicamente, não é mais um Arduino, eu acho. Eu criei minha própria placa, substituir um ressonador em uma placa exigirá alguma solda fina, mas é definitivamente possível.

Existem algumas dicas: Qualquer coisa relacionada ao tempo (por exemplo, millis ()) será executada mais rapidamente do que deveria - 25% mais millis () por segundo. Além disso, o gerenciador de inicialização espera 16mhz, para que você não possa reprogramar a essa velocidade. Comprei um programador USBASP - ele se conecta à grade de pinos 2x3 de um lado da placa e permite reprogramar sem o carregador de inicialização (é assim que o carregador de inicialização é colocado!). Você precisará de pelo menos 4,5 volts a 20 mhz para evitar problemas, em comparação com 3,78 volts por 16 mhz - isso significa que as baterias drenam um pouco mais rapidamente (as baterias de 3x1,5 v se esgotam rapidamente) e se você tiver algum motor ou outro acionamento no baterias, 3 baterias de 1.5v provavelmente não funcionarão, mesmo que sejam novas.

Como alternativa, indo na direção oposta exata, quanto menor a velocidade do relógio, menor é a tensão necessária - para alguns projetos, talvez você não precise da velocidade do relógio - você pode descer para 1,8v funcionando a 4mhz.

AMADANON Inc.
fonte