цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Простой метод определения направления вращения вала инкрементального энкодера

Простой метод определения направления вращения вала инкрементального энкодера

Автор: Mike(admin) от 12-06-2014, 07:21

Определить направление вращения двухбитного инкрементального энкодера можно довольно простым способом. При этом не нужно организовывать ветвления из структур if-then, которые оценивают оба бита при каждом переходе.


Здесь применяется операция исключающего ИЛИ над младшим битом новой выборки и старшим битом старой выборки.



// Декодирование сигналов инкрементального энкодера
uint new;
uint old;
bool direction;
int count=0;

/* Получаем последнюю 2-битовую выборку */
new = get_new_bits();  // Ваша функция для получения новой выборки

/* операция исключающего ИЛИ над младшим битом новой выборки и старшим битом старой выборки.*/
direction = (new&1) ^ (old>>1)

/* Переменная direction хранит направление вращения */

/* Делаем из новой выборки старую выборку */
old = new;

/* Мы можем использовать переменную direction для инкрементирования или декрементирования счетчика для поддержания положения вращения */
if(direction) counter--; else counter++;



Перевод © digitrode.ru


<Источник>




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий