You are on page 1of 22

1

COMUNICACIN I2C
PROTOTIPO BRAZO ROBTICO BM001



Autor: Oscar Eduardo Herrera Zuleta
Estudiante de Ingeniera Electrnica.
Corporacin Universitaria Autnoma del Cauca.

Revisado y Corregido Por:
Ing. Francisco Franco
Magister en Electrnica y Telecomunicaciones.
Docente e Investigador.
2

Tabla de contenido

Tabla de figuras..... 3

1. Introduccin comunicacin I2C................................................................. 4

2. Estados de la comunicacin I2C.... 4

3. Transmisin de datos por el bus I2C........................................................ 5

3.1. Envi de datos por parte del Maestro(master) 6

4. Descripcin de registros........................................................................... 7

5. Velocidad de transmisin por el bus I2C.................................................. 8

6. Descripcin de las resistencias del PULL_UP......................................... 9

7. Configuracin de I2C en Software........................................................... 9

7.1. Modo Maestro (Master) . 9

7.2. Modo Esclavo (Slave) ... 10

8. Ejemplo de transmisin de datos por el bus I2C. 10

8.1. Circuito esquemtico a realizar en protoboard. 11

8.2. Creacin del Proyecto en MPLAB IDE. 12

8.3. Configuracin del programa en modo maestro... 17

8.4. Configuracin del programa en modo esclavo. 19

8.5. Esquema de Funcionamiento en hardware. ...22

9. Bibliografa 23




3

Tabla de Figuras.
Figura 1. Comunicacin por I2C. .. 4

Figura 2. Trasmisin de trama de datos por la lnea SDA. 5

Figura 3. Bit de reconocimiento ACK. 5

Figura 4. Orden de transmisin por parte del Maestro (master)... 6

Figura 5. Condicin de reinicio o restar. 7

Figura 6. Diagrama de funcionamiento de los registros. 8

Figura 7. Diseo esquemtico de Comunicacin por I2C. 11

Figura 8. Diseo esquemtico de conexin I2C... 12

Figura 9. Mplab IDE 12

Figura 10. Seleccin de Microcontrolador 13

Figura 11. Seleccin del Compilador 14

Figura 12 14

Figura 13 15

Figura 14 15

Figura 15. Summary. 16

Figura 15. Editor de texto.16

Figura 16.17

Figura 18. Esquema de Funcionamiento en hardware. .22






1. Introduccin comunicacin I2C.

I2C
1
Es una inter
comunicacin con otros dispositivos
siguientes modos de hardware
consiguiente son capaces de trasmitir
La comunicacin se realiza a travs de
sincronizacin de datos
positivo mediante las resistencias pull
comunicacin y pueda comenzar hacer uso del bus

2. Estados de la comunicacin

Lneas desocupadas:
lgico alto en (1)

Estado de inicio
transicin de alto

Estado de stop
transicin de bajo


1
I2C: Inter Integrated Circuit.
2
MSSP: Master Synchronous Serial Port.
Introduccin comunicacin I2C.
Es una interfaz derivada del modulo (MSSP)

comunicacin con otros dispositivos perifricos o programables
siguientes modos de hardware, maestro, multi-maestro y modo esclavo, que por
son capaces de trasmitir una trama de datos.
La comunicacin se realiza a travs de dos conductores SCL lnea de reloj
sincronizacin de datos y SDA lnea de datos, las cuales van conectadas a
positivo mediante las resistencias pull-up para garantizar el nivel alto de la
y pueda comenzar hacer uso del bus como se aprecia en la figura 1.
Figura 1. Comunicacin por I2C.


comunicacin I2C.
Lneas desocupadas: cuando SCL y SDA se encuentran en un estado
en (1).
Estado de inicio (S): cuando la comunicacin de la lnea SDA est en
transicin de alto (1) a bajo (0) y la lnea SCL est en alto
Estado de stop (P): cuando la comunicacin de la lnea SDA est en
transicin de bajo (0) a alto (1) y la lnea SCL est en alto

I2C: Inter Integrated Circuit.
MSSP: Master Synchronous Serial Port.
4
2
para acceder a la
perifricos o programables que soporta los
modo esclavo, que por

SCL lnea de reloj para
las cuales van conectadas a
up para garantizar el nivel alto de la
como se aprecia en la figura 1.

cuando SCL y SDA se encuentran en un estado
cuando la comunicacin de la lnea SDA est en
y la lnea SCL est en alto (1).
cuando la comunicacin de la lnea SDA est en
y la lnea SCL est en alto (1).

Los datos solo pueden cambiar cuando la lnea SCL estn
bajo (0).


3. Transmisin de datos por el bus I2C.

La direccin del transmisor cuando se inicia la comunicacin
bits para este caso se ilustra la de 7 bits
Figura 2. Trasmisin de trama de datos por la lnea SDA.
S: estado de inicio.

R/W: es el bit de
lectura (recibir datos del esclavo)

ACK: bit de reconocimiento
que el dispositivo ha sido reconocido y puede empezar la
serie entre los dispositivos
reconocimiento
estado de stop.
est en un estado lgico bajo (0) y SCL en estado alto (1) del ciclo de
trabajo.


Los datos solo pueden cambiar cuando la lnea SCL estn
Transmisin de datos por el bus I2C.
La direccin del transmisor cuando se inicia la comunicacin
para este caso se ilustra la de 7 bits como se aprecia en la siguiente figura
Figura 2. Trasmisin de trama de datos por la lnea SDA.
estado de inicio.
es el bit de sentido, (0) de escritura (enviar datos al esclavo)
(recibir datos del esclavo).
bit de reconocimiento (0) que enva el esclavo al maestro para
que el dispositivo ha sido reconocido y puede empezar la
entre los dispositivos, si el esclavo receptor no genera el bit de
reconocimiento (0) el maestro debe abortar la transferencia y colocar
estado de stop. Cuando el bit de reconocimiento se genera la lnea SDA
en un estado lgico bajo (0) y SCL en estado alto (1) del ciclo de
Figura 3. Bit de reconocimiento ACK.
5
Los datos solo pueden cambiar cuando la lnea SCL estn en un estado
La direccin del transmisor cuando se inicia la comunicacin puede ser de 10 o 7
como se aprecia en la siguiente figura 2.

Figura 2. Trasmisin de trama de datos por la lnea SDA.
(enviar datos al esclavo) y (1) de
que enva el esclavo al maestro para indicar
que el dispositivo ha sido reconocido y puede empezar la transferencia en
si el esclavo receptor no genera el bit de
el maestro debe abortar la transferencia y colocar el
Cuando el bit de reconocimiento se genera la lnea SDA
en un estado lgico bajo (0) y SCL en estado alto (1) del ciclo de

Figura 3. Bit de reconocimiento ACK.


Direccin de acceso al esclavo:
configuracin que se le d, donde el bit C7 es bit ms significativo (MSB) y
C1 es el bit menos significativo (LSB), esta es la direccin que detecta el
esclavo.


3.1. Envi de datos por parte del

Figura 4. Orden de transmisin por parte del
S: Condicin de inicio
Direccin de 7 bits
R/W: bit de escritura (0).
ACK: Bit de esclavo a maestro
Enva cadena de
ACK: Reconocimiento no dado
P: Estado Stop
Es posible generar una condicin de reinicio
esclavo para no generar un STOP volviendo a generar un START sobr
bus de transferencia como se puede ver en la figura 4.

Direccin de acceso al esclavo: consta de 7 o 10 bits dependiendo de la
configuracin que se le d, donde el bit C7 es bit ms significativo (MSB) y
C1 es el bit menos significativo (LSB), esta es la direccin que detecta el
Envi de datos por parte del Maestro (master):
. Orden de transmisin por parte del maestro


Condicin de inicio
Direccin de 7 bits que enva el maestro al esclavo.
: bit de escritura (0).
ACK: Bit de esclavo a maestro (reconocimiento).
Enva cadena de datos o bits.
Reconocimiento no dado.
Estado Stop.
Es posible generar una condicin de reinicio (SR) re direccionando el mismo
esclavo para no generar un STOP volviendo a generar un START sobr
bus de transferencia como se puede ver en la figura 4.
6
consta de 7 o 10 bits dependiendo de la
configuracin que se le d, donde el bit C7 es bit ms significativo (MSB) y
C1 es el bit menos significativo (LSB), esta es la direccin que detecta el

maestro (master).
re direccionando el mismo
esclavo para no generar un STOP volviendo a generar un START sobre el mismo


4. Descripcin de registros.

El modulo MSSP en modo I2C cuenta con seis registr
I2C en este caso se describen los registros para el pic 18f4550.
MSSP Registro de Control 1
MSSP Registro de control 2 (SSPCON2)
MSSP Registro de Estado (SSPSTAT)
Buffer de recepci
MSSP Registro de Desplazamiento (SSPSR)
MSSP Registro de direcciones (SSPADD)

Registros
(SSPCON1), (SSPCON2) y
(SSPSTAT):
(SSPBUF):
(SSPADD):
En la figura 6 se presenta el diagrama de funcionamiento de los registros para el
bus I2C.
Figura 5. Condicin de reinicio o restar.


Descripcin de registros.
modulo MSSP en modo I2C cuenta con seis registros para la comunicacin por
I2C en este caso se describen los registros para el pic 18f4550.
MSSP Registro de Control 1 (SSPCON1)
MSSP Registro de control 2 (SSPCON2)
MSSP Registro de Estado (SSPSTAT)
recepcin / transmisin (SSPBUF)
MSSP Registro de Desplazamiento (SSPSR) - No directamente accesible
MSSP Registro de direcciones (SSPADD)
Registros Descripcin
(SSPCON1), (SSPCON2) y Control y registro de estado en el modo
de operacin I2C.
Bfer de registro para que los bytes se
escriban y lean e inicien la transmisin
de datos / direcciones
Cuando est configurado
modo esclavo contiene las direcciones
del mismo.
Tabla 1. Descripcin de registros

se presenta el diagrama de funcionamiento de los registros para el
7

. Condicin de reinicio o restar.
os para la comunicacin por
I2C en este caso se describen los registros para el pic 18f4550. [2]
No directamente accesible
Descripcin
Control y registro de estado en el modo
de operacin I2C.
Bfer de registro para que los bytes se
escriban y lean e inicien la transmisin
de datos / direcciones.
Cuando est configurado MSSP de
do esclavo contiene las direcciones

se presenta el diagrama de funcionamiento de los registros para el

Figura 6
5. Velocidad de transmisin por el bus I2C.

La velocidad para la transmisin
los paramentaros del sistema, como la capacidad de la lnea
pull_up. Las velocidades
continuacin:

Modo estndar 100
Modo rpido
Modo alto (fast mode plus)
Alta velocidad
Figura 6. Diagrama de funcionamiento de los registros.


transmisin por el bus I2C.
velocidad para la transmisin de los datos por I2C depende temporalmente por
los paramentaros del sistema, como la capacidad de la lnea
Las velocidades estndares que se manejan se
estndar 100 Kbit/s,
odo rpido (fast mode) 400 Kbit/s
alto (fast mode plus) 1 Mbits/s
velocidad (High-speed mode) hasta 3.4 Mbits/s.
8

. Diagrama de funcionamiento de los registros. [2]
de los datos por I2C depende temporalmente por
los paramentaros del sistema, como la capacidad de la lnea y las resistencias de
que se manejan se encuentran a

9

La velocidad se configura cuando se inicialice la funcin principal del I2C que en el
itinerario siete (7) se explica la funcin.

6. Descripcin de las resistencias del PULL_UP.

Vienen determinadas por la alimentacin del bus, la velocidad de transmisin y la
capacidad de nmero de dispositivos conectados.

7. Configuracin de I2C en Software.

SLAVE: condicin del pic como esclavo.

MASTER: condicin del pic como maestro.

SDA=PIN: lnea de datos en serie.

SCL=PIN: lnea de reloj en serie.

FAST: utiliza la velocidad alta.

SLOW: utiliza la velocidad baja.

FORCE_HW: funciones especfica de I2C del hardware.

ADDRESS: Direccin que comunica al esclavo.


7.1. Modo Maestro (Master).

La configuracin para que I2C funcione en modo maestro viene determinada por
las funciones vistas en el itinerario siete (7) y se describen usando la siguiente
funcin de inicializacin de I2C.

#use i2c (MASTER, SDA=PIN_XX, SCL=PIN_XX, FAST,FORCE_HW)
Condiciones de trasmisin:
10

Se explica las funciones que deben ir en cogido para que funcione la
comunicacin con el receptor y que ms adelante se emplearan para el ejemplo
del itinerario ocho (8).
I2C_START (): Condicin de inicio.

I2C_WRITE (0xa0): direccin del esclavo con que se har la comunicacin
este dato enviado es de 8 bits en el va el bit ACK de reconocimiento y el
cero (0) indica el sentido.

I2C_WRITE (dato): dato que se enva al esclavo.

I2C_STOP (): finalizacin de la comunicacin.


7.2. Modo Esclavo (Slave).

El modo I2C de modo esclavo se inicializa representa con las funcin que se
presenta a continuacin donde ADDRESS representa la direccin con que se hace
la comunicacin con el maestro.

#use i2c (SLAVE, SDA=PIN_XX, SCL=PIN_XX, ADDRESS=0xa0, FAST ,
FORCE_HW)
Condiciones de recepcin:
Se explica las dos funciones involucradas en la recepcin de los datos enviados
por el pic maestro y se emplean en el ejemplo del itinerario ocho (8).
I2C_POLL (): se utiliza si solo el pic tiene modulo SSP. Devuelve un true
(1) si ha recibido un dato en el buffer y un false (0) si no se ha recibido.

I2C_READ (): dato que es ledo del bus.


8. Ejemplo de transmisin de datos por el bus I2C

A continuacin en la figura 6 se presenta un esquemtico de cmo sera la
comunicacin I2C entre un maestro que habla y tres esclavos que escuchan y
esperan la orden para operar y ejecutar.

Figura
Este proyecto se ejecuta a travs de
programacin CCS C Complier.


8.1. Circuito esquemtico a realizar en protoboard

La Comunicacin I2C se llevara a cabo entre un pic 18F4550 quien ser el
maestro y 3 pic 16f883 quienes sern los esclavos, en este ejemplo el pic maestro
obtendr datos de un potencimetro con un rango de 0 a 15 estos datos sern
enviados por la las ln
direccin correspondiente y se halla seleccionado el esclavo con el que se quiere
transmitir como se aprecia en

Los componentes a utilizar son:

1 PIC 18F4550 y 3 PIC 16F883
Resistencias de 330 ohms que van conectadas con los leds indicadores.
cristales de 4 MHZ sintonizador de frecuencias acompaados de
condensadores de 22 pf
3 pulsadores para seleccin de direccin del esclavo con sus respectivas
resistencias de 330 ohms
Potencimetro de 10 k conectado a la entra RA0 del master.
Dos resistencias del pull up. De 150 ohms.
Resistencias de 10 k conectadas a positivos
pulsadores a tierra
Figura 7. Diseo esquemtico de Comunicacin por I2C.
Este proyecto se ejecuta a travs de la plataforma MPLAB IDE con el lenguaje de
programacin CCS C Complier.
Circuito esquemtico a realizar en protoboard
La Comunicacin I2C se llevara a cabo entre un pic 18F4550 quien ser el
maestro y 3 pic 16f883 quienes sern los esclavos, en este ejemplo el pic maestro
obtendr datos de un potencimetro con un rango de 0 a 15 estos datos sern
enviados por la las lneas de comunicacin I2C a los esclavos que contengan la
direccin correspondiente y se halla seleccionado el esclavo con el que se quiere
transmitir como se aprecia en la figura 6.
Los componentes a utilizar son:
1 PIC 18F4550 y 3 PIC 16F883
Resistencias de 330 ohms que van conectadas con los leds indicadores.
cristales de 4 MHZ sintonizador de frecuencias acompaados de
condensadores de 22 pf
3 pulsadores para seleccin de direccin del esclavo con sus respectivas
resistencias de 330 ohms
otencimetro de 10 k conectado a la entra RA0 del master.
Dos resistencias del pull up. De 150 ohms.
Resistencias de 10 k conectadas a positivos en MCLR en los PIC con
pulsadores a tierra.
11

Diseo esquemtico de Comunicacin por I2C.
la plataforma MPLAB IDE con el lenguaje de
La Comunicacin I2C se llevara a cabo entre un pic 18F4550 quien ser el
maestro y 3 pic 16f883 quienes sern los esclavos, en este ejemplo el pic maestro
obtendr datos de un potencimetro con un rango de 0 a 15 estos datos sern
eas de comunicacin I2C a los esclavos que contengan la
direccin correspondiente y se halla seleccionado el esclavo con el que se quiere
Resistencias de 330 ohms que van conectadas con los leds indicadores.
cristales de 4 MHZ sintonizador de frecuencias acompaados de
3 pulsadores para seleccin de direccin del esclavo con sus respectivas
otencimetro de 10 k conectado a la entra RA0 del master.
MCLR en los PIC con

Figura 8
8.2. Creacin del

Primer paso:

Segundo paso: dar clic en Project.

Figura 8. Diseo Esquemtico de conexin I2C.


Creacin del Proyecto en MPLAB IDE
: ejecutar la plataforma MPLAB IDE.
Segundo paso: dar clic en Project.
Figura 9. Mplab IDE.
12

de conexin I2C.


Tercer paso:

Cuarto paso: seleccionar el PIC a utilizar
PIC18F4550.



Para continuar con el siguiente paso previamente se debe tener instalado
Compiler y el Plugin MPLAB
http://www.ccsinfo.com/downloads.php

Quinto paso: instalado el Plugin de MPLAB se pude utilizar para editar y
crear proyectos utilizando el compilador de C de CCS.

Sexto paso:
en la figura 11

Sptimo paso
una X indicando que no se encuentra el ejecutable de CCS C Complier lo
que se hace es dar clic en Browse para encontrarlo.

Tercer paso: abierto Project dar clic en Project Wizard
Cuarto paso: seleccionar el PIC a utilizar para este caso se emplea el
PIC18F4550.
Figura 10. Seleccin de Microcontrolador.
Para continuar con el siguiente paso previamente se debe tener instalado
el Plugin MPLAB los cuales se pueden descargar del siguiente link
http://www.ccsinfo.com/downloads.php
paso: instalado el Plugin de MPLAB se pude utilizar para editar y
crear proyectos utilizando el compilador de C de CCS.
paso: buscar en Active Toolsuite CCS C Compiler
en la figura 11.
paso: como se aprecia en la figura 11 Toolsuite Contents contiene
una X indicando que no se encuentra el ejecutable de CCS C Complier lo
que se hace es dar clic en Browse para encontrarlo.
13
d
para este caso se emplea el

. Seleccin de Microcontrolador.
Para continuar con el siguiente paso previamente se debe tener instalado CCS C
se pueden descargar del siguiente link:
paso: instalado el Plugin de MPLAB se pude utilizar para editar y
crear proyectos utilizando el compilador de C de CCS.
CS C Compiler como se pareca
Toolsuite Contents contiene
una X indicando que no se encuentra el ejecutable de CCS C Complier lo
que se hace es dar clic en Browse para encontrarlo.


Octavo paso:
que se necesita se selecciona C

Noveno paso
trabajar en el



Figura 11. Seleccin del Compilador.
Octavo paso: se aprecia la carpeta PICC donde se encuentra el ejecutable
que se necesita se selecciona Ccsc.

Figura 12.


Noveno paso: se da clic en abrir y a partir de este momento se puede
trabajar en el compilador figura 13.
14

Seleccin del Compilador.
donde se encuentra el ejecutable

da clic en abrir y a partir de este momento se puede

Decimo paso: Se crea la carpeta del proyecto con su respectivo nombre


Figura 13.

Decimo paso: Se crea la carpeta del proyecto con su respectivo nombre

Figura 14.

15

Decimo paso: Se crea la carpeta del proyecto con su respectivo nombre.


Onceavo paso: damos clic en siguiente hasta llegar al Summary, se verifica
que los datos estn bien

Doceavo paso: se da clic en la creacin de un nuevo archivo
aprecia en la figura 16


Onceavo paso: damos clic en siguiente hasta llegar al Summary, se verifica
que los datos estn bien diligenciados y se procede a

Figura 15. Summary.

paso: se da clic en la creacin de un nuevo archivo
aprecia en la figura 16.

Figura 16. Editor de texto.
16
Onceavo paso: damos clic en siguiente hasta llegar al Summary, se verifica
se procede a finalizar.

paso: se da clic en la creacin de un nuevo archivo como se


Treceavo paso: se procede a guardar el documento donde se ubica la
carpeta contenedora del proyecto y
nombre al que se le vino asignado anteriormente
.C.



8.3. Configuracin

// Directivas del programa:


#include <18f4550.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#byte PORTB=0x07
#use i2c(MASTER, SDA=PIN_B0, SCL=PIN_B1,
TRANSMISIN I2C
int buffer;
int ban=0, i=0;
float dato, sensor=0;

void CONVERSOR ()
{
set_adc_channel(0);
delay_ms(20);
Treceavo paso: se procede a guardar el documento donde se ubica la
carpeta contenedora del proyecto y se da un nombre,
al que se le vino asignado anteriormente pero con es estima

Figura 17.

Configuracin del programa en modo maestro:
Directivas del programa:
#include <18f4550.h> // CONFIGURACIN DEL MICROCONTROLADOR
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
4000000) // RELOJ DE 4MHZ
#byte PORTB=0x07 // DIRECCIN DEL PORTB
#use i2c(MASTER, SDA=PIN_B0, SCL=PIN_B1, FAST, FORCE_HW) //
set_adc_channel(0); // PUERTO RA0
17
Treceavo paso: se procede a guardar el documento donde se ubica la
se da un nombre, si se quiere el mismo
pero con es estimativo de

// CONFIGURACIN DEL MICROCONTROLADOR
// CONFIGURACION DE LA
18

sensor=read_adc(); // LEE EL ADC Y MANDA LOS MAS SIGNIFICATIVOS
delay_ms(0.1); // TIEMPO PARA QUE PUEDA CAPTURAR EL DATO
}

void main(void)
{
setup_adc_ports(AN0_TO_AN3|VSS_VDD); // CONFIGURACIN DEL PUERTO RA0 TO
RA3 COMO ADC
setup_adc(ADC_CLOCK_INTERNAL); // CONFIGURACIN DE FUNCIONAMIENTO
DE ADC CON EL CLOCK INTERNAL
delay_ms(10); // RETARDO PARA LA COMUNICACIN

while(TRUE)
{
CONVERSOR(); // LLAMADO AL CONVERSOR
dato=( 15.0 * sensor) / 255.0; // CONVERSIN DEL SENSOR A UN TOPE DE 15 CON
UNA RESOLUCIN DE 8 BITS.
i=dato;
if(input(PIN_B3)) {ban=1;} // SE ACTIVA LA TRANSMISIN PARA EL ESCLAVO 1
if(input(PIN_B4)) {ban=2;} // SE ACTIVA LA TRANSMISIN PARA EL ESCLAVO 2
if(input(PIN_B5)) {ban=3;} // SE ACTIVA LA TRANSMISIN PARA EL ESCLAVO 3

if(ban==1) // TRANSMISIN CON EL ESCLAVO 1
{
i2c_start(); // CONDICIN DE INICIO
i2c_write(0xd0); // DIRECCIN DEL ESCLAVO CON QUE SE REALIZA LA COMUNICACIN
i2c_write(i); // ENVI DE DATOS, (i) VALOR ARROJADO POR EL SENSOR (POT)
i2c_stop(); // CONDICIN DE STOP
delay_ms(500); // RETARDO PARA QUE LA COMUNICACIN NO SEA CONSTANTE
}
19

if(ban==2) // TRANSMISIN CON EL ESCLAVO 2
{
i2c_start(); // CONDICIN DE INICIO
i2c_write(0xd2); // DIRECCIN DEL ESCLAVO CON QUE SE REALIZA LA COMUNICACIN
i2c_write(i); // ENVI DE DATOS (i) VALOR ARROJADO POR EL SENSOR (POT)
i2c_stop(); // CONDICIN DE STOP
delay_ms(500); // RETARDO PARA QUE LA COMUNICACIN NO SEA CONSTANTE
}

if(ban==3) // TRANSMISIN CON EL ESCLAVO 3
{
i2c_start(); // CONDICIN DE INICIO
i2c_write(0xd4); // DIRECCIN DEL ESCLAVO CON QUE SE REALIZA LA COMUNICACIN
i2c_write(i); // ENVI DE DATOS (i) VALOR ARROJADO POR EL SENSOR (POT)
i2c_stop(); // CONDICIN DE STOP
delay_ms(500); // RETARDO PARA QUE LA COMUNICACIN NO SEA CONSTANTE
}
};
}

8.4. Configuracin del programa en modo Esclavo:

Para este caso solo se especifica la descripcin del programa para el esclavo 1
teniendo en cuenta que para el esclavo 2 con direccin (0Xd2) y esclavo 3 con
direccin (0xd4) es el misma programacin solo cambia las direccin.


// Directivas del Programa:
#INCLUDE <16f883.h> // CONFIGURACIN DEL MICROCONTROLADOR
#USE DELAY(CLOCK = 4000000) // RELOJ DE 4 MHZ
#fuses XT, NOPROTECT, PUT, NOWDT, NOBROWNOUT, NOLVP, NOCPD
20

#byte PORTA=0x05 // Direccin del PortA
#byte PORTB=0x06 // Direccin del PortB
#use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, ADDRESS=0xd0, FAST , FORCE_HW) //
CONFIGURACIN DE LA RECEPCIN I2C
// (ADDRESS =0Xd0) ES LA DIRECCIN DE RECEPCIN DEL ESCLAVO QUE ENVA EL
MSTER ES AQU DONDE SE CAMBIA LA DIRECCIN PARA EL PROGRAMA DEL ESCLAVO
2 POR (0Xd2) Y LA DEL ESCLAVOS 3 POR (0Xd4).
char state;
int dato2, com=0, dato=0;

// Recepcin de la comunicacin:
void COMUNICACION ()
{
if(i2c_poll()) // DEVUELVE UN UNO (1) SI HA RECIBIDO UN DATO EN EL BUFFER Y UN
// CERO (0) SI NO LO HA RECIBIDO.
{
dato=i2c_read(); // DATO QUE ES LEDO DEL BUS
com=dato;
// SE AADE LA INSTRUCCIN if(com !=208) PARA EVITAR QUE LA DIRECCIN DE
RECEPCIN DEL ESCLAVO 0xd0=208 POR RETARDO DE COMUNICACIN A VECES SE
INTERCAMBIA CON EL DATO DE ENVI (i) SE HACE INTENSIVO PARA EL ESCLAVO DOS
Y TRES QUE YA SERIAN 210 Y 212.

if(com !=208)
{
output_bit(PIN_C7,1); // BIT QUE INDICA QUE ESTA HABILITADO LA TRANSMISIN
dato2=com;
}
}
}
// Reconocimiento de datos enviados por el master:
void RECONOCIMIENTO_DATOS ()
{
21

if(dato2==0) { output_b(0x00);} // Muestra el numero 0 x en el puerto B en leds.
if(dato2==1) { output_b(0x01);} // Muestra el numero 1 x en el puerto B
if(dato2==2) { output_b(0x02);} // Muestra el numero 2 x en el puerto B
if(dato2==3) { output_b(0x03);} // Muestra el numero 3 x en el puerto B
if(dato2==4) { output_b(0x04);} // Muestra el numero 4 x en el puerto B
if(dato2==5) { output_b(0x05);} // Muestra el numero 5 x en el puerto B
if(dato2==6) { output_b(0x06);} // Muestra el numero 6 x en el puerto B
if(dato2==7) { output_b(0x07);} // Muestra el numero 7 x en el puerto B
if(dato2==8) { output_b(0x08);} // Muestra el numero 8 x en el puerto B
if(dato2==9) { output_b(0x09);} // Muestra el numero 9 x en el puerto B
if(dato2==10) { output_b(0x0a);} // Muestra el numero 10 x en el puerto B
if(dato2==11) { output_b(0x0b);} // Muestra el numero 11 x en el puerto B
if(dato2==12) { output_b(0x0c);} // Muestra el numero 12 x en el puerto B
if(dato2==13) { output_b(0x0d);} // Muestra el numero 13 x en el puerto B
if(dato2==14) { output_b(0x0e);} // Muestra el numero 14 x en el puerto B
if(dato2==15) { output_b(0x0f);} // Muestra el numero 15 x en el puerto B
}
// Ejecucin del programa:
void main(void)
{ set_tris_b(0b0000000); // Definimos B como salida
output_b(0x00); // Pone a Cero el PORTB
output_bit(PIN_C7,0); // Pone a Cero en PIN C7
while(TRUE)
{
COMUNICACION();
RECONOCIMIENTO_DATOS();
};
}
22

8.5. Esquema de funcionamiento en hardware.



Figura 18. Esquema de Funcionamiento en hardware.


9. BIBLIOGRAFA

[1] Garca Eduardo Breijo. Compilador C CCS y Simulador Proteus para
Microcontroladores Pic.. Primera Edicion .Alfa Omega Grupo Editor. Mxico.
[2] Microchip PIC18F2455/2550/4455/45 Data sheet.

You might also like