TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: sokoloko en 06 de Junio de 2011, 07:07:34
-
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);
}
}
-
Bueno tras muchas pruebas me respondo a mi mismo por si a alguno mas le pasa.
En la ultima versión de Proteus las direcciones correctas para es sensor TC74 son:
#define escribir_dispositivo 0X9A
#define leer_dispositivo 0X9B
Con eso se soluciono el problema. :-/ :-/
-
Estvue haciendo pruebas y te iba a contestar eso. No es un tema del Proteus sino de la dirección del dispositivo.
-
Es que en algunos ejemplos vienen mal indicado.
Muchas gracias de todas formas.
Saludos!!!!
-
Hola, he intentado usar este codigo pero me muestra siempre el valor 255, a que puede ser debido?
Saludos