Страница 1 из 2
Энкодер
Добавлено: 04 мар 2023, 22:49
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
Энкодер
Добавлено: 05 мар 2023, 09:58
Abay1
Ingwar спасибо!
Вечером "крутну на быстродействие", вроди б "летать" должен БП на прерываниях!
[hide]Днем тепло - огород в выходной зовет к себе

[/hide]
Энкодер
Добавлено: 05 мар 2023, 12:53
Ingwar
Abay1 писал(а): 05 мар 2023, 09:58
вроди б "летать" должен БП на прерываниях!
Тут "крылья подрезаны" в угоду универсальности - используется
digitalRead...

Энкодер
Добавлено: 05 мар 2023, 13:09
Dryundel
Ingwar писал(а): 05 мар 2023, 12:53
Тут "крылья подрезаны" в угоду универсальности - используется digitalRead...
Есть
простое решение для AVR.
Более быстрые контроллеры справятся и с digitalRead.
Энкодер
Добавлено: 05 мар 2023, 13:24
Ingwar
Dryundel писал(а): 05 мар 2023, 13:09
Более быстрые контроллеры справятся и с digitalRead
Так то если в ядрах есть поддержка "быстрых" пинов, блок можно подредактировать и получить максимальное быстродействие.
Универсальность никогда не была "бесплатной" ))
Энкодер
Добавлено: 05 мар 2023, 13:33
Dryundel
Поддержка быстрых пинов не в ядрах, а в регистра.
Энкодер
Добавлено: 05 мар 2023, 13:37
Ingwar
Dryundel писал(а): 05 мар 2023, 13:33
Поддержка быстрых пинов не в ядрах, а в регистра.
Я про это
https://github.com/MCUdude/MegaCoreX?ys ... 45#fast-io
Энкодер
Добавлено: 05 мар 2023, 13:38
Dryundel
А по поводу "бесплатноси", так это маленький кусочек кода, большую часть которого компилятор вырежет если не используется.
Отправлено спустя 1 минуту 15 секунд:
Dryundel писал(а): 05 мар 2023, 13:37Я про это
И я про него.

Энкодер
Добавлено: 05 мар 2023, 13:45
Ingwar
Dryundel писал(а): 05 мар 2023, 13:37
А по поводу "бесплатно и", так это маленький кусочек кода, большую часть которого компилятор вырежет если не используется.
Когда у меня возникнет желание и накопятся знания, я попробую сколхозить библиотеку, учитывающую все камни (но это не точно).
А пока у меня не получилось даже добавить другой камень в Ваш вариант энкодера.
Сначала я искал пару часов как и где описывается наименование камня для добавления их в
#elif defined, нашел, добавил, описал, но не "взлетело" )))
Энкодер
Добавлено: 05 мар 2023, 13:57
Dryundel
Ingwar писал(а): 05 мар 2023, 13:45
Сначала я искал пару часов как и где описывается наименование камня для добавления их в #elif defined, нашел, добавил, описал, но не "взлетело" )))
Не там искали.

Это находится в библиотеке.
Энкодер
Добавлено: 05 мар 2023, 14:12
Ingwar
Dryundel писал(а): 05 мар 2023, 13:57
Это находится в библиотеке.
Не верно поняли.
В файле direct_pin_read.h (и в другом) описываются привязки к поддерживаемым камням.
Так вот чтобы добавить привязку к другому, неописанному ранее в этом/их файле камню, нужно указать его имя (типо "__SAMD51__").
Так вот это название и оказалось для меня непросто найти (хотел добавить stm32f103cb).
Энкодер
Добавлено: 05 мар 2023, 15:08
ecoins
Ingwar писал(а): 05 мар 2023, 13:45
Когда у меня возникнет желание и накопятся знания, я попробую сколхозить библиотеку, учитывающую все камни (но это не точно).
По теме написал здесь
viewtopic.php?f=247&t=8064&p=121908#p121873
Энкодер
Добавлено: 05 мар 2023, 15:14
Dryundel
ecoins писал(а): 05 мар 2023, 15:08
По теме написал здесь viewtopic.php?f=247&t=8064&p=121908#p121873
Извините, не увидел по теме. Апрельские тезисы какие то. Ничего конкретного по ДАННОЙ теме нет вообще.
Энкодер
Добавлено: 05 мар 2023, 15:45
Abay1
Dryundel писал(а): 05 мар 2023, 15:14
Извините, не увидел
..........
[spoiler]
https://youtu.be/YG4mu67dSgI[/spoiler]
Энкодер
Добавлено: 05 мар 2023, 15:47
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\"" -D
STM32F103xB -DHAL_UART_MODULE_ENABLED "-ID:\\Portable_FLProg_8-0-2_Win64\\ideV8\\portable\\packages\\STMicroelectronics\\tools\\CMSIS\\5.7.0/CMSIS/Core/Include/"
Энкодер
Добавлено: 05 мар 2023, 16:34
ecoins
Ingwar писал(а): 05 мар 2023, 15:47
Это замечательно (про таймера), но жаль, что пока не мой уровень))
Есть ощущение, что в обозримое время вызов по таймерам будет реализован. Наверное удастся договориться с разработчиком, что для этого будет предусмотрен отдельный тип плат. По уровню - что увидел у Вас для меня говорит и об уровни, и об потенциале. Работа с таймерами пожалуй существенно проще.
Энкодер
Добавлено: 05 мар 2023, 22:57
Ingwar
Дело было не в бобине, программист Ingwar сидел в кабине...
Отредактировал первый пост. Сорян тем, кто скачал для других камней.
Это к вопросу
ecoins писал(а): 05 мар 2023, 16:34
По уровню - что увидел у Вас для меня говорит и об уровни, и об потенциале.
))))
Похоже использование части кода из примера под STM стало роковым.
Энкодер
Добавлено: 08 мар 2023, 21:20
Ingwar
Добавил функцию ускоренного счета при быстром повороте - прибавляет/убавляет десятками.
Реакция настраивается в параметрах - время между прерываниями в микросекундах.
Проверено на STM и RP2040 (PICO).
Перезалил в шапке.
Энкодер
Добавлено: 10 мар 2023, 19:46
Ingwar
Обновил блок в шапке.
Теперь работает и с AVR.
Энкодер
Добавлено: 02 апр 2024, 14:05
aidar_i
Сделал для себя блок энкодера на библиотеке STM32encoder, выложу сюда, чтобы не создавать тему.
Кнопка встроена в блок , имеет 2 выхода : длинное и короткое нажатие.
Библиотека встроена в блок. Проверена в железе, читайте описание блока. Обязательно припаяйте конденсаторы 100нф к выводам энкодера, если не стоят штатно.
Энкодер STM32.flp