Сегодня утром написал вольтметр на 4 разряда:
код на сосфорже,
схема.
Алгоритм элементарный: раз в миллисекунду обновляется очередная цифра на экране индикатора + заносится очередное значение, полученное АЦП, в буфер из девяти чисел. Как только буфер заполняется, вычисляется медиана (18 операций сравнения/перестановки) и прибавляется к значению U (инкрементируя соответствующий счетчик). Один раз в 300мс происходит обновление измеренного значения: U усредняется, умножается на 3300 (3.3В - амплитуда питания, 10 - коэффициент делителя, 100 - т.к. напряжение в сотых долях Вольта считается) и сдвигается вправо на 10 разрядов (т.к. АЦП 10битный). Измерение на тестовом источнике 5/12В показало, что вполне нормально данные согласуются с измерением на обычном вольтметре (с точностью до LSB, равного 0.03В).