Суть проблемы в следующем. Кручу энкодер - первый щелчок ничего, второй - срабатывание. Что влево, что вправо. Тоесть, иформативный каждый второй поворот энкодера. Ставил второй - без разницы. Программы разные использовал для тестирования - везде одинаковый результат. ( Подключаю к Ардуино Уно ).
Как он включен аппаратно (вроде есть ли RC low pass для подавления дребезга или что-то еще "необычное")? Как происходит опрос входов (просто цикл и все)? Или предусмотрено прерывание на обработку энкодера (тогда надо задействовать те немногочисленные ноги, изменение уровня на которых задает внешнее прерывание)? Потому что по описанию выглядит так, что первое действие включает опрос входов и тогда второе действие обрабатывается как должно, но пока что это не более чем фантазии, а не ответ на вопрос.
Как мне кажется, тема скорее для "Информатики и бытовой электроники", а не для "Радио" - там больше общих электронщиков и программистов, а здесь больше связисты.
UT7UX 18.02.2019 17:46 пишет: но пока что это не более чем фантазии, а не ответ на вопрос.
Как мне кажется, тема скорее для "Информатики и бытовой электроники", а не для "Радио" - там больше общих электронщиков и программистов, а здесь больше связисты.
Изначально проверялось на схеме синтезатора на Si5351. После обнаружения этого явления работа энкодера проверялась на простой программе проверки. Результат одинаковый. /* Rotary Encoder - Interrupt Example
The circuit: * encoder pin A to Arduino pin 2 * encoder pin B to Arduino pin 3 * encoder ground pin to ground (GND) */
ISR(PCINT2_vect) { unsigned char result = r.process(); if (result == DIR_NONE) { // do nothing } else if (result == DIR_CW) { Serial.println("ClockWise"); } else if (result == DIR_CCW) { Serial.println("CounterClockWise"); } }
Если изменить выводы подключения ( поменять местами ) то меняется направления отсчета, а черезшаговость остается. Оно вроде и не сильно напрягает, но непонятно с чего бы так ? Ладно, буду копать дальше..