móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

8
EL PUERTO MSSP EN MODO I2C El módulo MSP (Módulo de Co- municaciones Serie Síncrono) lleva a cabo todas las funciones para el bus I2C tanto en modo Master como Slave (incluida la llamada general) y está provisto de interrupciones en los bits de Start y Stop. Tiene dos formatos de direcciones, de 7 y 10 bits de R/W. Cuando los pines SCL y SDA se configuran como entradas, disponen de un filtro de interferencias (glitch) que trabaja en los modos de 100 Khz. y 400 Khz. Cuando actúan como sa- lidas, la velocidad de transferencia es independiente de la frecuencia de re- loj del dispositivo. Estos dos pines se emplean para transferir datos, donde el pin SCL envía o recibe la señal de reloj y el pin SDA transmite o recibe los datos; ambas patillas son confi- guradas automáticamente cuando se habilita el modo I2C del módulo SSP al poner a “1” el bit SSPEN (SSP- CON<5>). Para realizar una transmisión en el bus I2C, siempre se inicia con una secuencia Start, seguida de los bits de dirección del circuito que actúa co- mo esclavo y a continuación, el im- pulso que indica si se procederá a le- er o a escribir en el esclavo seleccio- nado. Después del impulso R/W (primer byte) el circuito que actúa co- mo Master espera recibir un bit (es- tado bajo) de reconocimiento (ACK) y si no se recibe, se aborta la transfe- rencia. A continuación del ACK co- CURSO DE MICROCONTROLADORES PIC16F87X (...y X) CURSO DE MICROCONTROLADORES PIC16F87X (...y X) Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro Figura 2.- Diagrama de bloques del I 2 C en modo Master Figura 1.-Diagrama de bloques del módulo SSP en modo I2C Slave. En él se puede ver los dos pines del circuito que intervienen en el proceso.

description

Figura 1.-Diagrama de bloques del módulo SSP en modo I2C Slave. En él se puede ver los dos pines del circuito que intervienen en el proceso. Fernando Remiro Domínguez Profesor de Sistemas Electrónicos IES. Juan de la Cierva www.terra.es/personal/fremiro Figura 2.- Diagrama de bloques del I 2 C en modo Master

Transcript of móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

Page 1: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

EL PUERTO MSSP EN MODO I2C

El módulo MSP (Módulo de Co-municaciones Serie Síncrono) lleva acabo todas las funciones para el busI2C tanto en modo Master como Slave(incluida la llamada general) y estáprovisto de interrupciones en los bits deStart y Stop. Tiene dos formatos dedirecciones, de 7 y 10 bits de R/W.

Cuando los pines SCL y SDA seconfiguran como entradas, disponende un filtro de interferencias (glitch)

que trabaja en los modos de 100 Khz.y 400 Khz. Cuando actúan como sa-lidas, la velocidad de transferencia esindependiente de la frecuencia de re-loj del dispositivo. Estos dos pines seemplean para transferir datos, dondeel pin SCL envía o recibe la señal dereloj y el pin SDA transmite o recibelos datos; ambas patillas son confi-guradas automáticamente cuando sehabilita el modo I2C del módulo SSPal poner a “1” el bit SSPEN (SSP-CON<5>).

Para realizar una transmisión enel bus I2C, siempre se inicia con unasecuencia Start, seguida de los bits dedirección del circuito que actúa co-mo esclavo y a continuación, el im-pulso que indica si se procederá a le-er o a escribir en el esclavo seleccio-nado. Después del impulso R/W(primer byte) el circuito que actúa co-mo Master espera recibir un bit (es-tado bajo) de reconocimiento (ACK)y si no se recibe, se aborta la transfe-rencia. A continuación del ACK co-

CURSO DE MICROCONTROLADORESPIC16F87X (...y X)

CURSO DE MICROCONTROLADORESPIC16F87X (...y X)

Fernando Remiro DomínguezProfesor de Sistemas Electrónicos

IES. Juan de la Ciervawww.terra.es/personal/fremiro

Figura 2.- Diagrama de bloques del I2C en modo Master

Figura 1.-Diagrama de bloques del módulo SSP en modo I2CSlave. En él se puede ver los dos pines del circuito queintervienen en el proceso.

Page 2: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

MICR

OCON

TROL

ADOR

ES

65RESISTOR

rrecto, se envía otro byte que puedeser una dirección, un comando, etc.Si la secuencia de transmisión finali-za, el Slave pondrá a “1” la señal SDA(ACK alto) para que el master puedagenerar la secuencia de Stop.

En una operación I2C con el mó-dulo MSSP intervienen seis registros:● Registro de control SSPCON● Registro de control SSPCON2● Registro de estado SSPSTAT● Buffer serie de Transmisión / Re-cepción SSPBUF● Registro de desplazamiento SSPSR,que no es accesible directamente.● Registro de dirección SSPADD.

Los cuatro bits del registro de con-trol SSPCON (SSPCON <3:0>) per-miten en control del módulo I2C enuna de las siguientes formas:● Modo Slave del I2C ( 7 bits de di-rección)● Módulo Slave del I2C (10 bits dedirección)● Modo Master del I2C, reloj = SC/4(SSPADD+1)

Antes de seleccionar uno de losmodos del I2C, es necesario progra-mar los pines SCL y SDA con los va-lores apropiados en los bits del regis-tro TRIS. Con sólo seleccionar unode los modos y colocando a “1” el bitSSPEN, las patillas SCL y SDA seconfiguran automáticamente comoseñal de reloj y datos respectivamen-te. Con el bit CKE (SSPSTAT<6>)se configuran los niveles de entradapara estas patillas. Cuando CKE es“1”, los niveles están de acuerdo a lasespecificaciones SMBUS; sin em-bargo, cuando es “0”, los niveles se-rán conformes a las especificacionesdel bus I2C.

El registro SSPSTAT, que es sólode lectura, contiene el estado de losdatos a transferir. Esta información

incluye la detección de los datos bitsde Start o Stop, indica si el byte reci-bido es un dato o una dirección de 10bits y si será leído o escrito.

El registro SSBUF es de lectu-ra/escritura y en él se guardan los da-tos a transferir por el bus o del que seleerán los datos recibidos. En el modode transmisión los modos almacena-dos en este registro se transfieren alregistro SSPSR desde el cual saldránen serie por la línea SDA. Los dos re-gistros forman un doble buffer quepermiten que en recepción se “invier-ta” el sentido de los datos; son reci-bidos en serie por el registros SSPSRy transferidos al SSPBUF cuando larecepción finaliza al completarse unbyte. Si se recibe otro byte sin que elanterior se haya leído, el bit SSPOV(SSPCON<6>) se pone a “1” para in-dicar que el byte recibido en el regis-tro SSPSR se ha perdido.

El registros SSPADD ,mantienela dirección en el modo de 10 bits esnecesario escribir el byte alto de la di-rección (1111 0A9 A8 0) seguido delbyte de menor peso (A7:A0).

MODO ESCLAVOCuando el bus I2C se configura co-

mo esclavo, las patillas SCL y SDAdeberán configurarse como entradascon los valores apropiados en el re-gistro TRISC. El módulo SSP anula-rá el estado de las entradas con los da-tos de salida cuando así se requiera(transmisión esclavo). Cuando una di-rección o un dato transferido despuésde una dirección, se ha recibido, elhardware genera automáticamente elimpulso ACK y carga los datos a tra-vés del registro SSPSR en el registroSSPBUF.

El módulo SSP no creará el im-pulso de reconocimiento ACK encualquiera de las siguientes dos situa-ciones ( o en las dos a la vez):

● El bit indicador de “buffer lleno”BF (SSPSTART <0>) se ha puesto auno antes de que la transferencia searecibida.

● El bit indicador “desbordamientoSSPOV (SSPCON<6>) se ha puestoa uno antes de que la transferencia searecibida.

Si el bit BF está a “1”, el registroSSPSR no carga los valores en elSSPBUF pero, sin embargo, los bitsSSPIF y SSPOV si se ponen a “1”.

DIRECCIONAMIENTOUna vez que el módulos MSSP se

ha habilitado, espera que ocurra unacondición Start, a continuación losochos bits son tomados y desplazadosen el registro SSPSR por cada flancoascendente de la señal de reloj SDL.El valor del registro SSPSR <7:1> escomparado con el del SSPADD en elflanco de bajada del octavo impulsode reloj, si la dirección es igual y ade-más los bits BF y SSPOV están a ce-ro también ocurren los siguienteseventos:

● El valor almacenado en el registroSSPSR es cargado en el registro SSP-BUF en la bajada del octavo impulsoSCL.● El bit BF (“buffer lleno”) se ponea “1” al bajar a cero el octavo impul-so de reloj.● Se genera un impulso #ACK.● El Flag de interrupción SSPIF(PIR1<3>) se pone a “1” para generarla interrupción si es que está habilita-da. En el flanco de bajada del nove-no pulso de la señal de reloj SCL.

En el modo de direccionamientode 10-bits, es necesario recibir por elSlave dos bytes de dirección. Loscinco bits mas significativos (MSbs)del primer byte de dirección espe-cifica si ésta es una dirección de 10bits. El bits (SSPSTAT <2>) debeespecificar escritura, de esta mane-ra el dispositivo slave, recibirá unsegundo byte de dirección.

Para una dirección de 10-bits, elprimer byte será igual a ‘1111 0 A9A8 0 ' dónde A9 y A8 son los dos me-nos significativos (MSbs) de la di-rección. La sucesión de eventos du-

Figura 3.- El Master Transmite información al Slave

Page 3: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

rante una dirección de 10-bits es co-mo sigue, con los pasos 7-9 con el es-lave-transmitiendo:

1. Recibe el primer byte (alto) deDirección (los bits , BF, y el bit UA(SSPSTAT <1>) se ponen a "1").

2. Se actualiza el registro SS-PADD con segundo (bajo) byte deDirección (se ponen a cero los bitsUA y se libera la línea SCL ).

3. Se leen los registros SSPADD(se pone a cero el bit BF) y el bit deflag se pone a cero.

4. Se recibe el segundo (bajo) by-te de Dirección (los bits ,BF, y UA seponen a uno).

5. Se actualiza el registro SS-PADD con el primer (alto) byte deDirección. Esto pone a cero el bit UAy deja libre la línea SCL.

6. Se lee el registro SSPADD (sepone a cero el bit BF) y el bit de flagse pone a cero.

7. Se recibe la condición de Startrepetida.

8. Se recibe el primer byte (al-to) de Dirección (los bits y BF seponen a uno).

9. Se lee el registro SSPADD (sepone a cero el bit BF) y el flag se po-ne a cero.

RECEPCIÓN Y TRANSMISIÓN EN EL MODO SLAVE

Cuando el bit del byte de direc-ción que se ha recibido está a cero yocurre una igualdad en la dirección,el bit del registro se pone a cero y secarga la dirección recibida en el re-gistro SSPADD. Cuando el byte dedirección produce un desbordamien-to no se envía el impulso de recono-cimiento ACK. Esta situación está de-finida porque uno de los bits BF(SSPSTAT <0>) o SSPOV (SSP-CON<6>) o ambos, están a uno. Porcada byte recibido el SSP puede oca-sionar una interrupción si previamen-te se ha puesto a cero el bit (PIR<3>).El registro SSPSAT se utiliza para co-nocer el estado del byte recibido.

Si el bit recibido en el byte de di-rección se encuentra a “1” y la direc-ción es reconocida, el bit del regis-tro se pone a “1” y la dirección se al-macena en el registro SSPADD, seenvía el impulso de reconocimientoACK con el noveno bit de reloj y semantiene a cero el pin SCL. El dato atransmitir se deberá cargar en el re-gistro SSPADD, con lo que tambiénse cargará en el SSPSR, El pin SCLse habilita con el bit CLK (SSP-CON<4>) y el master mantendrá elcontrol de la señal de reloj. El masterobtendrá un bit de datos por cada im-pulso de reloj, en la bajada del octavobit todos los bits estarán ya desplaza-dos en los registros SSPSR. Por ca-da byte así transmitido el SSP oca-sionará una interrupción si previa-

Nota: La condición de StartRepetida (paso 7) en el modo del10-bits se utiliza solo por la ne-cesidad de emparejar la primeradirección de 7 bits. . El usuariono actualiza el SSPADD para elsegundo byte de la dirección.

Estado De los bits enla transferencia

0 0 SI SI SI1 0 NO NO SI1 1 NO NO SI0 1 SI NO SI

SSPSRSSPBUF

GeneraimpulsoACK

Sube a uno el bit SSPIF(CCP genera interrupciónsi está habilitada)

ACTUACIÓN DE LOS BYTES RECIBIDOS EN LA TRANSFERENCIA DE DATOS

BF SSPOV

Figura 4.- Cronograma del protocolo I2C en recepción y modo de direccionamiento de 7 bits

Figura 5.- Cronograma del protocolo I2C en transmisión y modo de dirección de 7 bits

Nota : Las células sombreadas muestran las condiciones dónde el soft-ware del usuario no puso a cero la condición de desbordamiento

Page 4: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

mente se había puesto a cero el bit(PIR1<3>). El registro SSPSAT seempleará para conocer el estado delbyte transmitido.

El impulso ACK se activa en lasubida del noveno bit SCL. Si la lí-nea SDA se mantiene a nivel alto (nohay impulso ACK), el dato a transfe-rir se ha completado. Si el impulsoACK no es enclavado por el esclavo,este se prepara para otro evento Start.Pero si la línea SDA está a nivel bajo(presencia ACK) el dato a transmitirse cargará en el registro SSPADD ypor consiguiente en el SSPSR.

LLAMADA GENERALYa hemos comentado que el pri-

mer byte que envía el master despuésde la condición Start corresponde a ladirección del esclavo al que van diri-gidos los siguientes datos. Excepcio-nalmente se puede realizar una lla-mada general. Es decir, a todos los es-clavos, a la que, en teoría, todosdeberán responder.

Esta llamada general tiene lugarcuando la dirección enviada tiene to-dos los bits a cero (incluso ) y es re-conocida si el bit GCEN está habili-tado (SSPCON2<7> =1).

OPERACIÓN SLEEPMientras está en modo Sleep, el

módulo I2C puede recibir direccio-nes o datos, y cuando se empareja ladirección o byte completo se despier-ta el procesador del modo Sleep (si lainterrupción de SSP se habilita).

EFECTO DEL RESETUn reset deshabilita el módulo

SSP y termina con la transferencia encurso.

MODO MASTERTrabajando en modo master en el

bus I2C puede genera interrupcionescuando son detectadas las condicio-nes de START y STOP. Cuando seocasiona un reset o se deshabilita elmódulo MSSP los bits STOP (P) ySTART (S) se borran. En este modode trabajo las líneas SCL y SDA sonmanipuladas por el hardware del pro-pio puerto MSSP. Cuando se habilitala interrupción del SSP el flag se pon-drá a uno cuando ocurra uno de lossiguientes eventos:● Una condición de Start● Una condición de Stop

Figura 6.- Cronograma del protocolo I2C slave, en transmisión y modo de dirección de 10 bits

Figura 7.- Cronograma del protocolo I2C slave, en recepción y modo de dirección de 10 bits

Figura 8.- En modo I2C se puede realizar una llamada general a todos los esclavos. Ladirección es 00H con R/W a cero.

Page 5: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

MICR

OCON

TROL

ADOR

ES

68RESISTOR

● Un byte de datos ha sido transmiti-do/recibido● Se ha transmitido el bit de recono-cimiento ACK● Repetición de condición Start.

Cuando el dispositivo está confi-gurado como master es el encargadode generar todos los impulsos de relojy las condiciones START y STOP;

la transferencia finaliza con una con-dición STOP o con una repetición dela condición START, Con la repeti-ción de ésta última condición, tienelugar una nueva transferencia de da-tos, por lo que el bus I2C no se libera.

El master que transmite, generaun impulso de reloj (SCL) por cadabit a transmitir por la patilla SDA. Elprimer byte ha de ser siempre la di-

rección del dispositivo esclavo al queirán destinados los datos (o del que serecibirán). Después de este primer by-te se envía el bit de lectura o escritu-ra, un uno en este bit indica que seprocederá a leer del circuito esclavo,por el contrario, cuando es un cero elesclavo reconocerá los siguientes by-tes como bits a escribir en su memo-ria, registros, etc. Después de cada

Registros asociados con la operación I2CDirección Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en POR,BOR Valor en el resto de Reset0Bh,8Bh10Bh,18Bh INTCON GIE PEIE(1) TOIE INTE RBIE TOIF INTF RBIF 0000 000x 0000 000u0Ch PIR1 PSPIF1 ADIF(1) RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 00008Ch PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 00000Dh PIR2 -- (2) -- EEIF BCLIF --- --- CCP2IF -r-0 0 - -0 -r-0 0 - -08Dh PIE2 -- (2) -- EEIE BCLIE --- --- CCP2IE -r-0 0 - -0 -r-0 0 - -087 TRISC PORTC (Direcciónamiento de los Datos) 1111 1111 1111 111113h SSPBUF Registro Buffer Transmisión/Recepción del módulo SSP xxxx xxxx uuuu uuuu14h SSPCON WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPPM0 0000 0000 0000 000094h SSPSTAT SMP SKE D/#A P S R/W UA BF --00 0000 --00 0000

Leyenda x = desconocido u= sin cambios - = Sin implementar, se lee “0”Nota 1: Estos bits están reservados en los modelos de 28 pines, mantener siempre borrados

2: Estos bits están reservados, mantener siempre borrados

Figura 9.- Diagrama de bloques del SSP configurado como I2C en modo Master

Page 6: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

byte transmitido el módulo se espera a recibir un bit dereconocimiento ACK y por último, tendrá lugar una re-petición de la condición START o STOP para finalizarla operación.

Cuando el master tiene que actuar como receptor elprimer byte que tiene que transmitir es la dirección delesclavo del que procederá a leer, seguido del bit (en es-te caso, el bit será un uno porque va a proceder a leerde esclavo). Los bits de datos los recibir a través de la pa-tilla SDA por cada impulso de reloj, SCL, que genere.Después de cada byte recibido se genera un bit de re-conocimiento ACK y se finalizará con una repeticiónde la condición START o STOP.

Una secuencia típica de transmisión será lasiguiente:

a) El usuario genera una condición START habili-tando el bit START (SEN) del registro SSPCON2.

b) El se pone a uno. El módulo espera el tiemporequerido para completar la condición de START an-tes de que se inicie una nueva operación.

c) El usuario cargará en el registro SSPADD la di-rección del esclavo.

d) La dirección es desplazada bit a bit a la salidaSDA

e) El módulo MSSP desplaza el bit ACK del dispo-sitivo esclavo y escribe su valor en el registro SSPCON2(SSPCON2<6>).

f) El módulo genera una interrupción cuando finali-za el noveno impulso de reloj (pone a uno ).

g) El usuario cargará los ocho bits de datos en el regis-tro SSPADD

Figura 10.- Diagrama de flujos quedeberá seguir el programa paragenerar una condición de START

Page 7: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

MICR

OCON

TROL

ADOR

ES

70RESISTOR

h) Los datos son desplazados bita bit a la salida SDA hasta transmitirlos ocho bits.

i) El módulo MSSP desplaza el bitACK recibido del dispositivo esclavoy escribe su valor en el registro SSP-CON2 (SSPCON2<6>).

j) Se genera una interrupción al fi-nalizar el noveno impulso de reloj (po-ne a “1” ).

k) El usuario genera una condi-ción STOP habilitando el bit PEN enel registro SSPCON2

l) Se genera una interrupción cuan-do se completa la condición de STOP.

La condición de START la iniciael usuario cuando habilita el bit SEN(SSOCIN2 <0>). La velocidad del ge-nerador de baudios se recarga con elcontenido de los bits del registro SS-PADD<6:0> y se inicia la cuenta. Lasdos patillas (SDA y SCL) se manten-drán a nivel alto hasta que transcurra eltiempo TBRG (BRG=Baud Rate Ge-nerator) después del cual, la patilla SDAbajará a cero. Esta acción de bajar SDAmanteniendo a uno la señal de reloj es laque indica que la condición START hatenido lugar y causa que suba a uno el

bit S (SSPSTAT <3>). Seguidamente,el generador se vuelve a recargar conel contenido de SSPADD<6:0> y sereanuda de nuevo la cuenta. Una vezhaya transcurrido el tiempo TBRG elbit SEN se borrará y se suspenderá laacción de mantener congelada a nivelbajo la patilla SDA. SCL bajará a cero.

Si el usuario intenta escribir en elregistro SPBUF cuando una condi-ción START está en progreso el bitWCOL subirá a uno y no se cargará elregistro SPBUF.

REPETICIÓN DE LA SEÑAL DE START

Hay muchos casos en los que tienelugar un continuo envió o recepción dedatos del mismo dispositivo esclavo.Para estos casos, no es necesario repe-tir todas las secuencias iniciales (unasecuencia START seguida de la direc-ción del esclavo) basta con repetir unacondición START para proseguir conel envío o recepción de datos.

Una repetición de la condiciónSTART tiene lugar si después de quebaje a cero el noveno impulso de relojhay una subida a uno de SDA y semantiene durante TBRG, después sesube el reloj y también se mantienedurante TBRG. Por último, se baja acero la patilla SDA. En realidad, siobservamos el diagrama de tiemposveremos que es muy similar a la con-dición START del inicio.

Para ocasionar la repetición hay queponer a uno el bit RSEN (SSPCON2< 1>) cuando el módulo I2C está inac-tivo. Al realizarlo, la patilla SCL semantiene a nivel cero y el índice de ve-locidad del generador de baudios se re-carga con el contenido del registro SS-PADD<6:0> para iniciar la cuenta. Lapatilla SDA es liberada (se lleva a uno)y se desencadena el proceso descrito enel párrafo anterior, finalizando con elborrado del bit RSEN. Inmediatamen-te que se detecta la condición STARTen las patillas SDA y SCL, el bit S(SSPSTAT <3> subir a uno; a conti-nuación se deber escribir en el registroSSPBUF con los siguientes bytes.

SECUENCIA DERECONOCIMIENTO ACK

La secuencia de reconocimiento sehabilita poniendo a uno el bit ACKEN(SSPCON2<4>). Cuando este bit estáa uno la patilla SCL es puesta a cero y elcontenido del bit ACK se presenta en

Figura 11.- Diagrama de flujosque deberá seguir el programapara generar una condición deSTART

Figura 12.- Diagrama de flujo que deberá de seguir el programa paragenerar una repetición de la condición de START

Page 8: móduloSSPenmodoI2CSlave.Enélsepuedeverlosdospinesdelcircuitoqueintervienenenelproceso.FernandoRemi

MICR

OCON

TROL

ADOR

ES

71RESISTOR

la patilla SDA. Si se desea generar un ACK el bitACKDT deber estar borrado, si no, se deberá po-ner a uno antes de iniciar la secuencia de recono-cimiento. El generador de baudios contará un pe-riodo TBRG antes de llevar a nivel alto la patillaSCL volver a contar otro periodo y la llevar a ni-vel bajo. A continuación, el bit ACKEN será bo-rrado automáticamente, el generador de baudiosse detendrá y el módulo SSP se mantendrá en mo-do inactivo.

También en este caso, si se trata de escri-bir en el registro cuando está en progreso lasecuencia de reconocimiento, subir a uno el,bit WCOL y no tendrá efecto la escritura en elregistro.

LA CONDICIÓN DE STOPPodemos decir que esta secuencia es la inver-

sa de la START, se inicia habilitando el bit PEN(SSPCON2<2>). La secuencia finaliza cuandosuba a uno la patilla SDA (también subir a uno elbit P (SSPSTAT <4>), transcurra el tiempoTBRG, se borre el bit PEN y suba a uno el .

En el próximo número de esta revista vere-mos algunos dispositivos I2C, y como trabajancuando se le conectan a un microcontroladorPIC16F87X.

Figura 13.- Diagrama de flujos completo que deberáseguir el programa para una transmisión en modomaster.

Figura 14.- Diagrama de flujos que debe seguir elprograma para recepción en modo master

Figura 15.- Diagrama de flujos que deberá seguir el programapara enviar una condición de STOP