En las hojas de datos de AVR en la sección Características eléctricas, normalmente encontrará un gráfico como este (este es del ATMega328):
He visto diseños que parecen "funcionar" pero operan fuera del sobre sombreado. Específicamente, he visto diseños de 3.3V (Arduino) que ejecutan el reloj desde un cristal externo de 16MHz. Claramente, esto está fuera de especificación. ¿Cuáles son las consecuencias negativas prácticas de correr fuera de este sobre?
Cómo hacer la vida más interesante 101:
que sus resultados a veces pueden ser erróneos,
que su sistema puede fallar a veces,
que su vida puede ser más interesante,
que su clon de Segway solo ocasionalmente se planta en la cara sin razón aparente,
que...
Luego, por supuesto, ejecute la pieza fuera de las especificaciones del fabricante.
Obtienes lo que no pagas.
Si tienes una cabeza de $10, compra un casco de $10.
O no
A este tipo de velocidades, la mayoría de los procesadores funcionan calculando todas las señales que se necesitarán en un determinado ciclo de reloj, esperando el siguiente borde del reloj mientras se estabilizan, bloqueando todas esas señales y calculando las señales necesarias en el siguiente ciclo de reloj. , esperando ese flanco mientras esas señales se estabilizan, etc. Si llega un flanco de reloj antes de que se hayan estabilizado las señales necesarias, el efecto será que las señales que no se hayan estabilizado no se engancharán limpiamente. Si esto ocurre en un microcontrolador, los efectos pueden ser impredecibles, al menos por dos razones:
uint32_t eep_checksum, eep_addr, eep_data; #define EEPROM_WRITE(dirección, datos, predicado) \ eep_checksum = 0xC0DEFACE, eep_addr = (dirección), eep_data = (datos), \ eep_checksum += eep_addr + eep_data, ((predicado) || HARD_CRASH()), \ eep_checksum += (0xCAFEBABE - C0DEFACE), eep_do_write() vacío eep_do_write (vacío) { ENABLE_EEPROM_WRITE_HARDWARE(); si (eep_checksum != eep_addr + eep_data + 0xCAFEBABE) { DISABLE_EEPROM_WRITE_HARDWARE(); DIFÍCIL_CRASH(); } DO_EEPROM_WRITE(); DISABLE_EEPROM_WRITE_HARDWARE(); }Es muy poco probable que una rutina eeprom_write intente escribir datos a menos que se ejecute "eep_checksum = 0xC0DEFACE" antes de cargar la dirección y los datos. Después de la ejecución de eso, se verificará la validez del predicado antes de ajustar la suma de verificación al valor adecuado y llamar a la rutina eeprom_store.
Los fabricantes especifican los parámetros de funcionamiento de los procesadores de modo que, dentro de esos parámetros, los procesadores simplemente funcionen. Empujar las cosas fuera de ese sobre puede reducir el procesador a ser solo 99.9999999 confiable. Puede que no suene demasiado malo, pero tratar de diagnosticar un procesador que hace algo arbitrariamente mal una vez por minuto más o menos (calculando 16 MHz) no es divertido.
Respuesta simplificada para su pregunta:
Trabajar fuera del "área de velocidad segura" puede hacer que su sistema funcione de manera inestable. ¿Qué significa eso? Resultados de cálculo incorrectos, reinicios del microcontrolador, etc.
Si quieres hacer eso solo por diversión, deberías echar un vistazo a estas páginas/artículos:
Overclocking de Arduino con refrigeración por nitrógeno líquido. 20⇒65,3MHz @-196°C/-320°F
Una consideración que aún no se ha mencionado, que tiene menos que ver con el funcionamiento a frecuencias válidas en rangos de voltaje no válidos (16 MHz a 3,3 V), pero más que ver con el funcionamiento a frecuencias no válidas en rangos de voltaje válidos (24 MHz a 5 V), es la disipación de calor.
Cada vez que una compuerta en el chip se activa o desactiva, disipa calor. La puerta, al estar compuesta por MOSFET, actúa como una resistencia variable en el período entre el encendido y el apagado, o entre el apagado y el encendido. Esa resistencia, por supuesto, disipa el calor. Cuanto más frecuentemente cambia, menos tiempo hay entre los cambios para que ese calor se disipe del chip, y corre el riesgo de que se acumule calor.
Ergo, cuanto más rápido corres, más calor se puede acumular. Es por eso que las CPU de PC tienen grandes ventiladores: cambian tan rápido que no pueden sacar el calor del chip lo suficientemente rápido, por lo que necesitan ayuda.
La velocidad máxima nominal del chip se selecciona para permitir que el chip disipe su acumulación de calor de forma fiable en las condiciones de funcionamiento válidas (es decir, la temperatura ambiente, normalmente un máximo de 85 °C o 105 °C, por ejemplo). Exceder esa frecuencia puede hacer que el chip se sobrecaliente.
Sí, puede ser posible ejecutar el chip más rápido de lo previsto si brinda alguna ayuda, es decir, un disipador de calor y tal vez un ventilador, y se asegura de que haya un buen flujo de aire a su alrededor. Pero, por supuesto, en un día cálido de verano, es posible que lo que fue un dispositivo que funcionó perfectamente durante todo el invierno, de repente comience a hacer cosas extrañas.
Otra cosa a considerar es la de las tasas de cambio. Las señales del reloj (y otras señales también) tardan en subir o bajar hasta el nivel deseado. Si las partes internas del chip significan que la señal del reloj tarda, digamos, 15 ns en subir de un BAJO a un ALTO, y usted intenta sincronizarlo a una frecuencia donde el período ALTO es, digamos 42 ns (24 MHz), eso deja solo 27 ns de reloj válido. periodo restante. Eso es solo el 64% del reloj que en realidad es una señal de reloj; el resto es basura. Lo mismo para los pines IO. Cosas como las salidas de reloj SPI estarán limitadas por la velocidad de giro del pin IO, por lo que si overclockea su chip para obtener un SPI más rápido, encontrará que las cosas no siempre salen según lo planeado, como la buena onda cuadrada que espera de la salida del reloj. ya no es cuadrado.
Es posible que el dispositivo no funcione con alguna combinación de voltaje/temperatura.
olin lathrop
Hossein
usuario34920
nitro2k01
Julio
vicatcu
viejo contador de tiempo