|
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 52
|
|
Энкодер через прерывания / зараза дребезг16.04.2015, 22:09. Показов 26300. Ответов 24
Метки нет (Все метки)
Всем привет!
Делаю обработчик сигнала с инкрементального двухфазного энкодера . Алгоритм следующий: <ul>1) на одну фазу сажаю прерывание, что позволяет вести счет тактов 2) т.к. одна фаза отстает/обгоняет другую на полшага, то в обработчике прерывания смотрю вторую фазу для определения направления вращения, если вторая фаза 0 - значит обратный ход, если 1 - значит вперед</ul>Вроде бы все прсто и красиво, но вот проблема - дребезг! Имеется дребез который создает ложные прерывания. Как от него можно избавиться? Знаю что у STM32 есть аппаратный обработчик энкодера(пользовался и умею настраивать), но в данном случае его использовать не могу. К триггеру Шмитта и другм аппаратным решениям прибегать не хочеться. Можно ли как-то решить эту проблему програмно? Спасибо!
0
|
|
| 16.04.2015, 22:09 | |
|
Ответы с готовыми решениями:
24
Задержки на SysTick внутри обработчика прерывания, дребезг Энкодер влияет на прерывания, хотя напрямую не подключен. Графика через прерывания на Borland С++ 3.1 |
|
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
|
|
| 16.04.2015, 22:29 | |
|
Япона мать! У STM32 есть таймеры. И у таймеров есть режим "энкодер". И аппаратная защита от дребезга!!!
Ну почему нельзя почитать даташит??? // для решения программно нужно будет реализовать алгоритм антидребезга таймера. Это — костыли и тормоза.
0
|
|
|
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 52
|
|||
| 16.04.2015, 22:39 | |||
Поэтому мне и нужно сваять костыли для оставшихся 2.
0
|
|||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 16.04.2015, 22:41 | |
|
Ну, по мне прочитать страницу даташита и сделать устойчивую обработку энкодера - сопоставимые по сложности вещи. Благо, энкодеру даже антидребезг не нужен: если в обработчике читать оба пина и сравнивать их состояние с предыдущим, то самое страшное, что грозит - неточность на один отсчёт. А если работать по таймеру - то даже она не грозит.
0
|
|
|
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 52
|
||
| 16.04.2015, 22:48 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 16.04.2015, 22:54 | |
|
Повесьте на таймер.
Вкратце: у вас два бита x и y, и предыдущие значения x1 и y1. Таблица: x1 x y1 y: ymsrement 0000, 0011, 1100, 1111: - без изменений 0001, 0111, 1110, 1000: +1 1101, 0100, 0010, 1011: -1 Остальные - ошибка.
0
|
|
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
| 16.04.2015, 22:54 | |
|
А так не годится - http://iosyitistromyss.ru/obrabotka-mno ... menno.html?
0
|
|
|
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
|
|
| 16.04.2015, 22:57 | |
|
ОК, подсказываю простой вариант: в обработчике прерывания от энкодера вы запрещаете этот EXTI, а уже по прошествию, скажем, 30мс, разрешаете обратно (в основном цикле КА).
Я так на STM8 делал.
0
|
|
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
| 16.04.2015, 23:01 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 52
|
||||
| 16.04.2015, 23:21 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
|
|
| 16.04.2015, 23:40 | |
|
Думаю, тут проблема с говнистым энкодером. Вверх оно бежало тупо потому, что энкодер удалось установить в запрещенное состояние, а программно почему-то это состояние не обрабатывалось.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 16.04.2015, 23:56 | |
|
Повесить на таймер - да, по переполнению таймера. Скажем, если предельная скорость вращения 10 оборотов в секунду и у энкодера 24 отсчёта - надо не чаще 240 раз в секунду читать порты.
Ещё один вариант - перечитывать все энкодеры по прерыванию от любой ноги, если у вас есть что-нибудь типа avr-ного PCINT (одно прерывание на все ноги, всё равно в обработчике будете смотреть, кто изменился)
0
|
|
|
0 / 0 / 0
Регистрация: 26.03.2015
Сообщений: 316
|
|
| 17.04.2015, 03:07 | |
|
MoxymS - наверное уже сам догадался, что необходимо два прерывания...
То прерывание что сработало - запрещаем, второе разрешаем. Энкодер должен тонуть в воде, если плавает - то только замена.
0
|
|
|
0 / 0 / 0
Регистрация: 15.06.2014
Сообщений: 118
|
|
| 17.04.2015, 04:11 | |
|
Энкодеры дребезжат дай боже. Когда их много (или матрица кнопок, энкодеров и тп), и ресурсов в достатке, можно чтение порта с этим зоопарком на DMA вешать. Потом брать "среднее арифметическое" для устранения дребезга. Не самый изящный метод, но время выполнения - константа.
0
|
|
|
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 52
|
|
| 17.04.2015, 10:43 | |
|
Всем большон мпасибо!
Пока решил все же делать прерывания на все ногах. Буду пробовать)
0
|
|
|
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
|
||||||
| 19.04.2015, 10:59 | ||||||
|
Если имеется в виду энкодер, используемый для управления (а не скоростной энкодер на валу двигателя), то с дребезгом бороться очень просто. За один щелчок он проходит 4 состояния. Дребезг вызывает переходы только между соседними состояниями. Нужно запретить реакцию на такие переходы.
0
|
||||||
|
hokmox
|
|
| 19.04.2015, 18:09 | |
|
Простите что не в тему. Не могли бы Вы помоч в подключении энкодера tgl-34235. У него разъем на 25 pin, и какой куда подключать не пойму. За ранее благодарен.
|
|
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 25
|
|
| 20.04.2015, 09:59 | |
|
Внесу и свою лепту. Неплохой ресурс - http://stm32f4-discovery.net/. Так же есть видеоуроки на ютубе от sappise. У него было об обработке энкодера и борьбы с дребезгом.
0
|
|
|
0 / 0 / 0
Регистрация: 11.02.2012
Сообщений: 2
|
||
| 20.04.2015, 11:02 | ||
Для конкретного ответа нужна осциллограмма выходных сигналов энкодера и схема подключения. Функции триггера Шмидта может выполнить сам контроллер.
0
|
||
|
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
|
|
| 20.04.2015, 14:09 | |
|
Ребята, а вы не пробовали использовать не четыре, а два или даже одно значащее состояние энкодера? При табличном методе нужно всего-навсего заменить таблицу состояний. При этом количество запрещённых состояний растёт, и борьба с дребезгом намного более эффективная. У меня получилось использовать все три варианта, посмотрите здесь код:
http://sova-audyo.btogspot.com... -post.html
0
|
|
| 20.04.2015, 14:09 | |
|
Помогаю со студенческими работами здесь
20
Прерывания звука через Bluetooth устройства Рисование линий через прерывания в видеорежиме
ATtiny 2313. Бегущие огни через прерывания Оценка быстродействия через функцию прерывания типа 21 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|