in FDC1004.cpp [174:203]
float FDC1004::getCapacitance(uint8_t measurement, uint8_t rate)
{
float data;
uint32_t rawdata = getRawData(measurement, rate);
//Serial.println(rawdata, BIN);
rawdata = (rawdata & 0xFFFFFF); //make sure it is only 24 bit data
//Serial.println(rawdata, BIN);
//get capdac value for this measurement channel
uint16_t capdac = readRegister16(FDC1004_CONF_MEAS1+(measurement-1));
capdac = (capdac >> 5) & 0x1F; //isolate 5 bits [9:5] with capdac value
//Serial.println(capdac);
//capdac = capdac * 3.125; //in pF
//Serial.println(capdac);
//convert from 2's complement to binary
if((rawdata & 0x800000) > 0)
{
data = -1*((~rawdata)+1);
}
else
{
data = rawdata;
}
data = ( data / 524288.0); //pow(2,19) equation from page 16 of datasheet
// Serial.println(data);
// Serial.println(capdac);
return data+(capdac*3.125);
}