Analog to Digital Converter (MCP3428) + I2C bus problem....(library MCP342X too)

Hallo Everyone,
I am facing a problem.
I have 6 measurement boards. Each board has 2 temperature sensors and 1 current sensor. All of them have a analog output and I am using a MCP3428 to receive the values over a I2C bus. I am using only 3 channels of each MCP3428. At the beggining I tried to request all the values from the first ADC, then the second and so on but lately I discovered that for some reason any value was updated, that means, the values can be read but neither the temperature sensors nor the current sensor was changing over the time (even when the temperature and current were changing). Then I decided to request the first channel of the first ADC, then the first channel of the second ADC and so on, and it works but partially because now it only updates the first channels that I am addresing. Lets say that I have the following code

measureArray[0] = I2Cmeasure(0x68, 0x98, measureArray[0]);  //first channel of the first ADC
  measureArray[1] = I2Cmeasure(0x6D, 0x98, measureArray[1]);  ´//first channel of the second ADC
  measureArray[2] = I2Cmeasure(0x69, 0x98, measureArray[2]);   
  measureArray[3] = I2Cmeasure(0x6C, 0x98, measureArray[3]);
  measureArray[4] = I2Cmeasure(0x6A, 0x98, measureArray[4]);   //all channels are 16 bits, 1x gain and continous mode
  measureArray[5] = I2Cmeasure(0x6F, 0x98, measureArray[5]);
  measureArray[6] = I2Cmeasure(0x68, 0xB8, measureArray[6]);   //second channel of the first ADC
  measureArray[7] = I2Cmeasure(0x6D, 0xB8, measureArray[7]);   //second channel of the second ADC
  measureArray[8] = I2Cmeasure(0x69, 0xB8, measureArray[8]);
  measureArray[9] = I2Cmeasure(0x6C, 0xB8, measureArray[9]);
  measureArray[10] = I2Cmeasure(0x6A, 0xB8, measureArray[10]);
  measureArray[11] = I2Cmeasure(0x6F, 0xB8, measureArray[11]);
  measureArray[12] = I2Cmeasure(0x68, 0xD8, measureArray[12]);   //third channel of the first ADC
  measureArray[13] = I2Cmeasure(0x6D, 0xD8, measureArray[13]);   //thrid channel of the second ADC
  measureArray[14] = I2Cmeasure(0x69, 0xD8, measureArray[14]);
  measureArray[15] = I2Cmeasure(0x6C, 0xD8, measureArray[15]);
  measureArray[16] = I2Cmeasure(0x6A, 0xD8, measureArray[16]);
  measureArray[17] = I2Cmeasure(0x6F, 0xD8, measureArray[17]);

and the function I2Cmeasure looks like this:

int I2Cmeasure(byte p, byte mode, int measure_output)
  Wire.requestFrom(p, 2);
  int temp =;
  measure_output = temp << 8;
  measure_output |=;
  temp =;                 //TODO:check if this line is required
  return measure_output;

For some reason this code receives all the values but like I said only the first six values change over the time, the other ones remain static the whole time.

I though the problem was the configuration of the MCP3428 therefore I was trying to use library “MCP342x” to solve this problem but to be honest I couldn’t figure out how to make the instances of all my 6 MCP3428 with the 18 channels, and also I couldn’t undestand very well how the following line works?

MCP342x::Config status;

Does anyone have any idea why is this happening? and do you have some suggestion to solve my problem using the “MCP342x” library?

I am using the arduino DUE and the IDE 1.6.5

Thank you very much in advance for your help.


P.S. I got the libray from this link

Juan Gutierrez