comunicacion por i2c

#1
Hola muy buenas, necesito de vuestra ayuda, soy nuevo en esto de la comunicación serie por I2C. Haber os cuento un poco; tengo que comunicar un pic (16F887) con un mcp (expansión de entradas y salidas). en una de las salidas de ese mcp tengo conectado un led, y quiero que cuando se dé la orden desde el pic, comunique con el mcp y dé la orden de encender el led. no sé si será complicado o qué pero no sé nada sobre este tema del i2c, he mirado varias configuraciones como maestro y como esclavo. estoy programando con ensamblador.

Muchiiisimas gracias por vuestra colaboración y ayuda.
Un saludo.
 
#2
Hola!
El tema I2C es bastante largo, no entendí cual exactamente es tu pregunta. A grandes rasgos, lo que hay que hacer es ver la hoja de datos del esclavo, para comprender qué es lo que necesita recibir. Por lo general, el master inicia la comunicación con un i2c_start, luego envía varios i2c_write donde en cada uno de los write envía el address del destino y la data a escribir. Al final hay que enviar un i2c_stop para avisar al master que terminó la transferencia de datos.
Pero reitero, esto fue muy vago y depende de los módulos que se comuniquen. Además, a nivel de hardware hay que poner pull ups en las líneas de clock y datos.

En fin, sería bueno que experimentes y comentes tus dudas específicas :)
Te recomiendo ampliamente que programen en C y no en assembler.
Saludos!
 
#3
Pues te tendrás que empapar los datasheets de ambos circuitos.
Básicamente se conectan, se define la dirección del esclavo y se manda el comando desde el master al esclavo
 
#4
Muy buenas, muchas gracias por vuestros aportes, eso de enviar y recibir lo tengo hecho, practicamente porque viene hecho en varios ejemplos de codigo(i2c_start, i2c_write.....), lo que no sé es como juntar esos cachos de código para enviar y recibir los datos, lo tengo en placa boar pinchado el pic y el mcp. con las resistencias pull up conectadas a SCL y SDA y a positivo, verias configuraciones también las tengo por varios ejemplos que e vistopor ahí.
si me podeis ayudar a juntar esos cachos de código de i2c_start, .....etc esque no tengo ni idea, y es un proyecto muy importante para mi como personal y como profesional, les estaría eternamente agradecidos.

Un saludo y gracias de verdad.
 
Arriba