Набор блоков ЭНКОДЕР
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Набор блоков ЭНКОДЕР
ваш блок Энкодер импульсный v1.1 тоже не сохраняет настройки в версии 7,1,1
выбираю тики 4 и сохраняю потом снова захожу в него а там опять 1 стоит
помогает только если в версии 6,3,1 выставить значения в блоке и скопировать его в версию 7,1,1
выбираю тики 4 и сохраняю потом снова захожу в него а там опять 1 стоит
помогает только если в версии 6,3,1 выставить значения в блоке и скопировать его в версию 7,1,1
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Нет, я так не считаю. Время исполнения основного цикла остается прежним.GDAN7777 писал(а): 28 ноя 2020, 18:28 Не так.Если заменить блок энкодера импульсного на блок энкодера считающего с управлением по счетчику,все становится на свои места.Меню пролистывается просто мгновенно и не важно,какое в нем количество пунктов.Или вы считаете,что при таком способе управления время исполнения основного цикла становится в разы(если не в десятки раз) меньше?Дело либо в ПБ,либо в библиотеке.
Не совсем понял что означает: "на блок энкодера считающего с управлением по счетчику " Ну да ладно.
Объясняю популярно.
Суть в том, что оба этих энкодера построены на одной и той же библиотеке, равной которой мне пока найти не удалось.
Так вот благодаря работе на прерываниях счет импульсов происходит независимо от того, какой длительности у вас цикл. Соответственно в любой момент вы можете получить цифру соответствующую количеству импульсов. Это и происходит в случае со считающим блоком.
Что же касается импульсного, то он тоже ориентируется на эту цифру. Однако выдать импульс блок может только один за цикл. Точно так же как и например штатный блок генератора. Какую бы частоту (длительность импульса) вы ему ни задали, выдавать импульсы генератор не сможет чаще чем один импульс за цикл. Вот и здесь точно такая же картина. Физические сигналы с энкодера посчитаны, цифра уже есть, а вот импульсы, ну никак не больше одного за цикл. Таким образом и происходит то, что вы визуально наблюдаете - импульсный счетчик отрабатывает все посчитанные сигналы с энкодера, но длительность вашего цикла не позволяет это делать быстрей.
Даже если я заставлю блок выдавать два-три-пять тиков за цикл, что теоретически возможно, ваше меню, счетчик, или что там еще не смогут их воспринять, т. к. и на них действует то же самое правило. Они принимают на свои входы 0 или 1 не чаще одного раза за цикл. Соответственно все "лишние" тики они просто пропустят.
Очень надеюсь на то, что смог донести до вас суть проблемы, с которой вы столкнулись.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Набор блоков ЭНКОДЕР
Вам надо хоть немного почитать, что такое прерывание и как они работают.GDAN7777 писал(а): 29 ноя 2020, 08:47 Заменяем энкодер на кнопки,висящие на тех же самых пинах с прерываниями.Все.Тормоза пропадают.
Чтобы использовать прерывание нужен код работающий с ними.
В данном примере нет ни какой разницы на какой вход вы поставите кнопку, т.к она не использует прерывания.
Win10-64, FLProg (portable)
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Это комментировать я пожалуй не стану.GDAN7777 писал(а): 29 ноя 2020, 09:58 Я отлично знаю,что такое прерывания,так как писал ранее на asm.Плохо,что я дуб в СИ,поэтому не могу посмотреть в код библиотеки и сообразить,как она работает.

Что Вы хотели показать на этих двух роликах я не совсем понял.
Что касается:
Как Вам писали выше, если просто подключить кнопки на пины которые могут поддерживать прерывания, они не будут работать по прерываниям, а будут кнопками (пинами) которые опрашиваются в цикле.GDAN7777 писал(а): 29 ноя 2020, 08:47 Хорошо.Немного по другому.Заменяем энкодер на кнопки,висящие на тех же самых пинах с прерываниями.Все.Тормоза пропадают.
Вероятно Вас смущает что когда Вы используете энкодер, при его повороте на один физический щелчок, переключение происходит медленнее чем с кнопки.
Это объясняется тем, что за один физический щелчок энкодера происходит 4 переключения состояния. Т.е. грубо говоря если провести аналогию с кнопкой, то происходит 4 нажатия. Для того чтобы за один физический щелчок блок энкодера выдавал 1клик или прибавлял единицу к значению, в нем (в блоке) есть делитеь и соответствующая настройка этого делителя.
Теперь что же происходит:
Вы поворачиваете энкодер на один щелчок и в память записывается значение 4. Теперь что бы блок энкодера выдал один тик надо чтобы его внутренний счетчик досчитал до четырех, а это четыре цикла вашей программы. Соответственно тик на выходе блока энкодера Вы будете получать один раз в четыре цикла. Кроме этого импульс (высокий уровень) на выходе блока длится один цикл и на следующем цикле обнуляется. Но мы пока опустим этот момент чтобы не Вас запутывать.
Так вот для того чтобы ваше меню переключилось на 4 строчки надо что бы прошло 16 циклов. Ваша программа должна выполнится 16 раз, а это всё это время. Кроме этого плюс дополнительное время которое уходит на прерывания для подсчета изменения состояния пинов задействованных в прерываниях, отвечающих за ваш энкодер.
Именно по причине того что цикл вашей программы довольно длинный, условно говоря, кнопка может считываться каждый цикл. Точней в один цикл может считаться "1" на кнопке, а в следующий "0". Эти два состояния и можно зачесть как один клик. И в случае с кнопкой нет прерываний и время на их обработку тоже не прибавляется, хотя оно и незначительное по сравнению с длительностью цикла вашей программы.
Ну если и после этого картина не стала ясней, то я уж и не знаю как объяснять. Вероятно должно пройти какое то время для того чтобы все это у вас устаканилось и осозналось.
Набор блоков ЭНКОДЕР
.
Последний раз редактировалось Nikan 24 мар 2023, 02:24, всего редактировалось 1 раз.
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Не вариант в этой темеNikan писал(а): 29 ноя 2020, 14:14 а по хорошему - вызов обработчика меню надо запихнуть в прерывание

Будем исходить из того, что время цикла ну никак нельзя уменьшить.GDAN7777 писал(а): 29 ноя 2020, 12:59 Что нужно сделать чтобы не тормозило меню,по вашему?Пролистывание,вернее.
Если речь идет только о пролистывании меню, то Вы уже сами практически ответили на свой вопрос в посте #91 (со скринами).
Надеюсь мне удалось донести разницу в скорости работы считающего и тикового блоков энкодера.
Попробуйте использовать входы меню для прямого перехода в пункт меню. Возможно это сработает в вашем случае.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Набор блоков ЭНКОДЕР
.
Последний раз редактировалось Nikan 24 мар 2023, 02:24, всего редактировалось 1 раз.
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Код библиотеки здесь не при чем.GDAN7777 писал(а): 29 ноя 2020, 16:40 Пришел сегодня ESP32.Как по вашему,проблема на нем останется или нивелируется?За счет частоты.Или все быстродействие упрется в код библиотеки?
Не забудьте поменять библиотеку на свежую. Та которая вшита в блок, ESP еще не поддерживает.
Удалите ее из блока, прикрепите новую и удалите старую из вашего IDE.
https://github.com/PaulStoffregen/Encoder
И помните у ESP, особенно у 8266 в приоритете WiFi. Так что глюков, особенно по первости словить можете много.
Набор блоков ЭНКОДЕР
.
Последний раз редактировалось Nikan 24 мар 2023, 02:23, всего редактировалось 1 раз.
Набор блоков ЭНКОДЕР
Похоже, два блока энкодера под один энкодер, в одном проекте не уживаются, даже если пины без прерываний
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Все работает.com писал(а): 07 дек 2020, 20:05 Похоже, два блока энкодера под один энкодер, в одном проекте не уживаются, даже если пины без прерываний
В первую очередь ищите ошибку у себя.
Будьте внимательней в проектах.
Вы сделали подтяжку кнопки!
Соответственно:
1. Надо замыкать кнопку на землю.
2. Надо инвертировать выход кнопки в проекте.
Набор блоков ЭНКОДЕР
Кнопку не инвертировал, да, верно замечено, но не помогает.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Реально?
А у меня ваш проект отлично работает.
Прям не знаю что и посоветовать.

Набор блоков ЭНКОДЕР
[ref]Dryundel[/ref], Возможно косяки в энкодере, не знаю. Придется искать другой путь.
P.S В моем варианте получается так, энкодером набираю цифру на первой строчке до 6, при переключении на вторую строчку, показания на второй строчке увеличивается тоже на 6. Тоесть, второй блок отсчитывает наравне с первым и при переключении выводит эти показания. Хотя блок энкодера не считающий?! Странно.
P.S В моем варианте получается так, энкодером набираю цифру на первой строчке до 6, при переключении на вторую строчку, показания на второй строчке увеличивается тоже на 6. Тоесть, второй блок отсчитывает наравне с первым и при переключении выводит эти показания. Хотя блок энкодера не считающий?! Странно.
Последний раз редактировалось com 07 дек 2020, 22:16, всего редактировалось 1 раз.
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Нет. Перепроверил. Действительно есть глюк. Посмотрим.com писал(а): 07 дек 2020, 22:08 Dryundel, Возможно косяки в энкодере, не знаю. Придется искать другой путь
- ElectronicRTC
- Рядовой
- Сообщения: 49
- Зарегистрирован: 09 июл 2019, 06:13
- Откуда: Москва
- Имя: Евгений
Набор блоков ЭНКОДЕР
[ref]Dryundel[/ref], подскажите ваши блоки можно скорректировать под работу с инкрементальным энкодером типа этого: https://aliexpress.ru/item/400112214010 ... web201603_
полагаю что не только мне интересен
полагаю что не только мне интересен
Промышленная электроника и оборудование
- Dryundel
- Полковник
- Сообщения: 2474
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 42 раза
Набор блоков ЭНКОДЕР
Зависит от частного случая. Пишите в личку ваш запрос.ElectronicRTC писал(а): 17 дек 2020, 05:01 [ref]Dryundel[/ref], подскажите ваши блоки можно скорректировать под работу с инкрементальным энкодером типа этого: https://aliexpress.ru/item/400112214010 ... web201603_
полагаю что не только мне интересен
Набор блоков ЭНКОДЕР
Понимаю, что нужно применить " ICACHE_RAM_ATTR ", но не знаю как. Недостаточно знаний... Пробовал в энкодере без использования библиотеки - работает,ESPшка перестала вешаться.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя