Started testing a new load cell and noticed that ADC results were odd:

Weight (kg)    AIN (mV)   ADC 24bits (hex)

2kg                    3.7mV               009752F0

4kg                         6.3mV          00FFEC90

4.1kg                    6.4mV            0082B118

Above 6.3mV the codes appear to drop (excitation voltage is 3.24V).

So looked at the status bits and, whereas was expecting / hoping for:

0100 1001 (gain is 128)


0100 1111

Which indicates there was some error in the reading of the data.

Anything wrong with this code fragment? (I've been using it for some time but never checked the status bits since behaviour was satisfactory. Previous load cells might not have reached the 6.3mV threshold... Am on the Evaluation board to eliminate other variables.)

unsigned long read_adc(void)


    if (DOUT_AD7780) // if it is high then not ready for reading


        return 0;


    unsigned char i;

    unsigned long reading = 0;

    for (i = 0; i<32; i++)


        SCLK_AD7780 = 0;

        reading <<= 1; // left shift unsigned long int


        if (DOUT_AD7780)


            reading |= 1;


        SCLK_AD7780 = 1;



    return reading;



Parents Reply Children
No Data