Multiple I2C Virtual

Al igual que el puerto serial se puede utilizar el comando STREAM para definir el nombre de los puertos.
Comúnmente para un solo puerto configuramos el mismo de la siguiente forma:

#use i2c(MASTER,SDA=PIN_C1,SCL=PIN_C0)

De esta forma se define el protocolo, puertos, etc...
Luego se procederá a enviar o recibir el dato por i2c por ejemplo:

i2c_start();
i2c_write(DATO);
i2c_write(DATO);
i2c_write(DATO);
i2c_stop();


Donde iniciamos el protocolo tras la función i2c_start(); y luego escribimos los byte correspondientes según necesite el dispositivo a comandar mediante la función i2c_write(); y luego se procede a cerrar el protocolo con la función i2c_stop();.

Si quisiéramos incluir otro puerto i2c en el microcontrolador deberíamos utilizar el comando STREAM el cuál nos indicara una etiqueta para la configuración del puerto y esta misma será la que utilizamos para diferenciar entre un protocolo o el otro.

#use i2c(MASTER,SDA=PIN_C1,SCL=PIN_C0,STREAM=I2C1)
#use i2c(MASTER,SDA=PIN_B1,SCL=PIN_B0,STREAM=I2C2)


Donde podemos ver que en el primer puerto será STREAM=I2C1 y el segundo puerto será STREAM=I2C2. El comando dentro de las funciones start, write y stop quedara de la siguiente forma.

i2c_start(I2C1);
i2c_write(I2C1,DATO);
i2c_write(I2C1,DATO);
i2c_write(I2C1,DATO);
i2c_stop(I2C1);

i2c_start(I2C2);
i2c_write(I2C2,DATO);
i2c_write(I2C2,DATO);
i2c_write(I2C2,DATO);
i2c_stop(I2C2);


Tener en cuenta que el protocolo I2C del MCU por Hardware será uno solo, esta forma de crear puertos es netamente virtual por ende los tiempos del procesador será más lento, es recomendable para procesadores de gama media alta.

No hay comentarios.:

Publicar un comentario