Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Как это - пропускает? Допустим, начали с фазы 1. Крутим вперёд:

Отправлено maik-vs 18 сентября 2008 г. 16:00
В ответ на: Ошибку нашел, теперь работает. Но он же после шага вперёд следующий шаг назад пропускает! отправлено Леонид Иванович 18 сентября 2008 г. 14:12

      вперёд    дребезг     назад         вернулись в исходное
знак (s) 0 0000 0000 00101010 1111 1111 1111 1 1
фаза 1 0231 0231 02020202 0132 0132 0132 0 1
счётчик 0 1 2 3 2 1 0

Собственно, алгоритм и появился при работе с колесом диаметром pi, с самодельным оптическим энкодером с фазами по 30-4- градусов, прислоненного к тросу. "Вот мы разматываем, счётчик прибавил 10см, а вот наматываем, а почему он убавляет те же самые 10 см в другом месте?!"
насчёт if((tmp1 & 0xC0) == (biphase & 0xC0)) return; там так и есть, предыдущее значение ксорится с настоящим, и если ничего не изменилось в старших битах будут нули, тогда return
У меня неправильно то, что фазы заведены на разные порты и поэтому считываются не одновременно, но так уж получилось.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите два из трёх, получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru