На ATMega16 реализуются:
1. 3 прерывания (2 из которых внешние) и их обработки
2. сбор данных с 8 датчиков температуры (DS18B20) по интерфейсу 1-Wire
Интерфейс общения с датчиками реализован программно, поэтому в некоторых случаях прерывания прекращают реализацию интерфейсных задержек, в результате чего иногда приходят неверные значения температур. Для решения можно было бы запретить выполнение прерываний на время общения с датчиками, но их фиксирование является довольно важным. С другой стороны, прерывания возникают довольно часто и фильтрация неверных значений температур не спасет.
Возможно ли решение этой проблемы программно или же необходимо использовать контроллеры с аппаратной реализацией 1-Wire или доп. микросхемы, например SPI->1-Wire ? Спасибо.