uint8_t FDC1004::getRepeatCapacitance()

in FDC1004.cpp [277:335]


uint8_t FDC1004::getRepeatCapacitance(uint8_t measurements, float * capacitance)
{
  uint32_t rawdata;
  float data; 
  uint16_t capdac;
  uint32_t value[4];
  getRepeatRawData(measurements, value);
  int idx = 0;
  if((measurements & 8)>0)
  {
      rawdata = (value[idx] & 0xFFFFFF); //make sure it is only 24 bit data
      data = convert2Decimal24(rawdata);

      capdac = readRegister16(FDC1004_CONF_MEAS1);
      capdac = (capdac >> 5) & 0x1F; //isolate 5 bits [9:5] with capdac value
      //capdac = capdac * 3.125; //in pF
      
      capacitance[idx] = (data/524288.0) + (capdac*3.125);
      idx+=1;//pow(2,19) equation from page 16 of datasheet
  }
  if((measurements & 4)>0)
  {
      rawdata = (value[idx] & 0xFFFFFF); //make sure it is only 24 bit data
      data = convert2Decimal24(rawdata);

      capdac = readRegister16(FDC1004_CONF_MEAS2);
      capdac = (capdac >> 5) & 0x1F; //isolate 5 bits [9:5] with capdac value
      //capdac = capdac * 3.125; //in pF
      
      capacitance[idx] = (data/524288.0) + (capdac*3.125);
      idx+=1; //pow(2,19) equation from page 16 of datasheet
  }
  if((measurements & 2)>0)
  {
      rawdata = (value[idx] & 0xFFFFFF); //make sure it is only 24 bit data
      data = convert2Decimal24(rawdata);

      capdac = readRegister16(FDC1004_CONF_MEAS3);
      capdac = (capdac >> 5) & 0x1F; //isolate 5 bits [9:5] with capdac value
      //capdac = capdac * 3.125; //in pF
      
      capacitance[idx] = (data/524288.0) + (capdac*3.125); //pow(2,19) equation from page 16 of datasheet
      idx+=1;
  }
  if((measurements & 1)>0)
  {
      rawdata = (value[idx] & 0xFFFFFF); //make sure it is only 24 bit data
      data = convert2Decimal24(rawdata);

      capdac = readRegister16(FDC1004_CONF_MEAS4);
      capdac = (capdac >> 5) & 0x1F; //isolate 5 bits [9:5] with capdac value
      //capdac = capdac * 3.125; //in pF
      
      capacitance[idx] = (data/524288.0) + (capdac*3.125); //pow(2,19) equation from page 16 of datasheet
      idx+=1;
  }

  return 0;
}