Diferencia entre revisiones de «Introducción IIC y sus interrupciones»
Línea 67: | Línea 67: | ||
* SDA - Línea de Data Serial (Serial Data Line): Es la línea de datos serial del sistema del IIC. Es bidireccional. | * 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: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |+ 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. |
Revisión del 12:30 6 jul 2016
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.
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:
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.