¿Cómo puedo mantener un botón momentáneo lo suficientemente bajo como para que el microcontrolador lo lea?

6

Estoy usando un ESP-12F para disparar mensajes mqtt cuando se presiona un botón. El circuito funciona como se espera; el botón físico reinicia el dispositivo que arranca, ejecuta el código y duerme profundamente por tiempo indefinido. Quiero agregar más de un botón (o disparador externo) pero quiero saber cuál despertó el dispositivo. Conecté varios botones momentáneos al circuito y todos hacen el trabajo de restablecer el dispositivo, pero no pude capturar qué botón se presionó.

Lalíneaamarillaeslapresióndemibotón(reiniciobajodelasunidades),tomaaproximadamente150ms.ElazulesunsimpledigitalWriteenelmétododeconfiguracióndeunprogramaenblanco.ParecequeelESP12tardaunos250mseniniciarseenlaconfiguracióndondepodríaleerelpin,peroparaentonceselbotónhavueltoasuestadooriginal.¿HayunamanerafácildeextenderelmínimoparaqueelICpuedaleerlo?

Esteestambiénunprogramavacío,unavezqueagregobibliotecas,etc.,seagreganotros50-100mssoloparallegaralaconfiguración,porloqueprobablementetendréqueextenderelestadodelbotónparadecir400msparaestarseguro.

Editar:Porlotanto,unproblemaconestediseñoesquesimantengoelbotónbajoparaintentarcapturarlo,yaqueestáconectadopararestablecerlo,enrealidadnoserestablece.Necesito"capturar" lo bajo y luego liberarlo, pero luego leerlo después del inicio.

Editar: El azul está conectado a un LED en un GPIO. Estoy usando esto para ver básicamente cuando el programa está en configuración () cambiando este nivel. La línea amarilla es el pin de reinicio, la parte baja inicial restablece el dispositivo y luego, cuando suelto el botón, vuelve a la posición alta mediante un pullup.

    
pregunta Ryan Detzel

3 respuestas

4

La entrada EXT_RSTB en la Expressif 8266EX es sensible al nivel (bajo activo) por lo que estirar el botón pulsador no ayudará, el procesador solo se inicia una vez que se ha eliminado la señal EXT_RSTB.

Puede usar un par de instantáneas para estirar las pulsaciones de los botones (quizás un 74HC123 ) pero también tendrá que combinar los dos interruptores para crear una señal de reinicio. Si tira de las entradas bajas, puede usar una compuerta AND (la mitad de un 74HC00, por ejemplo).

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Spehro Pefhany
3

Para responder a su pregunta específica, una forma de hacerlo sería agregar un pestillo SR entre el botón y el microcontrolador, de modo que el botón fije el pestillo y luego el microcontrolador pueda restablecer el pestillo cuando esté listo.

Sin embargo, Christoph tiene razón, sería extraño si pudieras escribir salidas antes de que finalice el arranque pero no leer entradas ...

    
respondido por el BeB00
0

Si está dispuesto a "reducir" el nivel de sueño (quizás para dormir ligero), puede usar sus interrupciones externas para activar el dispositivo, guardar la causa en la EEPROM de su controlador y luego reiniciar el ESP con ESP.restart() .

    
respondido por el TisteAndii

Lea otras preguntas en las etiquetas