Introducción IIC y sus interrupciones

De Wikitronica
Saltar a: navegación, buscar

Introduccion IIC

El Inter-Integrated Circuit (IIC) provee un método de comunicación entre varios dispositivos. Está diseñado para operar hasta los 100 kbps con la máxima carga del bus y del tiempo. El dispositivo es capaz de operar a tasas de baudios altas, sin sobrecargar el bus. La longitud máxima de comunicación y el número de dispositivos que pueden ser conectados está limitado por la capacitancia del bus, la cual es de 400 pF.

Configuración del módulo:

Los pines SDA y SCL del módulo IIC1 pueden ser reposicionados por software usando el registro SOPT2[IIC1PS] tal como se muestra en la siguiente tabla. Este bit selecciona cual puerto de E/S con propósito general está asociado con la operación del IIC1.

Opciones de Posición del IIC1
SOPT2[IIC1PS] Pines para SDA Pines para SCL
0 por defecto PTA2 PTB6
1 PTA3 PTB7

Vectores de Interrupción:

Para la serie de microcontroladores MC9S08QE128, los cuales tienen dos IIC, el vector de interrupciones es compartido por ambos módulos IIC. Cuando las interrupciones son habilitadas para ambos módulos, se debe verificar el bit de IICIF (que hace referencia a la bandera de interrupciones) de los registros IIC1S y IIC2S (estos son los registros de status) para determinar cuál módulo es el causante de la interrupción.

Características:

El IIC incluye las siguientes características:

  • Compatibilidad con el bus estándar del IIC.
  • Operación con múltiples maestros.
  • Software programable para una de las 64 frecuencias diferentes del reloj serial.
  • Software que permite seleccionar el bit de reconocimiento (acknowledge bit)
  • Manejo de interrupciones mediante la transferencia de datos byte por byte.
  • Resolución de las interrupciones perdidas con un modo que hace intercambio automático de maestro a esclavo.
  • Llamado a las direcciones de identificación de las interrupciones.
  • Generación y detección de las señales START y STOP.
  • Generación repetida de la señal START.
  • Generación y detección del bit acknowledge.
  • Detección de la disponibilidad del bus.
  • Llamada general de reconocimiento.
  • Extensión de la dirección a 10 bits.

Modos de Operación:

Se presenta a continuación una breve descripción de los modos de operación del IIC:

  • Modo Corriendo o “Run”: Este es el modo de operación básico. Para conservar la energía en este modo, inhabilite el módulo.
  • Modo de espera o “Wait”: El módulo seguirá funcionando mientras que el microcontrolador esté en modo de espera y pueda proporcionar una alarma de despertador.
  • Modo detenido o “Stop”: El IIC está inactivo en el modo Stop para reducir el consumo de energía. La instrucción de Stop no afecta a los registros de estados del IIC. Esta instrucción reiniciará el contenido de los registros.

Descripción de Señales externas

Se describe a continuación las señales que son accesibles por cada usuario:

  • SCL — Línea del Reloj Serial (Serial Clock Line): Es bidireccional, y es la línea del reloj serial del sistema del IIC.
  • SDA - Línea de Data Serial (Serial Data Line): Es la línea de datos serial del sistema del IIC. Es bidireccional.


Interrupciones

El IIC puede generar sólo una interrupción. Para que se genere una interrupción, debe ocurrir cualquiera de los eventos de la tabla siguiente, siempre y cuando el bit IICIE esté activado:

Interrupciones mediante IIC
Fuente de interrupción Status Flag Local Enable
Completar la transferencia de 1 byte TCF IICIF IICIE
Ajuste de direcciones de llamada recibidas IAAS IICIF IICIE
Pérdida de arbitraje ARBL IICIF IICIE

La interrupción es impulsada por el bit IICIF (del IIC Status Register) y es enmascarada con el bit IICIE (del IIC Control Register). El bit IICIF se puede limpiar asignándole un 1 en la rutina de interrupción. El usuario puede determinar el tipo de interrupción mediante la lectura del Status Register.

Interrupción por transferencia de byte

El bit TCF (transfer complete flag) se establece a flanco de bajada del 9th clock para indicar la completación de la transferencia del byte

Interrupción por detección de dirección

Cuando la dirección de llamadas coincide con la dirección del esclavo programado (IIC address register) o cuando el bit GCAEN está activado y una llamada general es recibida, el bit IAAS en el Status Register es activado. La CPU es interrumpida siempre y cuando se active el bit IICIE. La CPU debe revisar el bit SRW y activar su modo Tx en consecuencia.

Interrupción por pérdida de arbitraje

El IIC es un verdadero bus con múltiples maestros que permite más de un maestro para ser conectado en él. Si dos o más maestros tratan de controlar el bus al mismo tiempo, se determina la prioridad relativa de los maestros en contienda por un procedimiento de arbitraje de datos. El módulo IIC asegura esta interrupción cuando pierde el proceso de arbitraje de datos y el bit ARBL en el Status Register está activado.

El arbitraje se puede perder en las siguientes circunstancias:

  • SDA probado como bajo cuando el maestro produce un alto durante un ciclo de dirección o de transmisión de datos.
  • SDA probado como bajo cuando el maestro produce un alto durante el bit de aviso de un ciclo de recepción de datos
  • Un ciclo de arranque se intenta cuando el bus está ocupado
  • Un ciclo repetido de arranque es requerido en modo esclavo
  • Se detecta una condición de parada cuando el maestro no lo solicitó

Resets

El IIC se desactiva luego de un RESET. El IIC no puede provocar un reinicio o reseteo del microcontrolador.

Contributors

MariaALE, YoelD