Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

07/07/2010 #21


Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
estamos trabajando con el CCS Compiler pero nos dicen q se puede hacer el trabajo con el 16f877 y el 18f2550 o 4550
08/07/2010 #22

Avatar de Moyano Jonathan

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
Entonces baja mi programa y adaptalo a tus necesidades....no es muy complejo solo tenés que ver la hoja de datos de tu PIC y mirar las direcciones correspondientes el módulo serial sincrónico y cambiar algunos datos en los programas ...si tenés dudas de como se hace poné tu programa y lo vamos viendo.
08/07/2010 #23


Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
listo gracias por ese aporte no lo del modulo estabamos mirandolo por el lado que no era
08/07/2010 #24

Avatar de Moyano Jonathan

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
Ok ya sabes si se te presenta algún problema con la comunicación hacelo saber
30/07/2010 #25


Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
baje el codigo que citaste antes peor me da error de version tengo isie 7.4 podrias volver a subirlo

Vegetal Digital dijo: Ver Mensaje
No hay problema todos sabemos que a la mayoria de nosotros el tiempo no nos sobra.

Sobre la comunicacion I2C migre el codigo del master (18f2550) a un pic 16f877. Ahora funciona con los dos 16f877 siempre y cuando este enchufado la herramienta i2c debugger. Supongo que el problema era el pic 18f, que no se lleva bien con el isis.
Voy a seguir probando si puedo hacer andar en la simulacion y sino probare en la realidad.
Si alguien los quiere, subo los programas.
saludos
31/07/2010 #26

Avatar de Vegetal Digital

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
ere dijo: Ver Mensaje
baje el codigo que citaste antes peor me da error de version tengo isie 7.4 podrias volver a subirlo
Hola, el programa anda bien, tu problema debe ser la version, yo lo realize en 7.6 SP0
01/08/2010 #27


Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
como obtengo la actualizacion, o podrias guardarlo en una version anterior, y subirlo.

Vegetal Digital dijo: Ver Mensaje
Hola, el programa anda bien, tu problema debe ser la version, yo lo realize en 7.6 SP0
02/08/2010 #28

Avatar de Vegetal Digital

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
ere dijo: Ver Mensaje
como obtengo la actualizacion, o podrias guardarlo en una version anterior, y subirlo.
Hola, no puedo hacer el circuito en una version mas vieja, lo que puedo hacer es adjuntarte un JPG del circuito y tú lo armas en el isis que tenes.
Saludos

PD: te recuerdo que aun no he tenido tiempo (ni pics) para probarlo fisicamente.
Archivos Adjuntos
Tipo de Archivo: rar Expansor I2C - circuito vegetal digital.rar (178,6 KB (Kilobytes), 219 visitas)
09/08/2010 #29


Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
probe el codigo tal como ud lo subieron y si hay comunicacion pero ciertos datos se pierden, en la imagen que subo del I2C Debug, se puede ver que va aunmentando B1, B2... pero aqui se salta porque se pierde la comunicacion y luego sigue con el B4. Lo cual para el ejemplo no es problema porque lo que se muestra es el conteo, Pero si seria problema si son datos que se van a procesar. Y con mas de un esclavo la comunicacion se corta. ¿Que podria hacer para asegurarme que todos los datos lleg?

Otra cosa que me llamo la atencion es que se ve como que no recibe la address del esclavo lo cual si se me hizo raro, en el dibujo lo marco con azul.
Imágenes Adjuntas
Tipo de Archivo: png I2C Debug.png (29,2 KB (Kilobytes), 89 visitas)
09/08/2010 #30

Avatar de Moyano Jonathan

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
podrías hacer un checksum o implementar un CRC para ver el estado de las transmisiones i/o recepciones.
09/08/2010 #31


Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
esos terminos son nuevos para mi, como podria hacer esto guiame
09/08/2010 #32

Avatar de Moyano Jonathan

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
Un algoritmo CRC o código de redundancia cíclica es un algoritmo que permite comprobar la fiabilidad y la no alternación de los datos, en programación se utiliza para comprobar si existe corrupción de datos.

Por lo tanto tenes que ver que los datos que te hayan llegado sean correctos....igual esto se aplica a sistemas complejos ...con un simple checksum es decir mirás que por ejemplo la longitud de datos sea correcta o comparas los datos con otros puestos en memoria ,etc.

CCS tiene un ejemplo de CRC usado en RS485.
06/10/2010 #33

Avatar de inaths

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
hola moyano...
soy nueva en el foro.. y creo que tienes bastante idea acerca de pics... la vdd quiero aprender sobre la comunicacion I2C pero no encuentro ni pies ni kbeza!! espero me puedas hechar la mano... aunq sea un tema viejito...
06/10/2010 #34

Avatar de Moyano Jonathan

Respuesta: Expansor I2C PIC - PIC PIC16F877A como esclavo y PIC18F2550 como maestro.
inaths no entiendo tu consulta, si querés aprender sobre la comunicación I2C tendrías que leer como funciona el protocolo. Ahora si lo que vos querés es implementar una comunicación I2C en C para PIC acá puse un ejemplo.
Saludos y que andes bien !
07/11/2010 #35


Hola moyanoo, soy nuevo y pasaba por acá y parece ser que tu sabes mucho sobre el tema de I2C con los pics, y ps la verdad yo soy nuevo en eso, almenos con el ccs compiler.

Mira la idea es que tengo 3 pics 16f873a dos como slaves y uno como master, y lo que quiero hacer es a los slaves les pongo un dato en el puerto B como entrada (diferente para cada slave) y con el maestro escojo cual de los dos leer, lo leo y muestro en algun puerto del master el dato que leí.

Tengo un GRAN problema, según varios ejemplos que he visto voy entendiendo como funcionan las sentencias y los comandos que necesito, y he podido hacer un programa para el maestro, que creo que funciona, almenos en lógica, mira:


----------------------------------------------------------------------------------------------------
#include <16f873a.h>
#fuses XT, NOWDT, PUT, NOPROTECT
#use delay (clock= 4000000)
#byte PORTB = 0X06
#byte PORTA = 0X05
#use i2c(MASTER,SCL=PIN_C3,SDA=PIN_C4,SLOW,FORCE_HW)
#byte SSPCON = 0x14 //espacio de memoria, variable


int x=1, recibe;

void main (void)
{

set_tris_b(0XFF);
set_tris_a(0X01);
do
{

if (bit_test(PORTA,0)==1)
{
delay_ms(10);
bit_set(PORTA,1);
delay_ms(10);
i2c_start(); // inicio
i2c_write(0x0A); // direccion de slave1
i2c_write(0X06); // direccion del registro a buscar (puerto B)
i2c_start(); // re inicio
i2c_write(0x0A+1); // modo lectura
recibe=i2c_read(0);
i2c_stop(); // parada
delay_ms(20);
bit_clear(PORTA,1);
}
else
{
bit_set(PORTA,2);
delay_ms(10);
i2c_start(); // inicio
i2c_write(0x0B); // direccion de slave2
i2c_write(0X06); // direccion del registro a buscar (puerto B)
i2c_start();
i2c_write(0x0B+1);
recibe=i2c_read(0);
i2c_stop();
delay_ms(20);
bit_clear(PORTA,2);
}

PORTB = recibe;

}
while(x==1);

}
---------------------------------------------------------------------------------------------------
No se si le falte alguna instruccion importante o algo así. Y crees que está bien? enviar primero la direccion del esclavo y luego la del registro?

Y mi problema mas grande es el de hacer el programa para los slaves, no entiendo como funciona la interrupción para hacer la comunicacion y en la mayoria de los que he leido, la vdd no entiendo como hacerlo, se del modulo I2C y los registros que tienen las 16F87X, pero no entiendo ni 5 de como hacer el programa para los slaves.
Cualquier ayuda te l oagradeceria muchisiimo!!
07/11/2010 #36

Avatar de Moyano Jonathan

Por favor fijate si te anda en la realidad ...en caso de que no te esté funcionando posteas las dudas
07/11/2010 #37


Lo que pasa es que urgente moyano, tu me podrías ayudar? jajaja es que toy MUY perdido, ese programa lo hice como de retasos... Tu no me podrias ayudar a ver como lo harías?
Gracias por tu ayuda en serio!!
18/02/2011 #38


soy_nuevo en esto de i2c ojala i me puedan ayudar no e podido realizar la comunicación estos son mis programas

-------------------------------------------------------
maestro

# include <16f887.h>
#fuses INTRC,NOPROTECT,NOLVP,NOWDT
#use delay(clock=8000000)
#USE I2C (MULTI_MASTER,SDA=PIN_C4,SCL=PIN_C3,ADDRESS=0XA0,F AST,FORCE_HW)
void main(void)
{
i2c_start();
i2c_write(0XA1);
i2c_write(0b00111111);
i2c_stop();
delay_ms(1000);
i2c_start();
i2c_write(0XA1);
i2c_write(0b11111111);
i2c_stop();
delay_ms(1000);
i2c_start();
i2c_write(0XA2);
i2c_write(0b00111111);
i2c_stop();
delay_ms(1000);
i2c_start();
i2c_write(0XA2);
i2c_write(0b11111111);
i2c_stop();
}



-------------------------------------------------------
esclavo

# include <16f887.h>
#fuses INTRC,NOPROTECT,NOLVP,NOWDT
#use delay(clock=8000000)
#USE I2C (SLAVE, SDA=PIN_C4,SCL=PIN_C3,ADDRESS=0XA1,FAST,FORCE_HW)


void main(void)
{
INT R1;



R1=i2c_read();

if(R1==(0b00111111))
{
output_b(0B00001111);
R1=i2c_read();
}

if(R1==(0b00111111))
{
output_b(0B00001111);
R1=i2c_read();
}
}
18/02/2011 #39

Avatar de Moyano Jonathan

Para los que quieran saber como implementé la comunicación , vean en el ejemplo que puse en la primer página.
18/04/2011 #40


Hola amigos soy nuevo en este tipo de conexion la i2C ,hice un sensor de tempreatura con el lm35 y el pic16f877 con salida a una lcd se me ha pedido utilizar el i2c me podria alguien explicar como fuinciona y como podria hacer esto por que no tengo ni dea de lo que se me pidio :/
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.