|
0 / 0 / 0
Регистрация: 21.02.2015
Сообщений: 52
|
|
Энкодер через прерывания / зараза дребезг16.04.2015, 22:09. Показов 26680. Ответов 24
Метки нет (Все метки)
Всем привет!
Делаю обработчик сигнала с инкрементального двухфазного энкодера . Алгоритм следующий: <ul>1) на одну фазу сажаю прерывание, что позволяет вести счет тактов 2) т.к. одна фаза отстает/обгоняет другую на полшага, то в обработчике прерывания смотрю вторую фазу для определения направления вращения, если вторая фаза 0 - значит обратный ход, если 1 - значит вперед</ul>Вроде бы все прсто и красиво, но вот проблема - дребезг! Имеется дребез который создает ложные прерывания. Как от него можно избавиться? Знаю что у STM32 есть аппаратный обработчик энкодера(пользовался и умею настраивать), но в данном случае его использовать не могу. К триггеру Шмитта и другм аппаратным решениям прибегать не хочеться. Можно ли как-то решить эту проблему програмно? Спасибо!
0
|
|
| 16.04.2015, 22:09 | |
|
Ответы с готовыми решениями:
24
Задержки на SysTick внутри обработчика прерывания, дребезг Энкодер влияет на прерывания, хотя напрямую не подключен. Графика через прерывания на Borland С++ 3.1 |
|
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 25
|
|
| 20.04.2015, 22:43 | |
|
У меня проблема - делаю обработку энкодера по функции таймера. Не могу понять увелививается-уменьшается значение всегда на цифру 2.
0
|
|
|
dyokym
|
||
| 21.12.2016, 07:44 | ||
зы. Не подскажите пример кода для аппаратной обработки? А то на валу быстро крутится ) <Изображение удалено> |
||
|
0 / 0 / 0
Регистрация: 11.10.2013
Сообщений: 326
|
||||||||||||
| 22.12.2016, 20:43 | ||||||||||||
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 10.04.2014
Сообщений: 879
|
|
| 23.12.2016, 00:09 | |
|
А вы знаете что дребезг только при замыкании контактов? При размыкании контактов дребезга нет. Мне это как то помогло
0
|
|
|
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
|
|
| 22.02.2017, 12:16 | |
|
Работаю с энкодером. Возможно я что-то не так понял, но нигде не увидел запрета установки предделителя, который PSC.
Работаю с STM32F103T8U6 (VFQFPN36), TIM4 каналы 1 и 2, PCLK1 = 36 МГц, энкодер PEC11R-4220F-S0024, внешняя подтяжка 10к на 3.3. Случайно установил PSC, дернул из старого проекта инициализацию, рассчетное CK_INT вышло около 2000 КГц. В итоге энкодер работает только до тех пор, пока не перейду границу ARR или 0. Затем CNT останавливается на последнем значении либо показывает белиберду. А вот если установить PSC в 0, то все отлично работает. И это странно, т.к. по сути таймер в slave режиме с тактированием от энкодера (входы 1 и 2). В errata упоминаний не нашел. Фильтры ICxF тактируются от CK_INT, либо, если настроить делитель CKD в регистре CR1, то можно еще понизить частоту fDTS в 2 и 4 раза, относительно входной. И выходит, что максимальную длительность антидебезга можно настроить при 72 МГц тактовой :1/(36 000 000(PCLK1) /(4(CKD)*32*8(IC1F = 1111))) = 28мкс? Какой смысл такого антидребезга, дребезг на 2-3 порядка дольше длится. По схеме Fig.100, RM0008, page 362, на вход Trigger контроллера, поступают сигналы TI1FP1, TI1FP2 до мультиплексора ICx, однако при настройке регистров CCMRx, мы указываем куда подавать сигналы после входного фильтра (биты CCxS). Не совсем понятно, зачем это делать, если по схеме мы сигналы берем прямо с выхода входного фильтра, а что там дальше нас особо не волнует. RM0008, page 386 явно говорит, что надо устанавливать биты CCxS (причем с опечаткой, выделил красным), однако и без этого работает. Кто детально разбирался, укажите где я неправ или ошибаюсь. Иначе придется опрашивать энкодер по старинке, с прерываниями со своим, адекватным антидребезгом. Толку от такого аппаратного нет.
0
|
|
| 22.02.2017, 12:16 | |
|
Помогаю со студенческими работами здесь
25
Прерывания звука через Bluetooth устройства Рисование линий через прерывания в видеорежиме
ATtiny 2313. Бегущие огни через прерывания Оценка быстродействия через функцию прерывания типа 21 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|