Умножитель частоты шагов на STM32

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение AndyBig »

UAVpilot писал(а):Нет, тут задачка посложней предвидится...
Еу значит условия этой задачки не были оглашены в этой теме. По крайней мере я не нашел ничего такого.
Может быть вкратце опишите ее?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Serg »

В самом начале шло обсуждение почти в верном направлении, я просто мысленно продолжил его до вариантов реализации. Ни он, ни алгоритм Степмастера не ложатся полностью на CPLD.
Озвучивать пока не хочу, интересно посмотреть какой тут вариант родится. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
AndyBig
Мастер
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Репутация: 1121
Откуда: юг России
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение AndyBig »

Алгоритм Степмастера я не знаю, но не могу представить что такого изощренного должен делать этот удвоитель, чтобы не лечь в FPGA (не CPLD) :)
В самом начале я обсуждения вообще не увидел, есть только начиная с конца второй страницы:
Mamont писал(а):Надо сделать автоопределение длительности первого импульса, определяется прогой, ее стартовой скоростью и ускорением. После включения питания (или длительного простоя без импульсов) длительность между первым и вторым делится надвое и принимается за базовую. Если она меньше чем находится в памяти, она корректируется. Больше - игнорируется

В работе, после первого импульса, который был после длительного простоя, выдается через базовое время этот импульс
И дальше в том же ключе :)
Даже эти предложения - Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4 #102 - с легкостью ложатся в FPGA.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Serg »

FPGA получается дороже чем даже stm32, а
MX_Master писал(а):Цель всей затеи - создать максимально бюджетный умножитель STEP/DIR
AndyBig писал(а):Даже эти предложения - Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4 #102 - с легкостью ложатся в FPGA.
Я ж не просто так написал
UAVpilot писал(а):обсуждение почти в верном направлении
:)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение MX_Master »

Озадачился эмулятором работы Кортекса М4 с целью визуально наблюдать работу умножителя. Искал, искал, и набрёл на официальном сайте на STM-STUDIO-STM32. Ничего общего с симуляцией нет, зато визуально показывает значения указанных переменных/регистров во время реальной работы МК. Считывает данные с помощью ST-LINK (JTAG или SWD). Адреса переменных вбиваем вручную или импортируем из бинарника, указываем лимиты и наблюдаем изменение с течением времени. К примеру, в код можно добавить отладочные переменные с текущими входными и выходными значения STEP/DIR для каждой оси. И затем наглядно изучать косяки умножителя.
2015-02-05-13_59_41-stm-studio-untitled_.png (2434 просмотра) <a class='original' href='./download/file.php?id=97454&mode=view' target=_blank>Загрузить оригинал (132.23 КБ)</a>
b48eed.jpg (2434 просмотра) <a class='original' href='./download/file.php?id=97455&mode=view' target=_blank>Загрузить оригинал (103.13 КБ)</a>
stmstudio001.jpg (2434 просмотра) <a class='original' href='./download/file.php?id=97456&mode=view' target=_blank>Загрузить оригинал (160.4 КБ)</a>
xstm-studio.jpg.pagespeed.ic.7FAdPd0ikJ.jpg (2434 просмотра) <a class='original' href='./download/file.php?id=97457&mode=view' target=_blank>Загрузить оригинал (44.51 КБ)</a>
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Serg »

Теперь наверно и сам понял, почему нет спроса на симулятор для Протеуса. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение selenur »

На 53 минуте демонстрация визуализации:
https://www.youtube.com/watch?v=_en0tY9EbA4
до этого пример того как в программе подготовиться к этому.
Недавно на вебинаре сам узнал о такой штуке. :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
u37
Новичок
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 »

MX_Master писал(а):Озадачился эмулятором работы Кортекса М4 с целью визуально наблюдать работу умножителя...Адреса переменных вбиваем вручную или импортируем из бинарника, указываем лимиты и наблюдаем изменение с течением времени.
Зачем так сложно? Тот-же KEIL замечательно строит графики, и вбивать "руками" ничего не надо.
Кстати, для отладочного вывода лучше использовать RTT (JLINK). Сам JLINK можно или сделать или перешить из STLink. Последнее официально.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Serg »

Чем именно лучше? :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение MX_Master »

Попробовал Кубик МХ..
  • Указал МК - STM32F407VETx.
  • Два пина на вход, два пина на выход.
  • Сгенерил код под SW4STM32.
Открываем полученный проект в SW4STM32 и видим, что нигде в заголовках не прописана семья нашего МК (STM32F407xx). Отсюда пучок ошибок при сборке. Просмотрел "многочисленные" настройки проекта в кубике - все на месте. Попробовал разные настройки выходного кода - тот же эффект. Или я что-то не понимаю, или автогенератор кода у кубика учитывает не все тонкости при выходе кода.
tmr
Новичок
Сообщения: 30
Зарегистрирован: 24 июн 2016, 23:09
Репутация: 2
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение tmr »

А чем закончилась разработка на ардуине? Вроде бы на осц.грамме уже импульсы рисовались, как вдруг про арм заговорили.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение MX_Master »

tmr писал(а):А чем закончилась разработка на ардуине? Вроде бы на осц.грамме уже импульсы рисовались, как вдруг про арм заговорили.
MX_Master писал(а):На дуньку2560 код на 4 оси уже готов и ждет приезда самой дуньки. А другой МК взят, т.к. в дуньке достигнут аппаратный потолок и добавить туда какие-то вспомогательные фильтры на вход/выход не выйдет.
До физического приезда ардуины в мои руки, есть время разобраться с МК помощней дабы улучшить ардуиновый вариант. Как только тесты на физической дуине дадут рабочий результат, выложу код в паблик для заброса тухлыми яйцами и помидорами (: А дальше видно будет куда и что улучшать. Аналогичная предыдущая тема (во главе с Михаилом) завершилась отдельным аппаратным устройством. Я в свою очередь кроме открытого кода ничего не планирую (отдаю честь авторам LCNC), но показывать сырой или нерабочий вариант было бы неправильно.

Под Кортекс М4 процесс с трудом, но пошел. Делаю пока по аналогии с ардуиновым вариантом. Но симуляторов для визуальной проверки кода без физического устройства пока не нашёл. Буду признателен, если кто-то что-то посоветует на эту тему. Сама макетка с М4 приедет только после нового года. Так что ждать придется в обоих случаях.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Serg »

MX_Master писал(а):Открываем полученный проект в SW4STM32 и видим, что нигде в заголовках не прописана семья нашего МК (STM32F407xx).
Надо в свойствах проекта в SW4STM32 указать МК.
В Кубе и в С семейства МК указываются немного по разному, разница в буквах после номера: для Куба важно количество ног, а для C объём и организация памяти и т.п., поэтому прямого наследия не будет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
u37
Новичок
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 »

В Keil есть симулятор процессора. В той же закладке, где выбирается JTAG, надо просто выбрать левое окно.
Для периферии пишутся скрипты. Никогда сам не делал, я любитель иголками по живому тестить. ))
u37
Новичок
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 »

Да, вот еще что ... судя по всему, вы хотите использовать внешние источники прерывания и обрабатывать всё в прерываниях. Я правильно понял?
В ARM (STM32) так не делают. В нём есть DMA и куча периферии. Входные сигналы можно считать таймерами, а импульсы генерировать или UART'ами с "пинателями" или другими таймерами. Процессор здесь делает только математику, а сигналы формируются автоматически. Поэтому и нет никакого смысла в особо мощном MCU. ))
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Serg »

u37 писал(а):Входные сигналы можно считать таймерами
В данной задаче входные сигналы не нужно считать, нужно реагировать на каждый импульс.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение MX_Master »

Весь наборчик в сборе, на след. неделе буду тестировать и исправлять косяки :hehehe:
Mega2560, STM32F4, ST-LINK (2093 просмотра) <a class='original' href='./download/file.php?id=99402&mode=view' target=_blank>Загрузить оригинал (210.21 КБ)</a>
Mega2560, STM32F4, ST-LINK
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение MX_Master »

Искал на таобао отдельные STM32F407VET6 на случай, если спалю МК во время работы )) и наткнулся на японские микрухи от Nippon Pulse Motor - NPM PCL6141 (13$), NPM PCD4541 (8$). Заточены чисто под генерацию STEP/DIR. С интерполяцией, ускорениями и прочими плюшками.

Кто-нибудь такое использовал в проектах? Или может видел в готовых контроллерах?
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение sidor094 »

u37 писал(а):Входные сигналы можно считать таймерами, а импульсы генерировать или UART'ами с "пинателями" или другими таймерами.
Несмотря на достаточно крутые таймеры ,уменя не получилось читать STEP/DIR.полностью аппаратно.Таймеры у STM32 двунаправленные.С интерфейсом энкодера всё в порядке.А вот менять направления счета STEP по сигналу DIR не получилось.Пришлось вводить прерывание по сигналу DIR .И уже внутри прерывания переключать направление счета таймера STEP.Если кто-то знает как это сделать полностью аппаратно .Подскажите.
Аватара пользователя
staltech
Почётный участник
Почётный участник
Сообщения: 544
Зарегистрирован: 01 июл 2016, 22:50
Репутация: 155
Настоящее имя: Сергей
Откуда: Пензенская обл., г. Никольск
Контактная информация:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение staltech »

MX_Master писал(а):Искал на таобао отдельные STM32F407VET6 на случай, если спалю МК во время работы )) и наткнулся на японские микрухи от Nippon Pulse Motor - NPM PCL6141 (13$), NPM PCD4541 (8$). Заточены чисто под генерацию STEP/DIR. С интерполяцией, ускорениями и прочими плюшками.


NPM PCL6143 - вариант на 4 оси, на али стоит 1263 р. за штуку в партии от 10 шт. Микрухи судя по всему древние, в даташите упоминаются процы 8086, Z80 и т.д. Имею параллельную шину для связи с процом, 5 адресных линий A0-A4 и 16 данных D0-15 ну и соответственно WR/RD. Вроде как имеет вход с энкодера.
Ответить

Вернуться в «Электроника»