¿Subir / bajar un pin en un PCA9536 no se registra?

1

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.

Hoja de datos de PCA9536 aquí

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.

    
pregunta GeoReb

1 respuesta

0

Su software I2C debe ser algo deficiente, o su "corto" no es lo suficientemente fuerte como para arrastrar el voltaje del pin por debajo del umbral lógico "0". Según el diagrama de bloques simplificado para 9536 puertos de E / S,

elpinpadestáconectadodirectamentealaentradaDdelregistrodelecturainterno.Porlotanto,silasalidaseestableceen"1" pero está cortocircuitada a tierra (con unas pinzas), el transistor Q1 del lado alto se sobrecargará a tierra, y una lectura del registro I2C "0" debería detectarlo. Y de hecho hace esto, como acabo de verificar.

Según la hoja de datos de PCA9536, el controlador del lado alto (Q1) tiene una impedancia de aproximadamente 50 ohmios (10 mA de carga arrastra el nivel de salida en 500 mV). Si el cortocircuito del pin conducido internamente a "1" está dañando el IC o no, es una pregunta diferente.

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas