54 uint16_t temp_config = this->
config_;
57 temp_config &= 0b1000111111111111;
58 temp_config |= (multiplexer & 0b111) << 12;
62 temp_config &= 0b1111000111111111;
63 temp_config |= (
gain & 0b111) << 9;
65 if (temperature_mode) {
68 temp_config |= 0b0000000000010000;
72 temp_config &= 0b1111111111101111;
76 temp_config |= 0b1000000000000000;
86 uint8_t adc_first_byte = this->
read_byte();
87 uint8_t adc_second_byte = this->
read_byte();
89 uint16_t raw_conversion =
encode_uint16(adc_first_byte, adc_second_byte);
91 auto signed_conversion =
static_cast<int16_t
>(raw_conversion);
93 if (temperature_mode) {
94 return (signed_conversion >> 2) * 0.03125f;
97 float divider = 32768.0f;
100 millivolts = (signed_conversion * 6144) / divider;
103 millivolts = (signed_conversion * 4096) / divider;
106 millivolts = (signed_conversion * 2048) / divider;
109 millivolts = (signed_conversion * 1024) / divider;
112 millivolts = (signed_conversion * 512) / divider;
115 millivolts = (signed_conversion * 256) / divider;
121 return millivolts / 1e3f;