Arduino a 20 MHz?


9

Me pregunto por qué Arduino no funciona a 20 MHz, la frecuencia para la que se especifica el AVR. Ahora, funcionando a 16 MHz, estamos perdiendo un 20% de rendimiento por nada.

No creo que haya ninguna implicación cuando se reemplaza el resonador de 16 MHz con un tipo de 20 MHz, probablemente con la única excepción de la velocidad de transmisión en el cargador de arranque. O hay

¿Alguien sabe por qué los diseñadores de Arduino eligieron 16 MHz?


No olvides configurar los fusibles cuando hagas esto
portforwardpodcast

1
@portforwardpodcast no es necesario cambiar los fusibles. Ya están configurados en "Oscilador externo de giro completo".
Gerben

Respuestas:


6

No hay ninguna razón de hardware (que yo sepa) para que no puedas ejecutar un Arduino adecuado a 20 MHz. Sin embargo, se encontrará con pequeñas inexactitudes de temporización en el software, ya que la configuración estándar de Arduino aparentemente funciona mejor si la velocidad del reloj es de 8 o 16MHz.

Sospecho que esto es en gran parte por razones históricas. Las primeras placas Arduino se basaban en chips que solo llegaban a 16 MHz, como el ATmega8. Usar la misma configuración para todos los chips simplemente mantiene todo un poco más simple y más consistente.

Aquí hay más información sobre los problemas de tiempo: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708


1
Gracias por tu respuesta. ¿Puedes elaborar sobre "potencia exacta de 2"? El período de 1 segundo durante el cual se cuentan los pulsos de reloj no significa nada para un microcontrolador, solo conoce los tics de reloj. Además, 16 MHz no es una potencia exacta de 2, eso tendría que ser 16,777216 MHz.
Joris Groosman

@JorisGroosman Lo siento, no lo expliqué correctamente. Se trata de la forma en que el núcleo Arduino calcula microsegundos a partir de los tics del reloj. Este tema del foro ofrece una explicación mucho mejor de lo que podría.
Peter Bloomfield

4

Puedes y yo lo hago.

Supongo que ya no es técnicamente un Arduino. Hice mi propia placa, reemplazar un resonador en una placa requerirá una soldadura fina, pero definitivamente es posible.

Hay algunas trampas: cualquier cosa relacionada con el tiempo (por ejemplo, millis ()) se ejecutará más rápido de lo que debería: un 25% más de millis () por segundo. Además, el gestor de arranque espera 16mhz, por lo que no podrá reprogramarlo a esta velocidad. Compré un programador USBASP: se engancha en la cuadrícula de 2x3 pines en un lado de la placa y le permite reprogramarlo sin el cargador de arranque (¡así es como se coloca el cargador de arranque en primer lugar!). Necesitará al menos 4.5 voltios a 20 mhz para evitar problemas, en comparación con 3.78 voltios para 16 mhz, esto significa que las baterías se agotarán un poco más rápido (las baterías de 3x1.5v se agotarán bastante rápido), y si tiene algún motor u otro, utilice el baterías, 3 baterías de 1.5v probablemente no funcionarán aunque sean nuevas.

Alternativamente, yendo en la dirección exactamente opuesta, cuanto más baja es la velocidad del reloj, se requiere menos voltaje; para algunos proyectos, es posible que no necesite la velocidad del reloj, puede bajar a 1.8v funcionando a 4mhz.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.