Цитата(Zliva @ Jul 15 2009, 21:59)

Как узнать, сколько пропущено угловых значений от инкрементного энкодера? Мне же нужно знать текущее значение угла поворота. Датчик не квадратурного типа, а- инкрементного.
Сигнал энкодера А:010101010101010101
Сигнал энкодера В:101010101010101010
Выборка_________:100001000100010001
С рисунка видно, что если я буду считывать с частотой 1 кГц, то мне не будет достаточно информации для определения текущего положения в момент выборки. Верно ли я понял?
Не бывает таких. Должно быть так:
Сигнал энкодера А:0110011001100110
Сигнал энкодера В:1100110011001100
Сигналы идут со сдвигом фаз 90град. Иначе канал В как инверсия А, бессмысленен.
Как правило, есть еще и третий канал (индексный) - 1 имп/оборот
Работать с энкодером лучше по прерываниям. Оба канала заводятся на ножки контроллера, и любое изменение состояния ножек вызывает прерывание. Внутри прерывания контроллер считает текущее положение и запоминает его.
Сообщение отредактировал =DS= - Jul 15 2009, 18:41