Use Ibutton para activar MCU y disparar una interrupción

0

Estoy trabajando en un dispositivo alimentado por batería que toma entradas de árbol, dos botones y un botón. Cada entrada debe poder activar la MCU (Atmega1284p con el cargador de arranque arduino) desde el modo de suspensión. Con los dos botones he usado una interrupción y va bien. Luego, la MCU se despierta. Puedo decir la diferencia de qué botón se presionó al configurar una variable en la función ISR. Sin embargo, ahora quiero poder activar el MCU con los dos botones o con el botón. Desafortunadamente, el ibutton solo crea un desplegable muy corto en la línea de señal para aproximadamente 40us. Esto significa que la MCU se activará pero la interrupción no se activará. Desde la página 30 en la hoja de datos de la MCU ( enlace ) puedo ver que necesito mantener mi señal hacia abajo para 65ms + 14ck. Este comportamiento se describe en la página 65 al final de la sección 11.1.

Mi solución inicial fue comprobar si se activó alguna de las otras interrupciones, de lo contrario, supongamos que el ibutton despertó el mcu. El inconveniente es que si el tiempo de sueño finalizó no podría notar la diferencia.

Mi segunda solución fue usar un puerto ibutton con retroalimentación táctil. Luego use la retroalimentación táctil para despertar la MCU. Pero esto aumentará el costo del hardware.

La pregunta es ahora, ¿hay alguna forma más inteligente de hacerlo?

EDITAR: Resulta que solo veo estas bajadas cuando no lo estoy golpeando perfectamente, por lo tanto, corta la línea de señal a gnd. Esto significa que de todos modos no puedo confiar en que este evento suceda. Vuelva a replantearse cómo despertar la MCU con un botón.

    
pregunta Peter Savnik

1 respuesta

0

La solución que terminé usando era utilizar el temporizador Watch Dog. Usando la Biblioteca Arduino OneWire, la búsqueda de un botón presente lleva aproximadamente menos de 2 ms. Ahora utilizo el WDT para activar mi dispositivo cada 250 ms para buscar el botón. Esto no es tan eficiente como si la MCU se despertara solo, entonces hay un botón presente. Sin embargo, todavía es relativamente baja potencia.

Encontré gran información sobre cómo activar el dispositivo usando el WDT aquí: enlace

    
respondido por el Peter Savnik

Lea otras preguntas en las etiquetas