Hola!!
Estoy probando a simular un ejemplo de lectura de un sensor TC74 a traves del puerto I2C, he leido varios ejemplo en este foro, pero por mas que hago pruebas con dichos codigos no me funciona.
Se inicia la comunicacion entre maestro y esclavo, pero el valor que lee es siempre fijo.
Adjunto codigo y simulación en proteus, Gracias.
#include <16f88.h> //pic a utilizar
#fuses NOWDT,NOPROTECT,PUT,NOLVP, NOMCLR,INTRC_IO, NODEBUG //ordenes para el programador
#use delay (clock=8000000) //Fosc=8Mhz
#define use_portb_lcd TRUE //definir portb lcd
#include <LCD_PORT_A.c> //libreria manejo lcd
#define EEPROM_SDA PIN_B1
#define EEPROM_SCL PIN_B4
#use i2c(master,sda=EEPROM_SDA, scl=EEPROM_SCL,FORCE_HW,slow)
#define escribir_dispositivo 0b10011000 //direccion del sensor y Write flag
#define leer_dispositivo 0b10011001 //direccion del sensor y read flag
long tmp=0;
void main(){
long i = 0;
output_float(EEPROM_SDA);
output_float(EEPROM_SCL);
lcd_init();
i2c_start();
i2c_write(escribir_dispositivo); // selecciono dispositivo
i2c_write(0x01); // le digo que voy al registro configuracion
i2c_write(0x00); // configuro en modo normal
i2c_stop(); // paro
while (true){
i++;
i2c_start();
i2c_write(escribir_dispositivo);
i2c_write(0x00);
//i2c_start();
i2c_write(leer_dispositivo);
tmp=i2c_read(1);
i2c_stop();
lcd_gotoxy(1,1);
printf(lcd_putc,"I=%02ld ",i);
lcd_gotoxy(1,2);
printf(lcd_putc,"Temp : %ld Grados",tmp); //%2D%cC",tmp,signo);
delay_ms(1000);
}
}