Проверка флага готовности датчика никогда не срабатывает
Бит 7 регистра статуса выставляется, когда измерение готово. Отладчик показывает status = 0x80, но ветка не выполняется:
uint8_t status = sensor_read_status();
if (status & (1 << 7) == 1) {
read_measurement();
}
В чём ошибка?
- Сравнение == выполняется раньше побитового &
- Сдвиг 1 << 7 переполняет тип uint8_t
- Нужно читать статус как int, а не uint8_t
- Бит 7 нумеруется с единицы, нужен сдвиг на 6
