buenas tardes, estoy tratando de realizar un data logger con el pcf 8591 que tenga 2 canales. con 1 canal el programa funciona en forma correcta pero cuando ingreso los comandos i2c(ver programa) para funcionar con 2 canales, la salida digital mostrada en la pantalla lcd y el puerto serial entrega cualkier valor ke no corresponde al voltage analogo ingresado.
las lineas de comando para 1 canal funciona impeke, yo copio lo mismo cambiando la configuracion para el 2 canal y no pasa nada.trate de utilizar el driver del amigo vezner ke funciona correcto para 1 solo canal pero cuando ingreso la palabra de control para el 2 canal no funciona, por lo ke estoy realizando el programa con comandos i2c del ccs.
intente colonda el i2c_stop() al final y tampoco.colocando delay_us() antes de leer y nada.los 4 canales en forma independiente funcionan correcto.
cualkier ayuda o comentario sera muy agradecido.gracias
#include <16f877A.h>
#fuses XT,NOPROTECT,NOLVP, NOWDT
#org 0x0f00,0x0fff void loader() {} //para el 16f877 (bootloader)
#use delay(clock=4000000)
#use rs232(baud=19200, xmit=PIN_C6, rcv=PIN_C7, PARITY=N)
#include "lcd_mod.c"
#use i2c(master,sda=PIN_C4, scl=PIN_C3)
int valor1; //variable ke almacena el valor del canal 1
int valor2; //almacena el canal 2 del conversor
main()
{
output_high(PIN_C4);
output_high(PIN_C3);
while(true)
{
lcd_init();
i2c_start(); // Inicio la comunicación I2C
i2c_write(0b10010000); // Envío Dirección I2C del PCF8591
i2c_write(0b00000000); // Envío Configuración del PCF8591 para Conversor canal 1.
i2c_start(); //iniciamos comandos...
i2c_write(0b10010001); //...de lectura
valor1=i2c_read(); //valor1 almacena el valor de 8 bit
printf(lcd_putc,"valor1 =%u",valor1); //imprimo en el lcd el valor del canal 1
printf("valor1 =%u\n\r",valor1); //inprimo en el puerto serial canal 1
delay_ms(1000);
// comandos para el segundo canal(igual al primero pero no funciona)
lcd_init();
i2c_start(); // Inicio la comunicación I2C
i2c_write(0b10010000); // Envío Dirección I2C del PCF8591
i2c_write(0b00000001); // Envío Configuración del PCF8591 para Conversor canal 2.
i2c_start(); //iniciamos comandos...
i2c_write(0b10010001); //...de lectura
valor2=i2c_read();
printf(lcd_putc,"valor2 =%u",valor2);
printf("valor2 =%u\n\r",valor2);
delay_ms(1000);
}
}