Cuando se pierde la energía en un chip AVR (4313 y 8535), ¿por qué el mcu funciona más lento?

4

Tengo un circuito AVR para el cual he conectado su pin de salida de reloj a algunos otros circuitos reloj externo y los otros pines operan varias otras cosas. Al usar un osciloscopio, he encontrado que el chip AVR (tanto attiny4313 como atmega8535) funcionará a una velocidad más lenta después de que su fuente de alimentación haya sido desconectada y reconectada.

Los chips en el circuito en cuestión están conectados a un resonador de 20 mhz a xtal 1 y xtal 2. Aquí es cómo recrear el problema:

1) Conecte la alimentación y tierra.

2) quema los fusibles de un oscilador externo con salida de reloj

3) presiona el botón de reinicio

4) la temporización muestra 20 MHz en el alcance, otros circuitos funcionan a la velocidad adecuada.

5) Desconecte la batería (del regulador L7805)

6) Vuelva a conectar la batería al circuito

7) el chip principal ahora está funcionando a unos 8 mhz, no hay otros circuitos funcionando correctamente.

8) Fusionar fusibles

9) Funciona correctamente a 20 MHz ahora.

El problema ocurre con un attiny4313 y un atmega8535.

EDITAR: La imagen es un circuito de prueba que estoy usando para intentar resolver esto. Me permite reproducir el problema.

¿Por qué sucede esto? ¿Cómo evito que suceda?

Notas adicionales:

La detección de reducción de tensión a 4,3 V no soluciona el problema.

Programado con un arduino uno como ISP con avr-gcc (última versión de Ubuntu)

    
pregunta Matt

1 respuesta

2

Eso que llamas un botón de reinicio no lo es.

Es probable que el rebote del conmutador emita varios restablecimientos a los milisegundos de su MCU y posiblemente de una duración de microsegundos, y posiblemente pase tiempo en estados lógicos indeterminados. Usted debe revisar la hoja de datos para los tiempos de restablecimiento necesarios. Mi corazonada es que estos impulsos de restablecimiento espurios múltiples fuera de especificación ponen a la MCU en un estado indefinido, y aparentemente no está operando según su configuración de fusible, y en su lugar se está ejecutando su oscilador interno de 8 MHz *.

La práctica estándar es tener al menos un límite a tierra, al menos 100n, pero lo más probable es que sea 1uF..10uF dependiendo de las especificaciones de temporización de reinicio y, lo que es más importante, las características de rebote del interruptor, que normalmente tienen que ser estimadas empíricamente (es decir, ver lo que RESET está haciendo con un osciloscopio). Poner el interruptor / pull-up / cap a través de un schmigger también puede ayudar mucho. Pero normalmente se usa un chip de controlador de reinicio adecuado para tratar la realidad del rebote del interruptor en los interruptores mecánicos imperfectos.

  • Esto está en el mismo ámbito de la distorsión de los rieles eléctricos y otras señales críticas, como RESET, que utilizan los piratas informáticos para colocar el MCU en ciertos estados, por ejemplo, para leer el código, cuando esa funcionalidad de lectura no debería Ser posible debido a la configuración del fusible.
respondido por el Techydude

Lea otras preguntas en las etiquetas