Сначала я проверил, что нули действительно приходят из микроконтроллера в компьютер. Они приходили.
Потом я временно заменил измерения со всех других источников на фиксированные значения (100 у.е., 200 у.е. и т.д.), подозревая, что у меня путаются значения от разных источников. Но это не помогло -- по основному каналу измерения всё равно приходили именно нули.
Тогда я поставил точку останова в месте, где я получаю измеренное значение из микросхемы. Если получен ноль -- остановить программу. Не срабатывает.
Тогда я поставил точку останова в месте, где я сохраняю полученное значение в массив данных. Если сохраняется ноль -- остановить программу. Не срабатывает.
То есть, ноль не записывается, но приходит. Так, что ли?
А потом я вспомнил, что я когда-то сделал специальную подсистему для отслеживания пропущенных по разным причинам значений. И эта подсистема компенсирует пропущенные значения, сохраняя дополнительные в тот момент, когда пропуск обнаружен. А чтобы легче было опознать, был пропуск или нет, я сам намертво зануляю измеренное значение. И сохраняю его. Но делаю я это в другом месте, а не в том, где я ставил точки останова. Естественно, они не срабатывали.