Обработка сигнала энкодера
Posted: Thu Dec 22, 2016 6:25 am
Интересный кстати вопрос. Получается, что использование для счета 4-х фронтов потенциально опасно из-за влияния джиттера. И неважно как ведется обработка, программно или аппаратно, просто аппаратно быстрее и оно успевает обрабатывать фронты без пропусков.
Если обрабатывать по прерываниям, поймав переход канала В из low в hight и обрабатывая его, программа может пропустить переход обратно из hight в low. Соответственно насчитав по первому переходу +1, программа пропустит -1 по второму.
И пойдет дрейф показаний. Однако если для фиксации приращения +1 программа должна обрабатывать два перехода, то дребезг по одному из фронтов никак не будет влиять.
То есть по фронту канала В будет взводиться флаг готовности к счету, а по фронту канала А, при наличии флага будет производиться счет и сбрасываться флаг.
Тогда дребезг по любому фронту будет просто устанавливать (В) или сбрасывать (А) флаг, а счет производиться не будет. Чтобы был счет, вал должен повернуться как минимум на четверть шага.
Если обрабатывать по прерываниям, поймав переход канала В из low в hight и обрабатывая его, программа может пропустить переход обратно из hight в low. Соответственно насчитав по первому переходу +1, программа пропустит -1 по второму.
И пойдет дрейф показаний. Однако если для фиксации приращения +1 программа должна обрабатывать два перехода, то дребезг по одному из фронтов никак не будет влиять.
То есть по фронту канала В будет взводиться флаг готовности к счету, а по фронту канала А, при наличии флага будет производиться счет и сбрасываться флаг.
Тогда дребезг по любому фронту будет просто устанавливать (В) или сбрасывать (А) флаг, а счет производиться не будет. Чтобы был счет, вал должен повернуться как минимум на четверть шага.