У вас скорее всего ещё и петля обратной связи становится неустойчивой.
Не понимаю, о какой петле ОС Вы говорите.
Значения в переменной encCount всегда небольшие по модулю, но могут быть разных знаков. Это "щелчки" энкодера, 24 щелчка на оборот.
Функция, заполняющая эту переменную отлажена и работает нормально. Так что, чтобы переполнить double (больше чем

, или меньше чем

) надо очень много и быстро крутить

UPD: после применения в указанном выражении encCount обнуляется, и ждем очередных "щелчков".
Называть "классикой жанра" такие индивидуальные особенности Ардуины у меня бы язык не повернулся.
Классика жанра в том, что неявные преобразования типов могут приводить к чудесам.
-- 20.02.2018, 12:34 --А вот переполнение ардуиновского 16-битного int при умножении может приводить к переполнению результата умножения,
То есть результат умножения uint32_t (беззнаковое 32-битное) и int (знаковое 16-битное) будет int (16 битное знаковое)?