Есть пару мышек без дела, в них стоят энкодеры на 3 ножки. Почему данный энкодер через шаг имеет разное исходное состояние, тоисть один шаг-все ножки разомкнуты, а на втором все замкнуты ?? Это какой то кривой энкодер или так должно быть ? Я представлял себе энкодер вот по этому рисункутак что в исходном состоянии все ножки разомкнуты, крутим вправо так А-ножка замыкает первая на С-ножку чем В-ножка, а если влево,то наоборот, из чего сделал алгоритм - Смотрим на состояние А ножки, и по фронту(0 к 1), смотрим на В ножку, если во время фронта на В ножке 0, то крутим в одну сторону, если на ножке В 1 то в другую .
mich91 писал(а):Это какой то кривой энкодер или так должно быть ?
Дружище, я дня 3 пытался заставить нормально работать энкодер от мыши. Не бросал только по одной причине : "В мышке же работает!!" Но так ничего путного из этого не получилось . Как все это работает в мышке - одним китайцам ведомо...
Подключал энкодер от умершей оптической мыши к контроллеру. Завелось без проблем. Может ваш энкодер приказал долго жить и стоит покурочить другую мышь?
Что за чушь? так и должно быть посмотрите на диаграмму то.Речь идет о оптическом инкодере или как?
Когда оба глаза в окне так и будет два замкнуты, а когда оба глаза закрыты шторкой будут оба разомкнуты.Между шагами будет как раз промежуточное состояние- то что на вашем рисунке под пунктиром.
Алгоритм получается такой запомнили предыдущее состояние оба ведь одинаковые.
Теперь при начале движения у одного контакта случилось изменение так вот в сторону этого контакта и есть движение.
Таким образом при движении дальше изменение второго игнорируется.
Пока оба состояния не станут одинаковыми.
Потом все повторяется.
Соответственно можно и через прерывание по изменению ноги А сделать.Как в первом посте написано.
Ну смысл то от этого не меняется.Должно по очереди переключаться.Если одновременно переходят в это состояние, то точно неисправен.То что в нейтральном положении оба в одном состоянии это нормально, нужно проверять в промежуточном между стабильными состояниями.
vitalik_1984 писал(а):Ну смысл то от этого не меняется.Должно по очереди переключаться.Если одновременно переходят в это состояние, то точно неисправен.То что в нейтральном положении оба в одном состоянии это нормально, нужно проверять в промежуточном между стабильными состояниями.
Сделал даже без прерываний ))
вот может кому то пригодится !!!
Спойлер
PS Вас уже один раз предупредили насчет правила 2.7 для того, чтобы просто ответить на предыдущее сообщение есть кнопка ответить.Не нужно ничего цитировать.Внимательнее, а то следущий раз модератор может бан назначить.
Можно было последние иф сделать через switch было бы нагляднее.
Формируется байт статуса, потом в конце обрабатывается.При этом используется меньше переменных.
И еще есть прикольная операция XOR берем предыдущее состояние 00 к примеру делаем операцию XOR новое состояние 10 получаем 10 то есть было движение влево.Теперь предположим что первое состояние 11 XOR новое 01 =10 изменился левый бит и код ответа одинаковый, соответственно можно судить в какую сторону движется энкодер.
Дак там ещё и триггер сделан с помощью MOVE, тоисть что бы много кратно не считало VALUE пока энкодер не пройдет до конца шага, на SWITCH такое не получится без IF!