Так, я всё-таки запутался… текущий код (который залит в МК) - он точно не работает с отрицательными температурами? Или - мне следует просто проверить, и есть вероятность, что работает?
int16_t readDS18B20(byte *addr) {
uint8_t data[9];
ds.reset();
ds.select(addr);
ds.write(0xBE); // Читать scratchpad
for (uint8_t i = 0; i < 9; i++) {
data[i] = ds.read();
}
// Проверка CRC
if (dallas_crc8(data, 8) != data[8]) {
return 0x7FFF; // Ошибка
}
int16_t raw = (data[1] << 8) | data[0];
return (raw * 10) >> 4; // Десятые доли