long MCP3426::readADC() { raw_adc = 0; while(CheckConversion() == 1); switch (SPS) { case 12: raw_adc = data[0]; raw_adc &= 0b00001111; raw_adc = raw_adc << 8; raw_adc |= data[1]; if(raw_adc > 2047) { raw_adc = raw_adc - 4096; } // raw_adc = raw_adc * LSB(1 mV)/PGA for PGA = 1; break; case 14: raw_adc = data[0]; raw_adc &= 0b00111111; raw_adc = raw_adc << 8; raw_adc |= data[1]; if(raw_adc > 8191) { raw_adc = raw_adc - 16384; } // raw_adc = raw_adc * LSB(250 µV)/PGA for PGA = 1; break; case 16: raw_adc = data[0]; raw_adc = raw_adc << 8; raw_adc |= data[1]; if(raw_adc > 32767) { raw_adc = raw_adc - 65536; } // raw_adc = raw_adc * LSB(62.5 µV)/PGA for PGA = 1; break; } return raw_adc; }