¡Muy buenas! Pues nada, por fin tengo tiempo libre y hoy me he puesto a aprender I2C en pics, y me he dicho que hasta que no aprenda no me muevo del sitio >.<
He leído mucho y encontrado información pero no tanta como la que esperaba :S
Os cuento lo que quiero hacer en C. Quiero visualizar los datos que me manda un sensor de temperatura a un pic16f876 por I2C mediante una LCD. He hecho el siguiente esquema con el siguiente programa, pero claro, no me funciona, y no se a qué se debe, os lo dejo para que opinéis pero tened en cuanta que no soy muy bueno en esto, que nunca he tocado I2C =) ¡¡Gracias!!
void main()
{
int data[8];
char codigo[8];
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
lcd_init();
lcd_putc("Prueba I2C");
delay_ms(1000);
i2c_start();
i2c_write(0xa5);
i2c_write(0);
i2c_start();
i2c_write(0xa5);
data[0]=i2c_read();
data[1]=i2c_read();
data[2]=i2c_read();
data[3]=i2c_read();
data[4]=i2c_read();
data[5]=i2c_read();
data[6]=i2c_read();
data[7]=i2c_read();
i2c_stop();
codigo[0]=data[0]+48;
codigo[1]=data[1]+48;
codigo[2]=data[2]+48;
codigo[3]=data[3]+48;
codigo[4]=data[4]+48;
codigo[5]=data[5]+48;
codigo[6]=data[6]+48;
codigo[7]=data[7]+48;
lcd_putc('\f');
lcd_putc(data[1]); //solo muestro el dato[1] para probar
}
Aquí está la conexión
Uploaded with
ImageShack.usY aquí lo que puedo leer en el datasheet.
Uploaded with
ImageShack.us