Apr 09, 2013 10:00
Однобитные варианты:
1. Переменная uint32_t для буффера. Просто сдвигать влево. Перед этим выделять старший бит и вычитать 1 из аккумулятора, если там старший
бит 1. И по OR добавлять в младший бит 1, если на входе 1. И добавлять 1 в аккумулятор.
2. Просто счётчик, с заданием нижнего Lo и верхнего Hi порогов. Всё что ниже порога Lo - 0. И всё что выше порога Hi - 1.
Счётчик с насыщением при инкременте и декременте, что бы не было переполнений. Можно насыщение задавать порогами, тогда нужно использовать условие =, вместо условий больше или меньше.
Обновление счётчика/аккумулятора производить по таймеру через равные интервалы времени T.
По сути выходит интегратор с постоянной времени T*(Hi - Lo).
Использую для борьбы с дребезгом кнопок.
ЦОС