MCP23017 no causa interrupciones usando un interruptor normalmente abierto en el encendido

Estoy trabajando en un proyecto en el que estoy usando dos botoneras de 4x4. Necesitaría usar dos MCP23017 para interrupciones de entrada para admitir los 32 botones. Estoy usando un Netduino y me encuentro con un problema del que no estoy seguro si está relacionado con el software o con el hardware.

Estoy usando este sitio web como una guía para comprender y configurar el MCP23017 y estoy siguiendo todos los pasos, incluido el diagrama a continuación:

diagrama

El diagrama muestra la dirección establecida, SDA y SCL tienen una resistencia, el restablecimiento está sesgado, un pin en Netduino está configurado para manejar la interrupción y se usa un microbotón para probar la funcionalidad de interrupción.

Configuré el pin MCP23017 para el interruptor como entrada, lo configuré para usar una resistencia pull up, luego configuré el pin como una interrupción. El pin en el Netduino también está configurado para usar una resistencia pull-up y para causar interrupciones cuando está bajo. Esto funciona perfectamente bien siempre que Netduino se inicie con el interruptor cerrado . Si el interruptor está abierto (como lo está normalmente), nunca se dispara ninguna interrupción. Necesito iniciar Netduino mientras presiono el microbotón para obtener el comportamiento deseado. No estoy seguro de qué está causando esto. Estoy exhibiendo el mismo comportamiento que la persona que comenta al final de esta página .

¿Hay una solución de software o hardware para esto?

Respuestas (1)

1.7.5 CONDICIONES DE INTERRUPCIÓN Hay dos configuraciones posibles que provocan interrupciones (configuradas a través de INTCON):

1. Los pines configurados para el cambio de interrupción en el pin provocarán una interrupción si un pin cambia al estado opuesto. El estado predeterminado se restablece después de que ocurre una interrupción y después de borrar la condición de interrupción (es decir, después de leer GPIO o INTCAP). Por ejemplo, una interrupción ocurre cuando una entrada cambia de '1' a '0'. El nuevo estado inicial para el pin es un 0 lógico después de que se borra la interrupción.

2. Los pines configurados para interrupción al cambiar el valor del registro provocarán una interrupción si el pin de entrada correspondiente difiere del bit de registro. La condición de interrupción permanecerá mientras exista la condición, independientemente de si se lee INTCAP o GPIO.