MCP23017 - detectando el estado del bit IOCON.BANK después del reinicio de MCU

0

Hoja de datos para referencia aquí .

Los registros de puertos del expansor de E / S I2C MCP23017 se pueden configurar de dos maneras utilizando el bit IOCON.BANK de la siguiente manera:

  

Si BANK = 0, los registros A / B están emparejados. por   ejemplo, IODIRA se asigna a la dirección 00h y   IODIRB se asigna a la siguiente dirección (dirección   01h). El mapeo para todos los registros es de 00h.   -15h.

     

Si BANK = 1, los registros asociados con cada uno   Los puertos están segregados. Registros asociados a   PORTA se asignan desde la dirección 00h - 0Ah y   los registros asociados con PORTB están mapeados   de 10h - 1Ah.

Al cambiar el bit IOCON.BANK , la dirección del registro IOCON cambia por sí misma, consulte la tabla 3-4, 3-5 en la hoja de datos.

Entonces, en el caso de un restablecimiento de MCU, ¿cómo determina el estado de IOCON.BANK sin restableciendo el MCP23017 para que no se vea afectado ningún periférico conectado al MCP23017?

    
pregunta Per

1 respuesta

1

Mi conclusión es que no puede determinar el estado de IOCON.BANK, pero puede obtener un valor conocido sin restablecer el MCP23017 mediante el siguiente procedimiento:

  1. Supongamos IOCON.BANK = 1
  2. Lea el registro 0x05.
  3. Borre el bit 7 (probablemente el BANK bit) del valor almacenado y luego vuelva a escribir ese valor en 0x05.

En este punto, tienes:

  • Se cambió de BANK = 1 a BANK = 0

o

  • Inhabilitado GPINTENB.GPINT7

Para finalizar, establece GPINTENB.GPINT7 si es necesario.

Ahora tienes un estado conocido con IOCON.BANK = 0 .

    
respondido por el Per

Lea otras preguntas en las etiquetas