¿Por qué molestarse en usar la línea RESET # en el AVR?

5

Estoy diseñando una simple placa de desarrollo AVR basada en el ATmega1284-pu y me preguntaba si había alguna razón para usar el pin RESET en un chip ATmega para restablecerlo. ¿Por qué no cortar la alimentación del dispositivo y volver a encenderlo?

(El chip ATmega es DIP y quitaré el chip para programarlo, así que no es necesario RESET durante la programación)

    
pregunta Billylegota

2 respuestas

9

RESPUESTA CORTA:

Después de desconectar la alimentación, puede tomar un poco de tiempo para que el voltaje del chip descienda lo suficiente para que el chip se reinicie. Durante este tiempo, es posible que ocurran cosas incontroladas como fallas y corrupción.

Si se baja la línea de RESTABLECIMIENTO, casi instantáneamente se pondrá el chip en un estado conocido en el que todos los pines IO están configurados en modo de entrada y el procesador se detiene.

Si su aplicación es sensible a estados desconocidos, entonces probablemente sea mejor usar la línea de reinicio.

RESPUESTA LARGA

Cuando vi por primera vez esta pregunta, la descarté como trivial. Mientras lo pensaba más, me di cuenta de que en realidad es una gran pregunta.

Solo puedo pensar en dos diferencias funcionales entre un reinicio de alimentación y un reinicio externo (tirando del pin RESET bajo) ...

  1. Después de un restablecimiento externo, el bit EXTRF en el registro MCUSR será 1 y cualquiera de los otros bits seguirá teniendo sus valores de restablecimiento previo. Después de un reinicio de encendido, el bit PORF será 1, pero los otros indicadores de reinicio serán 0.

  2. La SRAM de datos internos se llenará con datos no definidos después de un reinicio de encendido, mientras que después de un reinicio externo seguirá conteniendo los datos que tenía antes del reinicio. Tenga en cuenta que los registros IO se configuran en sus valores iniciales de cualquier manera.

    Si bien puedo imaginar los casos en los que es posible que desee restablecer el procesador, pero aún así mantener el contenido de la SRAM, están diseñados. En el uso normal, si desea restablecer, probablemente también desee volver a cargar los datos que tenía en la SRAM.

  3. Si (a) el temporizador WatchDog no está habilitado a través de un fusible, y (b) el temporizador WatchDog se habilita a través del software antes del restablecimiento, luego, después de un restablecimiento externo, WatchDog seguirá habilitado, mientras que se desactivará después un reinicio de energía.

    Por lo general, es un buen estilo apagar el Watchdog inmediatamente después de un reinicio (suponiendo que no haya un fusible), por lo que no debería haber una diferencia práctica.

Por lo tanto, la razón principal por la que puedo pensar en usar el pin RESET en lugar de tirar de la energía podría ser que desee reiniciar de forma controlada y (casi) atómica. Cuando tira de la línea RESET baja, los pines de E / S entran en modo de entrada y el procesador se detiene, y esto sucede de manera muy rápida y limpia.

Cuando extrae energía, gracias a la capacitancia y la inductancia (algunas inherentes al chip en sí mismo y sus conexiones) puede llevar un tiempo pequeño pero significativo para que el chip vea que el Vcc desciende hasta el voltaje de corte. Durante este tiempo, puede continuar ejecutando instrucciones. Puede haber un momento en que el voltaje sea demasiado bajo para soportar la velocidad actual del reloj, pero aún por encima del umbral de reinicio de alimentación. Durante este tiempo, el procesador puede fallar y generar salidas corruptas. (Podría usar el detector de oscurecimiento para mitigar potencialmente este caso, pero todavía hay casos en los que puede meterse en problemas).

Así que supongo que todo se reduce a lo que tu chip va a hacer en el momento en que quieras restablecerlo. Si está conectado a un montón de botones y LED parpadeantes, realmente no importa si uno de los LED parpadea incorrectamente durante un microsegundo cuando el chip se desvanece. Sin embargo, si está conectado a un controlador de motor de alta corriente reversible por software, existe la posibilidad de que el chip pueda crear un cortocircuito peligroso en el camino.

CASO ESOTERICO:

Creo que también hay un caso en el que un reinicio externo mientras el chip se encuentra en un modo de suspensión profunda omite el tiempo de espera de inicio, por lo que en este caso el arranque después de que se libere el reinicio externo podría ser más rápido arranque después de un encendido.

Si alguien más conoce otras diferencias relevantes, ¡me encantaría escucharlas!

    
respondido por el bigjosh
2

Los circuitos digitales son muy sensibles al voltaje de suministro y no deben usarse por debajo de cierto voltaje (o alimentados por una fuente de alimentación con un voltaje de encendido de crecimiento lento) o resultados impredecibles. Como resultado, los circuitos digitales complejos, tales como MCU requieren circuitos especiales, llamados circuitos de restablecimiento de salida marrón. Estos circuitos mantendrán el pin RESET del dispositivo bajo hasta que el voltaje alcance el nivel normal.

Lea esto: enlace

    
respondido por el ilkhd

Lea otras preguntas en las etiquetas