Genere una señal de reinicio desde un disparador de borde descendente

Estoy trabajando en un diseño de microcontrolador donde el mcu se coloca en modo de hibernación y solo puede despertarse con una señal de pulso (alto-bajo-alto) en el pin de reinicio. (activo bajo) Como fuente de activación, estoy usando un acelerómetro o un RTC externo.

La idea es hacer que el acelerómetro dispare una interrupción, que lleve un pin de interrupción bajo. Lo mismo ocurre con el RTC. Tirará de un pin de interrupción a la señal lógica baja. Sin embargo, esto no despertará al mcu del modo de hibernación. Necesito usar este modo de suspensión para ahorrar tanta energía como sea posible.

Me pregunto cómo puedo crear una señal de alternar a partir de la señal del pin de interrupción de las fuentes de activación. La alternancia solo debe ocurrir una vez, ya que es el pin de reinicio de la mcu. ¿Hay algún tipo de pestillo de circuitos/componentes lógicos que creen este tipo de señal?

Editar: pulso de señal (alto-bajo-alto), no alternar (bajo-alto-bajo) Estoy usando un Energy Micro Gecko (EMF32G890F128) con un núcleo Cortex-M3.

Mi presupuesto de energía es bajo, mi diseño debe permanecer tan bajo como <100 µA activo, y actualmente con RTC y acelerómetro esto se logra.

Edit2: Las señales de interrupción tanto del acelerómetro como del RTC permanecen bajas hasta que mcu las restablece. Por lo general, esto se hace leyendo un registro en la unidad periférica. Y para que esto suceda el mcu debe estar despierto.

¿Qué MCU está usando y cuál es el presupuesto de energía para este circuito de reinicio externo? Obviamente, no tiene mucho sentido si no es del mismo orden de magnitud que la propia MCU (en modo de hibernación).
El sueño profundo, que es la siguiente mejor opción (modo de suspensión), usa mucho más, 0.6 µA en comparación con la hibernación en 20 nA. Este no es realmente el verdadero consumo de energía, pero indicaría la pérdida de energía de un modo de suspensión "más ligero".
¿Qué es el RTC externo? ¿Puedes vincular a su hoja de datos? ¿Tiene alguna funcionalidad para generar un pulso en lugar de un nivel, y quizás responder a eventos externos del acelerómetro?
El RTC externo es básicamente un despertador. Activará una alarma cada xx horas, enviando una señal de interrupción y mantendrá la señal baja hasta que la mcu la restablezca.
pero la forma de esa señal es...? Además, ¿hay una salida de 1 Hz disponible?
Ni el acelerómetro ni el rtc pueden crear el pulso que necesito. Ambos bajarán un pin y lo mantendrán bajo hasta que se reinicie.

Respuestas (3)

Un circuito multivibrador monoestable puede proporcionar el pulso (no alternar ) que parece describir la pregunta, y puede activarse según los requisitos.

Multivibrador Monoestable.

Los monoestables se pueden hacer de muchas maneras, como usar transistores de unión bipolar según el esquema anterior, o usar el venerable temporizador 555 como se muestra a continuación.

555 Monoestable.

Si debe usar un 555, considere el temporizador CSS555C de potencia ultrabaja , que tiene una corriente de suministro de 5 a 10 µA. Incluso esto puede estar muy por encima del presupuesto de energía para la aplicación.

Específicamente, tenga en cuenta la "C" al final del número de pieza: esto indica un condensador interno integrado en el chip, lo que reduce aún más el consumo de corriente.

La "versión de bajo consumo" tiene un consumo de energía típico de hoja de datos aproximadamente 400* mayor que su CPU en modo de suspensión. Y el modo de suspensión ya consume demasiada energía...
¡Guau! @BrianDrummond: Así es... Quizás el CSS555C funcionaría un poco mejor, con su corriente de suministro de 5 a 10 µA. Todavía demasiado, pero lo editaré en mi respuesta.
¿Cómo responderá la salida a una señal de entrada continua? ¿Se disparará el pulso una vez por cada flanco descendente en la entrada del disparador?
@Jeffa El 555 se activará una vez por flanco descendente si se configura en modo estándar: observe la Figura 7 en la hoja de datos.
@AnindoGhosh La figura 7 muestra un pulso en la entrada del disparador, no puedo crear esta señal. ¿Funcionará incluso si la palanca sigue siendo lógica baja? Editar: parece que sí :D
@Jeffa No estoy seguro de lo que quieres decir, pero el monoestable se activará en cada borde descendente. Lo que sucede después de ese borde no tiene impacto en el monodisparo... Simplemente generará otro pulso la próxima vez que vea un borde descendente en el pin del gatillo.
@Anindo: algunos monoestables no devolverán la salida a su estado "apagado" mientras la entrada está "encendida". Por lo tanto, se pueden usar como extensores de pulso, pero no como acortadores de pulso, que es lo que necesita el OP. No he usado un 555 desde 1996, así que no puedo recordar lo que hace...
¿Puedo usar cualquier temporizador 555 para esta operación estándar? Me gustaría usar el CSS555 de baja potencia para mi diseño final, pero mientras espero el componente, ¿puedo probarlo con un 555 normal?
@Jeffa Sí, definitivamente puede probar con un 555 genérico, simplemente no obtendrá el ahorro de energía que solicita su pregunta. Además, el CSS555 permite programar el comportamiento monoshot, por lo que si necesita que se comporte de alguna manera diferente al circuito 555 normal, tendrá que esperar la parte CSS.
@BrianDrummond Estoy probando el circuito con dos temporizadores genéricos 555 separados, LM555 y NE555. Ambos parecen funcionar como mencionaste, el temporizador no genera un pulso de salida a menos que el pin del disparador reciba un pulso. No estoy seguro de si el CSS555 funcionará de manera diferente.
@Jeffa Considere usar la línea de reinicio para alimentar el 555 en modo astable con un período prolongado, como sugirió Brian, O coloque un capacitor en la línea de reinicio para que el pin de activación del 555 vea el cambio de nivel como un pulso breve.

Estoy empezando a pensar que es posible que deba usar esa señal para cambiar la energía a un generador de pulsos como un 555 u otro oscilador.

El CS555 sugerido por Anindo funcionará con la energía que se puede extraer de su pin de interrupción. Si no puede hacer que se active como monoestable cuando se enciende (esto puede ser posible), ejecútelo como astable a aproximadamente 1 Hz. Luego reinicia la CPU como un perro guardián; depende de usted seguir reiniciándolo o apagarlo en un segundo...

+1 - ¡Excelente idea! Con el minúsculo consumo de energía de ese IC, ¡es ideal para usarlo de esta manera!
Déjame ver si lo hice bien. Configuré un oscilador con una frecuencia lenta (suficiente para iniciar mi sistema) y utilicé la señal del pin de interrupción para encenderlo, digamos a través de un mosfet. El mosfet permitiría un menor consumo de energía durante el tiempo fuera de línea :)
Sí, tal vez a través de un MOSFET, o incluso usando el pin como el lado 0V de la fuente de alimentación del oscilador.
  1. Un "alternar" es una transición única, no un bajo-alto-bajo.
  2. No dice qué microcontrolador, pero es casi seguro que el pin de reinicio es sensible al nivel , no al borde. Para ejecutar el micro, la entrada de reinicio debe estar sin afirmar (generalmente mantenida alta).
  3. Probablemente haya mejores formas de activar el micro que usar la entrada de reinicio. ¿Este micro no tiene una entrada de interrupción externa o una interrupción en la entrada de cambio? Lo más probable es que sí, y lo más probable es que esos eventos puedan despertar al micro del modo de suspensión. Eso probablemente también sea más conveniente para el firmware que hacer que el evento de activación reinicie el micro además de iniciarlo nuevamente.
Los pines de interrupción externos están deshabilitados cuando está en modo de hibernación, por lo que esta función no está disponible para mí. El sistema consume mucha energía si la mcu se deja en un modo de suspensión más ligero con el controlador de interrupción activo. El modo de hibernación apaga todo, incluso el reloj y la retención de la CPU