Цитата Сообщение от Frud Посмотреть сообщение
Оцените величину этой лишней нагрузки.

Измеряется не длина импульса, а период. Разницу осознаете? Поэтому скважность и форма импульса значения не имеет, хоть синусоида. Что такое "столбики" я не понял, но если имеются в виду аналоговые датчики, то их значения можно измерять на аналоговом входе, а мой код для импульсных датчиков, каких подавляющее большинство.
Это я отвечал как раз по поводу замера длины имульса (PulseIn и др. способы). "Столбики" - это форма сигнала на осциллограмме. Вот чуть выше пост опять про длину импульса...
Цитата Сообщение от Frud Посмотреть сообщение
Что мешает использовать абсолютное значение этой разницы без учета знака? Если если система сделана с косяком и ее может сбить скачек, то нафиг такая система нужна. Такие системы делают с обязательной защитой от случайных недостоверных значений датчиков.
В какой-то момент "micros_sp" будет 4 миллиарда, а micros() - небольшой и тут как ни крути, а всё равно будут неверные данные и их придется исключить.
И потом, что стоит добавить мелочь в виде "if (micros_sp < micros())" ?
И еще момент - вычисления происходят в функции прерывания, т.е. пока она выполняется другие прерывания ждут. Насколько целесообразно так часто делать лишние вычисления и отбирать микросекунды у других прерываний?

А для системы, где глюк чувствителен, я использую millis(), которая обнуляется за очень большой, как для авто, промежуток времени и вычисляю скорость по сумме импульсов за период, причем в цикле.
Сразу скажу по поводу точности и усреднения - для периода обработки в 100мс и авто "7с от 0 до 100км/ч" отставание составляет менее чем на 2км/ч (в период этого самого разгона), а после 60км/ч - меньше 1км/ч, а после 90км/ч - 0,3км/ч.