Страница 1 из 2

Счетчик Меги под свою задачу.

Добавлено: Вс май 05, 2024 17:49:08
Влад56
Внутренние счетчики Меги 2560 которых аж целых 5 задействованы для реализации различных команд IDE ардуино (millis();digitalWrite(); ) и т.п. Вопрос вот в чем.
Есть ли в самой среде ардуино возможности задействовать один из этих счетчиков для счета внешних импульсов в десятичную переменную? Или для этого нужно ваять что то на Си+ например, и загонять на Мегу через программатор? А может есть уже готовая библиотека для этого?

Re: Счетчик Меги под свою задачу.

Добавлено: Вс май 05, 2024 18:05:50
veso74
Не очень понятно, что нужно. Дайте подробности.
Все доступно из среды, а также для запись скомпилированного кода из Arduino IDE в МК.

Re: Счетчик Меги под свою задачу.

Добавлено: Вс май 05, 2024 18:31:55
Влад56
[uquote="veso74",url="/forum/viewtopic.php?p=4576614#p4576614"]Не очень понятно, что нужно. Дайте подробности.[/uquote]
Считать импульсы с энкодера, подключая его на один из пинов Меги и используя один из штатных таймеров/счетчиков микропроцессора. Ваять для этого скетч или встраивать код для подсчета импульсов в уже готовую программу не желательно.
Ну то есть с регистров внутреннего счетчика получить переменную равную количеству поступивших на ногу импульсов в заданный момент времени.

Re: Счетчик Меги под свою задачу.

Добавлено: Вс май 05, 2024 20:09:14
BOB51
Для функций "референса" IDE используются только Т0, Т1 и Т2.
Остальное надо самостоятельно активировать/использовать.
То же и Т1 -Т2 касается, если не использовать основанные на их применении функции референса IDE.
Программную поддержку самостоятельного применения таймеров или берем из соответствующих библиотек (в тырнете) или пишем самостоятельно.
8)

Re: Счетчик Меги под свою задачу.

Добавлено: Вс май 05, 2024 22:50:45
veso74
Отчеты о времени не нужны для подсчета импульсов от энкодера. Есть внешнее прерывание, есть прерывание при изменении состояния пина, есть polling в loop и т. д.

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 08:39:23
Влад56
[uquote="BOB51",url="/forum/viewtopic.php?p=4576678#p4576678"]Для функций "референса" IDE используются только Т0, Т1 и Т2.
Остальное надо самостоятельно активировать/использовать.
То же и Т1 -Т2 касается, если не использовать основанные на их применении функции референса IDE.
Программную поддержку самостоятельного применения таймеров или берем из соответствующих библиотек (в тырнете) или пишем самостоятельно.
8)[/uquote]
А какие команды IDE можно использовать для активации названных таймеров? Если они есть там конечно.
В "тырнете" только для управления ШИМ волной библиотеку вижу. Похоже для моей задачи она не подходит.

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 11:32:24
BOB51
В ардуино IDE относительно АВР микроконтроллеров используется Си и/или С++ (GCC).
Вот собственно на нём и пишем необходимое дополнение.
8)

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 13:38:32
veso74
СпойлерOC0A PB7 Pin 13 (Yes, same pin as OC1C)
OC0B PG5 Pin 4
OC1A PB5 Pin 11
OC1B PB6 Pin 12
OC1C PB7 Pin 13 (Yes, same pin as OC0A)
OC2A PB4 Pin 10
OC2B PH6 Pin 9
OC3A PE3 Pin 5
OC3B PE4 Pin 2
OC3C PE5 Pin 3
OC4A PH3 Pin 6
OC4B PH4 Pin 7
OC4C PH5 Pin 8
OC5A PL3 Pin 46
OC5B PL4 Pin 45
OC5C PL5 Pin 44
https://github.com/RoboUlbricht/arduino ... atmega2560
Используя каждый из таймеров в blink. Следуйте идее и используйте их для выбранного приложения.

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 15:05:35
Влад56
[uquote="BOB51",url="/forum/viewtopic.php?p=4576870#p4576870"]В ардуино IDE относительно АВР микроконтроллеров используется Си и/или С++ (GCC).
Вот собственно на нём и пишем необходимое дополнение.
8)[/uquote]
Так а сама IDE способна Си либо Си++ компилировать? Возможно потом через USB залить скомпилированный файл?

Добавлено after 8 minutes 23 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4576938#p4576938"]
СпойлерOC0A PB7 Pin 13 (Yes, same pin as OC1C)
OC0B PG5 Pin 4
OC1A PB5 Pin 11
OC1B PB6 Pin 12
OC1C PB7 Pin 13 (Yes, same pin as OC0A)
OC2A PB4 Pin 10
OC2B PH6 Pin 9
OC3A PE3 Pin 5
OC3B PE4 Pin 2
OC3C PE5 Pin 3
OC4A PH3 Pin 6
OC4B PH4 Pin 7
OC4C PH5 Pin 8
OC5A PL3 Pin 46
OC5B PL4 Pin 45
OC5C PL5 Pin 44
https://github.com/RoboUlbricht/arduino ... atmega2560
Используя каждый из таймеров в blink. Следуйте идее и используйте их для выбранного приложения.[/uquote]
:roll: Без знания аппаратной части мне мало о чем говорит.

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 17:59:23
BOB51
[uquote="Влад56",url="/forum/viewtopic.php?p=4576962#p4576962"]...
Так а сама IDE способна Си либо Си++ компилировать? Возможно потом через USB залить скомпилированный файл?...[/uquote]
Так она ж для того и применяется...
:shock:

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 21:49:28
Morroc
[uquote="Влад56",url="/forum/viewtopic.php?p=4576610#p4576610"]Внутренние счетчики Меги 2560 которых аж целых 5 задействованы для реализации различных команд IDE ардуино (millis();digitalWrite(); ) и т.п.[/uquote]
Если не использовать tone и шим, то аж целый один реально задействован.

[uquote="Влад56",url="/forum/viewtopic.php?p=4576610#p4576610"]Вопрос вот в чем.
Есть ли в самой среде ардуино возможности задействовать один из этих счетчиков для счета внешних импульсов в десятичную переменную? Или для этого нужно ваять что то на Си+ например, и загонять на Мегу через программатор? А может есть уже готовая библиотека для этого?[/uquote]

Что то типа этого https://arduino.ru/forum/pesochnitsa-ra ... chnik-na-v

Re: Счетчик Меги под свою задачу.

Добавлено: Пн май 06, 2024 22:37:44
AVK
Ардуино IDE дает полный доступ ко всем регистрам контроллера. Ибо основано там все на GCC компиляторе.
Открываем "Микроконтроллеры AVR семейства MEGA" Евстифеева, разбираемся как работает нужный нам таймер и через какие регистры и прерывания, пишем все что придет в голову и радуемся.
Таймеры устроены крайне просто.

Re: Счетчик Меги под свою задачу.

Добавлено: Вт май 07, 2024 02:13:02
BOB51
Лучше таки оригинальный даташит на ту мегу 2560 перечитать.
8)

Re: Счетчик Меги под свою задачу.

Добавлено: Вт май 07, 2024 10:36:11
Morroc
Лучше, но долго )

Добавлено after 2 minutes 10 seconds:
[uquote="Влад56",url="/forum/viewtopic.php?p=4576628#p4576628"]Ну то есть с регистров внутреннего счетчика получить переменную равную количеству поступивших на ногу импульсов в заданный момент времени.[/uquote]
У вас энкодер в одну сторону только крутится ? С механических стандартных энкодеров очень нежелательно так считать - ложные срабатывания будут, стандартная обработка двух каналов часть таких игнорит. Ног на 2560 не хватает что ли ? oO

Re: Счетчик Меги под свою задачу.

Добавлено: Чт май 09, 2024 09:15:49
Влад56
[uquote="Morroc",url="/forum/viewtopic.php?p=4577231#p4577231"]Лучше, но долго )

Добавлено after 2 minutes 10 seconds:
[uquote="Влад56",url="/forum/viewtopic.php?p=4576628#p4576628"]Ну то есть с регистров внутреннего счетчика получить переменную равную количеству поступивших на ногу импульсов в заданный момент времени.[/uquote]
У вас энкодер в одну сторону только крутится ? С механических стандартных энкодеров очень нежелательно так считать - ложные срабатывания будут, стандартная обработка двух каналов часть таких игнорит. Ног на 2560 не хватает что ли ? oO[/uquote]
4 шим сигнала, 2 из которых формирую одновременно, 2 других в это время стоят, хоть и подключены к ногам. Плюс одна серва работает одновременно с парой шим. Энкодер крутиться на движке в обе стороны, и сбрасывается в ноль с очередным реверсом, поэтому разницы для счета нет. А вот ложные срабатывания да были, пока конденсатор не запараллелил на вход и стало на порядок лучше. Думаю потому как фронт импульса слегка сгладил. Ног то хватает. Проблема в том, что идет коррекция скорости двигателя с интервалом по времени и есть опасения пропустить её в момент прерывания.

Добавлено after 6 minutes 21 second:
[uquote="BOB51",url="/forum/viewtopic.php?p=4577154#p4577154"]Лучше таки оригинальный даташит на ту мегу 2560 перечитать.
8)[/uquote]
Думаю да, придется аппаратную часть изучать. А одновременно и в Си++ углубиться.

Re: Счетчик Меги под свою задачу.

Добавлено: Чт май 09, 2024 12:11:00
BOB51
Читайте, может и пригодится:
http://www.gaw.ru/html.cgi/txt/doc/micr ... /index.htm
https://www.aipcba.ru/datasheet/program ... 55125.html
Однако иногда надо сначала и над схемками устройства и его вариантами подумать...
:wink:

Re: Счетчик Меги под свою задачу.

Добавлено: Сб май 11, 2024 19:44:34
Morroc
[uquote="Влад56",url="/forum/viewtopic.php?p=4577845#p4577845"]Проблема в том, что идет коррекция скорости двигателя с интервалом по времени и есть опасения пропустить её в момент прерывания.[/uquote]
Если другие прерывания отрабатывают быстрее интервалов между импульсами и сам энкодер тоже прерывания вызывает, то не должно бы пропустить.

Re: Счетчик Меги под свою задачу.

Добавлено: Сб май 11, 2024 20:19:30
Влад56
[uquote="Morroc",url="/forum/viewtopic.php?p=4578642#p4578642"][uquote="Влад56",url="/forum/viewtopic.php?p=4577845#p4577845"]Проблема в том, что идет коррекция скорости двигателя с интервалом по времени и есть опасения пропустить её в момент прерывания.[/uquote]
Если другие прерывания отрабатывают быстрее интервалов между импульсами и сам энкодер тоже прерывания вызывает, то не должно бы пропустить.[/uquote]
Наверно не точно выразил мысль.
Прерывания по энкодеру могут совпасть с моментом снятия показаний счетчика. Оно снятие и коррекция идут в строго определенный момент 5 раз в секунду плюс минус 5 мсек с интервалом 200 мсек. Что само по себе интересно, срабатывает условие почему то 201, 401, 601 .. и т.д., несмотря на рамки +- 5 мсек.

Добавлено after 16 minutes 20 seconds:
[uquote="BOB51",url="/forum/viewtopic.php?p=4577910#p4577910"]Читайте, может и пригодится:
http://www.gaw.ru/html.cgi/txt/doc/micr ... /index.htm
https://www.aipcba.ru/datasheet/program ... 55125.html
Однако иногда надо сначала и над схемками устройства и его вариантами подумать...
:wink:[/uquote]
Схемка 10 разрядного счетчика и была спаяна на макетке из 155ТМ2, благо было в запасе еще с советских времен. А снимается в переменную через bitWrite() по параллельному каналу из 10 штырьков. На один такой счетчик надо подключить два попеременно работающих энкодера. Проблемка в том что работает пока боле-менее один. Как только вторую линию подключаешь, на счетчике начинается свистопляска. Думаю то же будет если внутренний таймер процессора задействовать. Попробовать диоды в обе линии воткнуть?

Re: Счетчик Меги под свою задачу.

Добавлено: Вс май 12, 2024 10:18:12
BOB51
Когда-то делал "на поиграться" программный обработчик энкодера на малолапом варианте АВР/ПИК - МК только для обработки и получения счетного импульса и флага направления. Или две входных линии МК на энкодер при программном опросе этих линий. (Тинька 13я или пик12F508 да демо-тест на адуринко-нанке).
Сорбственно сам алгоритм:
https://img.radiokot.ru/files/20529/3g35mrq2nk.GIF
8)

Re: Счетчик Меги под свою задачу.

Добавлено: Вс май 12, 2024 13:31:00
Morroc
[uquote="Влад56",url="/forum/viewtopic.php?p=4578643#p4578643"]Прерывания по энкодеру могут совпасть с моментом снятия показаний счетчика.[/uquote]
Навскидку не вижу в этом ничего страшного.