Это:
Цитата:
1) определить количество оборотов
2) наболтать пропусков сигнала от датчика холла при превышении 4000 оборотов.
постановка задачи.
А это:
Цитата:
1) взводите таймер на 250 мкс
2) если таймер досчитал и пришел сигнал - вы его пропускаете (насквозь) и сбрасываете таймер
если таймер не досчитал - вы сигнал отсекаете (не пропускаете насквозь) и не трогаете таймер
наиболее эффективный (с моей точки зрения) путь реализации.
распишу поподробнее:
1) организуете работу таймера так, чтобы он срабатывал каждые 1/N секунды и вызывал прерывание.
2) в обработчике прерывания взводите флаг "таймер сработал"
3) в основной программе проверяете приход импульса, дальше так: если импульс пришел-проверяете: флаг таймер сработал, если да - то на выход подать импульс, сбросить флаг и таймер, если импульс не пришел или флаг не поднят (импульс пришел, но ему еще рано) - ничего не делать и переходить к проверке кнопки. Если нажата кнопка - менять N и перенастраивать таймер. Возвращаться к проверке прихода импульса.
контроллеры справятся любые. |