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?


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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.