53 uint16_t temp_config = this->
config_;
56 temp_config &= 0b1000111111111111;
57 temp_config |= (multiplexer & 0b111) << 12;
61 temp_config &= 0b1111000111111111;
62 temp_config |= (
gain & 0b111) << 9;
64 if (temperature_mode) {
67 temp_config |= 0b0000000000010000;
71 temp_config &= 0b1111111111101111;
75 temp_config |= 0b1000000000000000;
85 uint8_t adc_first_byte = this->
read_byte();
86 uint8_t adc_second_byte = this->
read_byte();
88 uint16_t raw_conversion =
encode_uint16(adc_first_byte, adc_second_byte);
90 auto signed_conversion =
static_cast<int16_t
>(raw_conversion);
92 if (temperature_mode) {
93 return (signed_conversion >> 2) * 0.03125f;
96 float divider = 32768.0f;
99 millivolts = (signed_conversion * 6144) / divider;
102 millivolts = (signed_conversion * 4096) / divider;
105 millivolts = (signed_conversion * 2048) / divider;
108 millivolts = (signed_conversion * 1024) / divider;
111 millivolts = (signed_conversion * 512) / divider;
114 millivolts = (signed_conversion * 256) / divider;
120 return millivolts / 1e3f;