Tengo una placa con un transformador y un MCP23017 . Esta placa está conectada a otra placa a través de 4 cables que traen energía (+ 5V, GND) y un bus I2C para un ATmega328P que actúa como maestro.
El ATmega habilitará algunos pines en el MCP23017 cuando el usuario seleccione una entrada. El pull-up I2C está en el lado ATmega.
Una vez que se habilite un pin, el MCP23017 lo mantendrá habilitado hasta que se reprograme o reinicie. Quiero restablecer el MCP23017 si el cable está desconectado, para desconectar los pines, pero no sé cómo detectarlo, dado que el hecho de desconectar el cable está cortando la conexión I2C (y desconectando la alimentación del ATmega). ).
La única solución que me viene a la mente es usar una segunda unidad de usuario para hacer ping al ATmega principal y eliminar el sesgo en el MCP23017 si la placa principal ya no responde, pero me encantaría encontrar una solución más sencilla.