Страница 7 из 20

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

Добавлено: 12 дек 2016, 14:24
AndyBig
UAVpilot писал(а):Нет, тут задачка посложней предвидится...
Еу значит условия этой задачки не были оглашены в этой теме. По крайней мере я не нашел ничего такого.
Может быть вкратце опишите ее?

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

Добавлено: 12 дек 2016, 14:48
Serg
В самом начале шло обсуждение почти в верном направлении, я просто мысленно продолжил его до вариантов реализации. Ни он, ни алгоритм Степмастера не ложатся полностью на CPLD.
Озвучивать пока не хочу, интересно посмотреть какой тут вариант родится. :)

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

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

В работе, после первого импульса, который был после длительного простоя, выдается через базовое время этот импульс
И дальше в том же ключе :)
Даже эти предложения - Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4 #102 - с легкостью ложатся в FPGA.

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

Добавлено: 12 дек 2016, 18:21
Serg
FPGA получается дороже чем даже stm32, а
MX_Master писал(а):Цель всей затеи - создать максимально бюджетный умножитель STEP/DIR
AndyBig писал(а):Даже эти предложения - Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4 #102 - с легкостью ложатся в FPGA.
Я ж не просто так написал
UAVpilot писал(а):обсуждение почти в верном направлении
:)

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

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

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

Добавлено: 12 дек 2016, 18:57
Serg
Теперь наверно и сам понял, почему нет спроса на симулятор для Протеуса. :)

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

Добавлено: 12 дек 2016, 19:15
selenur
На 53 минуте демонстрация визуализации:
https://www.youtube.com/watch?v=_en0tY9EbA4
до этого пример того как в программе подготовиться к этому.
Недавно на вебинаре сам узнал о такой штуке. :-)

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

Добавлено: 12 дек 2016, 19:38
u37
MX_Master писал(а):Озадачился эмулятором работы Кортекса М4 с целью визуально наблюдать работу умножителя...Адреса переменных вбиваем вручную или импортируем из бинарника, указываем лимиты и наблюдаем изменение с течением времени.
Зачем так сложно? Тот-же KEIL замечательно строит графики, и вбивать "руками" ничего не надо.
Кстати, для отладочного вывода лучше использовать RTT (JLINK). Сам JLINK можно или сделать или перешить из STLink. Последнее официально.

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

Добавлено: 12 дек 2016, 21:37
Serg
Чем именно лучше? :)

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

Добавлено: 13 дек 2016, 14:29
MX_Master
Попробовал Кубик МХ..
  • Указал МК - STM32F407VETx.
  • Два пина на вход, два пина на выход.
  • Сгенерил код под SW4STM32.
Открываем полученный проект в SW4STM32 и видим, что нигде в заголовках не прописана семья нашего МК (STM32F407xx). Отсюда пучок ошибок при сборке. Просмотрел "многочисленные" настройки проекта в кубике - все на месте. Попробовал разные настройки выходного кода - тот же эффект. Или я что-то не понимаю, или автогенератор кода у кубика учитывает не все тонкости при выходе кода.

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

Добавлено: 13 дек 2016, 15:54
tmr
А чем закончилась разработка на ардуине? Вроде бы на осц.грамме уже импульсы рисовались, как вдруг про арм заговорили.

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

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

Под Кортекс М4 процесс с трудом, но пошел. Делаю пока по аналогии с ардуиновым вариантом. Но симуляторов для визуальной проверки кода без физического устройства пока не нашёл. Буду признателен, если кто-то что-то посоветует на эту тему. Сама макетка с М4 приедет только после нового года. Так что ждать придется в обоих случаях.

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

Добавлено: 13 дек 2016, 16:58
Serg
MX_Master писал(а):Открываем полученный проект в SW4STM32 и видим, что нигде в заголовках не прописана семья нашего МК (STM32F407xx).
Надо в свойствах проекта в SW4STM32 указать МК.
В Кубе и в С семейства МК указываются немного по разному, разница в буквах после номера: для Куба важно количество ног, а для C объём и организация памяти и т.п., поэтому прямого наследия не будет.

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

Добавлено: 13 дек 2016, 21:52
u37
В Keil есть симулятор процессора. В той же закладке, где выбирается JTAG, надо просто выбрать левое окно.
Для периферии пишутся скрипты. Никогда сам не делал, я любитель иголками по живому тестить. ))

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

Добавлено: 13 дек 2016, 21:56
u37
Да, вот еще что ... судя по всему, вы хотите использовать внешние источники прерывания и обрабатывать всё в прерываниях. Я правильно понял?
В ARM (STM32) так не делают. В нём есть DMA и куча периферии. Входные сигналы можно считать таймерами, а импульсы генерировать или UART'ами с "пинателями" или другими таймерами. Процессор здесь делает только математику, а сигналы формируются автоматически. Поэтому и нет никакого смысла в особо мощном MCU. ))

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

Добавлено: 13 дек 2016, 23:16
Serg
u37 писал(а):Входные сигналы можно считать таймерами
В данной задаче входные сигналы не нужно считать, нужно реагировать на каждый импульс.

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

Добавлено: 07 янв 2017, 19:06
MX_Master
Весь наборчик в сборе, на след. неделе буду тестировать и исправлять косяки :hehehe:
Mega2560, STM32F4, ST-LINK (2102 просмотра) <a class='original' href='./download/file.php?id=99402&mode=view' target=_blank>Загрузить оригинал (210.21 КБ)</a>
Mega2560, STM32F4, ST-LINK

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

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

Кто-нибудь такое использовал в проектах? Или может видел в готовых контроллерах?

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

Добавлено: 09 янв 2017, 10:24
sidor094
u37 писал(а):Входные сигналы можно считать таймерами, а импульсы генерировать или UART'ами с "пинателями" или другими таймерами.
Несмотря на достаточно крутые таймеры ,уменя не получилось читать STEP/DIR.полностью аппаратно.Таймеры у STM32 двунаправленные.С интерфейсом энкодера всё в порядке.А вот менять направления счета STEP по сигналу DIR не получилось.Пришлось вводить прерывание по сигналу DIR .И уже внутри прерывания переключать направление счета таймера STEP.Если кто-то знает как это сделать полностью аппаратно .Подскажите.

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

Добавлено: 09 янв 2017, 10:49
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. Вроде как имеет вход с энкодера.