Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola a tod@s
Estoy intentando que se comuniquen dos 16F876A mediante I2C (un maestro y un esclavo) en C (CCS) ¿algun@ sabe cómo manejarse con las funciones?... por ejemplo... para enviar un dato al esclavo, según el protocolo I2C debería...
1º) Enviar un pulso de inicio (supuestamente con: i2c_start())
2º) Enviar la dirección a escribir (supongo que con: i2c_write(DIRECCION))
3º) Enviar el bit de escritura (y eso cómo lo hago? :S )
4º) Recibo el pulso de reconocimiento (lo recibo con i2c_write()?... cómo?... si eso ocurre en el paso 2º y el pulso ACK debo recibirlo en el 4º paso? O_o )
5º) Enviar el dato (supongo i2c_write())
6º) Recibir pulso ACK (en este caso es comprensible que me lo pueda dar i2c_write pues no hay bit de lectura escritura de por medio)
7º) Enviar bit de stop (con i2c_stop)
Tengo también una duda sobre el registro sspadd que contiene la dirección del esclavo en modo de 7 bits. Si no recuerdo mal, se comparan los 7 bits más altos de SSPBUF con los correspondientes de SSPADD en modo esclavo... si quisiera meter el bit de lectura/escritura en modo maestro... debería incluirlo en la dirección enviada en el paso 2º?... es decir... el dato de dirección serían los 7 bits de más peso y el octavo sería el de lectura escritura (usando algo así: i2c_write(DIRECCION + BIT);)
En fin... tengo un liiio :S . Agradezco culaquier sugerencia/comentario.
GRACIAS
ja ja ja... teneis todo el derecho a llamarme inutil... ja ja ja
La verdad es que cuando pense anoche en este tema no mire el data porque tenia por seguro que eran los mismos pines... no sé por qué... pero el caso es que evidentemente me equivocaba... uso un 876, de modo que efectivamente, como bien dice Ranganok, los pines estan separados...
claro, el problema ahora es menor... pero no se que tal se llevaran las dos comunicaciones funcionando a la vez en un mismo micro, alguien ha probado esto?
PD: Gracias Ranganok... vaya tonteria... ja ja ja
Funcionan sin problemas. Yo he probado a usar RS232 por C puro y duro y I2C con C y algo de ASM, para tener más control sobre los registros, en un 16F877 y me ha ido bien.
Genial, en ese caso me pondre en cuanto acabe con la maldita práctica de física del "Bifilar Pendulum"...
empezare con lo que pusiste en este hilo Mosvack, ya te dire si he conseguido hacerlo funcionar en C...
Aun asi, si alguien tiene algun tutorial sobre I2C... estare encantadisimo de leerlo... 🙂
PD: si lo consigo hacer andar... prometo hacer algun tutorial tipo... "Soy lelo como Mif y quiero usar I2C"
Rick_rs abrió un hilo sobre I2C en el que le pegué más información sobre los problemas y resultados de las prácticas que hice con el I2C. Por si te sirve:
http://www.webdearde.com/modules.php?na ... opic&t=984
Gracias Mosvack, no habia visto ese hilo. En cuanto pueda me pongo... esta todo muy bien explicado, ¡felicidades!