Энкодер

Пользовательские блоки расширяющие базовый функуионал программы по работе с различными датчиками и энкодерами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Еще одна версия энкодера.
На 2ух прерываниях, но не быстрый.
С изменяемым приращением (быстрое вращение прибавляет по 10).
Как поведет себя на других - не знаю (328, stm, rp2040 работает).
Безымянный.png
[spoiler]_set - при подаче "1" значение со входа _inst предустановится на выходе _ou
_inst - число с этого входа при подаче "1" на _set предустановится на выходе _ou
_res - при подаче "1" значение на выходе _ou обнулится

_ou - чило на выходе будет менятся в большую или меньшую сторону при вращении энкодера
u_p - "1" на один цикл на каждый шаг при увеличении
d_n - "1" на один цикл на каждый шаг при уменьшении
_rotat - "1" на один цикл на каждый шаг при вращении в любую сторону[/spoiler]
энкодер_с_приращением_v2_(Code_-_Basic).ubi
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Ingwar 10 мар 2023, 19:45, всего редактировалось 3 раза.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Abay1
Рядовой
Сообщения: 31
Зарегистрирован: 01 мар 2022, 08:03
Имя: Александр

Энкодер

Сообщение Abay1 »

Ingwar спасибо!
Вечером "крутну на быстродействие", вроди б "летать" должен БП на прерываниях!

[hide]Днем тепло - огород в выходной зовет к себе :D [/hide]
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Abay1 писал(а): 05 мар 2023, 09:58 вроди б "летать" должен БП на прерываниях!
Тут "крылья подрезаны" в угоду универсальности - используется digitalRead...:smile44:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Энкодер

Сообщение Dryundel »

Ingwar писал(а): 05 мар 2023, 12:53 Тут "крылья подрезаны" в угоду универсальности - используется digitalRead...
Есть простое решение для AVR.
Более быстрые контроллеры справятся и с digitalRead.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Dryundel писал(а): 05 мар 2023, 13:09 Более быстрые контроллеры справятся и с digitalRead
Так то если в ядрах есть поддержка "быстрых" пинов, блок можно подредактировать и получить максимальное быстродействие.
Универсальность никогда не была "бесплатной" ))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Энкодер

Сообщение Dryundel »

Поддержка быстрых пинов не в ядрах, а в регистра.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Dryundel писал(а): 05 мар 2023, 13:33 Поддержка быстрых пинов не в ядрах, а в регистра.
Я про это
https://github.com/MCUdude/MegaCoreX?ys ... 45#fast-io
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Энкодер

Сообщение Dryundel »

А по поводу "бесплатноси", так это маленький кусочек кода, большую часть которого компилятор вырежет если не используется.

Отправлено спустя 1 минуту 15 секунд:
Dryundel писал(а): 05 мар 2023, 13:37Я про это
И я про него. :)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Dryundel писал(а): 05 мар 2023, 13:37 А по поводу "бесплатно и", так это маленький кусочек кода, большую часть которого компилятор вырежет если не используется.
Когда у меня возникнет желание и накопятся знания, я попробую сколхозить библиотеку, учитывающую все камни (но это не точно).
А пока у меня не получилось даже добавить другой камень в Ваш вариант энкодера.
Сначала я искал пару часов как и где описывается наименование камня для добавления их в #elif defined, нашел, добавил, описал, но не "взлетело" )))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Энкодер

Сообщение Dryundel »

Ingwar писал(а): 05 мар 2023, 13:45 Сначала я искал пару часов как и где описывается наименование камня для добавления их в #elif defined, нашел, добавил, описал, но не "взлетело" )))
Не там искали. :)
Это находится в библиотеке.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Dryundel писал(а): 05 мар 2023, 13:57 Это находится в библиотеке.
Не верно поняли.
В файле direct_pin_read.h (и в другом) описываются привязки к поддерживаемым камням.
Так вот чтобы добавить привязку к другому, неописанному ранее в этом/их файле камню, нужно указать его имя (типо "__SAMD51__").
Так вот это название и оказалось для меня непросто найти (хотел добавить stm32f103cb).
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Энкодер

Сообщение ecoins »

Ingwar писал(а): 05 мар 2023, 13:45 Когда у меня возникнет желание и накопятся знания, я попробую сколхозить библиотеку, учитывающую все камни (но это не точно).
По теме написал здесь viewtopic.php?f=247&t=8064&p=121908#p121873
Аватара пользователя
Dryundel
Полковник
Сообщения: 2406
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 15 раз

Энкодер

Сообщение Dryundel »

ecoins писал(а): 05 мар 2023, 15:08 По теме написал здесь viewtopic.php?f=247&t=8064&p=121908#p121873
Извините, не увидел по теме. Апрельские тезисы какие то. Ничего конкретного по ДАННОЙ теме нет вообще.
Abay1
Рядовой
Сообщения: 31
Зарегистрирован: 01 мар 2022, 08:03
Имя: Александр

Энкодер

Сообщение Abay1 »

Dryundel писал(а): 05 мар 2023, 15:14 Извините, не увидел
..........

[spoiler]https://youtu.be/YG4mu67dSgI[/spoiler]
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

ecoins писал(а): 05 мар 2023, 15:08 По теме написал здесь viewtopic.php?f=247&t=8064&p=121908#p121873
Это замечательно (про таймера), но жаль, что пока не мой уровень))

З.Ы. Правильное наименование используемого камня находится в строках выводимых IDE во время компиляции.
Например STM32F103CB "называется" STM32F103xB
Находится тут
-ID:\\Portable_FLProg_8-0-2_Win64\\ideV8\\portable\\packages\\STMicroelectronics\\hardware\\stm32\\2.4.0\\system/Middlewares/OpenAMP/virtual_driver" -w -x c++ -E -CC -DSTM32F1xx -DARDUINO=10819 -DARDUINO_GENERIC_F103CBTX -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"GENERIC_F103CBTX\"" "-DVARIANT_H=\"variant_generic.h\"" -DSTM32F103xB -DHAL_UART_MODULE_ENABLED "-ID:\\Portable_FLProg_8-0-2_Win64\\ideV8\\portable\\packages\\STMicroelectronics\\tools\\CMSIS\\5.7.0/CMSIS/Core/Include/"
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
ecoins
Полковник
Сообщения: 3999
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 136 раз
Поблагодарили: 149 раз

Энкодер

Сообщение ecoins »

Ingwar писал(а): 05 мар 2023, 15:47 Это замечательно (про таймера), но жаль, что пока не мой уровень))
Есть ощущение, что в обозримое время вызов по таймерам будет реализован. Наверное удастся договориться с разработчиком, что для этого будет предусмотрен отдельный тип плат. По уровню - что увидел у Вас для меня говорит и об уровни, и об потенциале. Работа с таймерами пожалуй существенно проще.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Дело было не в бобине, программист Ingwar сидел в кабине...
Отредактировал первый пост. Сорян тем, кто скачал для других камней.
Это к вопросу
ecoins писал(а): 05 мар 2023, 16:34 По уровню - что увидел у Вас для меня говорит и об уровни, и об потенциале.
))))
Похоже использование части кода из примера под STM стало роковым.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Добавил функцию ускоренного счета при быстром повороте - прибавляет/убавляет десятками.
Реакция настраивается в параметрах - время между прерываниями в микросекундах.
Проверено на STM и RP2040 (PICO).
Перезалил в шапке.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Энкодер

Сообщение Ingwar »

Обновил блок в шапке.
Теперь работает и с AVR.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

Энкодер

Сообщение aidar_i »

Сделал для себя блок энкодера на библиотеке STM32encoder, выложу сюда, чтобы не создавать тему.
Кнопка встроена в блок , имеет 2 выхода : длинное и короткое нажатие.
Библиотека встроена в блок. Проверена в железе, читайте описание блока. Обязательно припаяйте конденсаторы 100нф к выводам энкодера, если не стоят штатно.
Энкодер STM32.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить

Вернуться в «Датчики и энкодеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей