Aquí es una pregunta bastante oscura, con respecto a un IC de expansión I2C muy específico, sin embargo, creo que este ejemplo puede replicarse con la mayoría de los IC de bus de expansión.
Estoy usando un PCA9536 para encender y apagar los 4 pines y leer los estados de las entradas.
Cuando se utiliza el PCA9536, se puede usar un registro de comando para determinar, dirección de pin, estado e incluso invertir la lógica entrante.
Mi aplicación requiere la capacidad de leer el estado eléctrico de cualquier pin en cualquier momento, sin importar si es una entrada o una salida.
Este IC supuestamente hace esto (página 16):
7.3.2.3 Descripciones de registro
El registro del puerto de entrada (registro 0) refleja los niveles lógicos entrantes de los pines, independientemente de si El pin se define como una entrada o una salida por la Configuración registrarse.
Entonces, para probar esto, realicé las siguientes dos pruebas:
- Prueba A
He establecido un pin para que sea una salida y lo hice BAJO, luego lo coloqué ALTO
La lectura del valor del pin, utilizando el Registro I2C 0, devuelve un valor de ALTO.
¡GRAN!
- Prueba B
He establecido un pin para que sea una salida y lo hice ALTO, luego lo bajé
Leyendo el valor del pin utilizando el Registro I2C 0, devuelve un valor de ALTO.
¡NO ES GRANDE!
Este es mi problema, ya que necesito detectar un corto ALTO o BAJO .
¿Cuáles son las posibles razones para esto? ¿Hay alguna solución por favor? Gracias de antemano por cualquier ayuda que pueda ofrecerme.