Lectura del ADC MCP3424 con PIC

#1
Estimados:
Les comento que deseo leer datos desde el ADC MCP3424 con un PIC18F4550 en mikroC.
Este ADC tiene comunicación I2C con dirección 1101 de fábrica y con 2 pines para dejar en alto, bajo, o flotante, para configurar el resto de la dirección, en mi caso los dejé en nivel bajo.
Realicé dos funciones básicas, una para escribir datos al ADC enviando los bits de dirección mas el bit de escritura, luego enviando los bits de configuración y otra para leer los datos del ADC solo con los bit de dirección mas el bit de lectura.
Pero la verdad que no estoy seguro cómo leer la trama de bytes que entrega el chip.
Si me pueden dar ideas de cómo leer los bytes y entender el tema de los valores negativos y mostrarlos por un LCD, se los agradecería.
Saludos.
C:
sbit LCD_RS at LATD2_bit;

sbit LCD_EN at LATD3_bit;

sbit LCD_D4 at LATD4_bit;

sbit LCD_D5 at LATD5_bit;

sbit LCD_D6 at LATD6_bit;

sbit LCD_D7 at LATD7_bit;


sbit LCD_RS_Direction at TRISD2_bit;

sbit LCD_EN_Direction at TRISD3_bit;

sbit LCD_D4_Direction at TRISD4_bit;

sbit LCD_D5_Direction at TRISD5_bit;

sbit LCD_D6_Direction at TRISD6_bit;

sbit LCD_D7_Direction at TRISD7_bit;



signed long Read_MCP3424(){


   signed long value=0;

   I2C1_Start();

   I2C1_Wr(0b11010001); //Bit de direccion mas Bit de Lectura MCP3424

   Delay_us( 10 );

   value=I2C1_Rd(0);

   I2C1_Stop();

   return(value);

}


void Write_MCP3424(){


   I2C1_Start();

   I2C1_Wr(0b11010000); //Bit de direccion mas Bit de escritura MCP3424

   I2C1_Wr(0b10010000); //byte de configuracion MCP3424

   I2C1_Stop();


}


void main()

{

  ADCON1=0b00001111; //Todos los ADC como digitales

  I2C1_Init(100000);

  Lcd_Init();                        // Initialize LCD

  Lcd_Cmd(_LCD_CLEAR);               // Clear display

  Lcd_Cmd(_LCD_CURSOR_OFF);          // Cursor off

  Lcd_Out(1,1,"Volt Ch1:");

 

while (1)

   {

   Write_MCP3424();

   Read_MCP3424();

}

}
 

Arriba