55 uint16_t temp_config = this->
config_;
58 temp_config &= 0b1000111111111111;
59 temp_config |= (multiplexer & 0b111) << 12;
63 temp_config &= 0b1111000111111111;
64 temp_config |= (
gain & 0b111) << 9;
66 if (temperature_mode) {
69 temp_config |= 0b0000000000010000;
73 temp_config &= 0b1111111111101111;
77 temp_config |= 0b1000000000000000;
87 uint8_t adc_first_byte = this->
read_byte();
88 uint8_t adc_second_byte = this->
read_byte();
90 uint16_t raw_conversion =
encode_uint16(adc_first_byte, adc_second_byte);
92 auto signed_conversion =
static_cast<int16_t
>(raw_conversion);
94 if (temperature_mode) {
95 return (signed_conversion >> 2) * 0.03125f;
98 float divider = 32768.0f;
101 millivolts = (signed_conversion * 6144) / divider;
104 millivolts = (signed_conversion * 4096) / divider;
107 millivolts = (signed_conversion * 2048) / divider;
110 millivolts = (signed_conversion * 1024) / divider;
113 millivolts = (signed_conversion * 512) / divider;
116 millivolts = (signed_conversion * 256) / divider;
122 return millivolts / 1e3f;