Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Аватара пользователя
Лашкевич
Сообщения: 372
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич »

Для другого кварца, скорее всего, нужно менять настройку модуля CAN.
В файле CANOpenUDfuncs.c есть таблица canSpeedTable
эта таблица записывается в регистры проца, см. скриншоты.
photo_2021-08-17_18-05-50.jpg
photo_2021-08-17_18-05-50.jpg (8.06 КБ) 2465 просмотров
photo_2021-08-17_18-05-15.jpg
photo_2021-08-17_18-05-15.jpg (5.68 КБ) 2465 просмотров
photo_2021-08-17_18-01-48.jpg
photo_2021-08-17_18-01-48.jpg (8.21 КБ) 2465 просмотров
Как пересчитать таблицу - см. ТО НИИЭТа. Для теста предлагаю поставить кварц на 16 МГц, проверить что работает вывод через нужные ножки, уже потом играть с перенастройкой таблицы.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
porsche2492
Сообщения: 70
Зарегистрирован: 21 янв 2018, 00:42
Предприятие: Авиаавтоматика
Откуда: Курск

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение porsche2492 »

Disona писал(а): 17 авг 2021, 18:40
porsche2492 писал(а): 17 авг 2021, 18:25
Лашкевич писал(а): 17 авг 2021, 17:44 Добрый день. Мы с коллегами не поняли, в чём проблема и что надо.
1. У вас не работает на вашей плате?
2. У вас работает после изменения настроек на нашей (а какая плата была и стала?), а не должно?
3. На нашей плате заработало после приведённых изменений, а раньше не работало?
4. ваш вариант
У меня есть другая плата собственной разработки, я залил ПО MotorControlDemo предварительно изменив его(изменения написал я выше которые сделал), после прошивки устройство не отображается в Юниконе. Но если заливаю ПО в ваше отладочную плату но все нормально определяется в Юниконе.
Вы заливаете в плату Вектора модифицированное под вашу плату ПО и оно работает?
Или вы заливаете в плату Вектора НЕмодифицированное ПО?
Я заливаю в планту Вектора модифицированое ПО. Только предварительно вернув старою частоту частоту кварца 12 мГц.
porsche2492
Сообщения: 70
Зарегистрирован: 21 янв 2018, 00:42
Предприятие: Авиаавтоматика
Откуда: Курск

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение porsche2492 »

Лашкевич писал(а): 17 авг 2021, 19:11 Для другого кварца, скорее всего, нужно менять настройку модуля CAN.
В файле CANOpenUDfuncs.c есть таблица canSpeedTable
эта таблица записывается в регистры проца, см. скриншоты.
photo_2021-08-17_18-05-50.jpg
photo_2021-08-17_18-05-15.jpg
photo_2021-08-17_18-01-48.jpg

Как пересчитать таблицу - см. ТО НИИЭТа. Для теста предлагаю поставить кварц на 16 МГц, проверить что работает вывод через нужные ножки, уже потом играть с перенастройкой таблицы.
Выводы работают. Зачем изменять настройки скорости CAN если частоты HCLK и PCLK остались без изменений 200 и 100 мГц соответственно, CAN же тактируеться от HCLK и соответственно делители для контроллера CAN не надо менять или что я недопонимаю? При этом я запустил CanMonitor от марафона и увидел, что на скорости 125 кбит/с приходит HeartBeat сообщение. При этом при запуске Юникона где узел отображается сообщение "...0BAD..."
Аватара пользователя
Лашкевич
Сообщения: 372
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич »

Выглядит так, что да, модуль CAN работает на нужной скорости. Юникон работает так - видит сообщение HeartBeat и шлёт на этот номер узла SDO сообщения к объектам словаря, в которых прописан тип устройства. Но ответа не получает, и помечает этот узел как BAD. Скорее всего, на передачу CAn у контроллера работает, а на приём нет. Какой период HeartBeat сообщений в CanMonitor? Должен быть раз в секунду. Если чаще (постоянно шпарят), это значит, что контроллер не слышит сам своих же сообщений (есть такая неисправность CAN). Смотрите осциллографом ножки TX, RX на проце, есть ли на RX посылки HeartBeat? Возможно, есть аппаратная проблема с микросхемой или развязкой драйвера CAN.
Также после переопределения ножек CAN проверьте, что в софте нигде эти ножки не переписываются на другую функцию. Прямо на крутящемся софте вычитайте назад ALTFUNC и посмотрите, то ли там что вы прописали. Может быть, есть модуль в софте, который вы упустили, который переопределил RX ножку.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
porsche2492
Сообщения: 70
Зарегистрирован: 21 янв 2018, 00:42
Предприятие: Авиаавтоматика
Откуда: Курск

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение porsche2492 »

Не подскажите как сделать, чтобы в программе UniCON в режиме Осцилогирование (Выборка)данные отображались бы не в единицах "T-Диск" а в единицах "Гц" либо "миллисенуду"? В руководстве на программу "Uniсon" я не понял, как это сделать.
Trofimov
Сообщения: 2
Зарегистрирован: 24 июн 2019, 19:09
Предприятие: ООО "НПФ ВЕКТОР"

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Trofimov »

porsche2492 писал(а): 19 авг 2021, 16:01 Не подскажите как сделать, чтобы в программе UniCON в режиме Осцилогирование (Выборка)данные отображались бы не в единицах "T-Диск" а в единицах "Гц" либо "миллисенуду"? В руководстве на программу "Uniсon" я не понял, как это сделать.
Вы должны (с помощью программы COODEdit4) добавить в словарь объект типа UINT32, например:
SamplingRate.jpg
SamplingRate.jpg (58 КБ) 2341 просмотр
В примере указана переменная dlog.sampling_rate. Если у вас в структуре dlog нет поля sampling_rate, то вы можете определить свою переменную, например:
Uint32 samplingRate;
И присвоить ей частоту выборок в Герцах (частоту, с которой вызывается функция dlog.update):
samplingRate = 10000; // Гц
Далее, в настройках профиля (в программе UniCON) нужно указать адрес этого объекта:
profile.jpg
profile.jpg (38 КБ) 2341 просмотр
AlexM
Сообщения: 9
Зарегистрирован: 31 янв 2018, 12:24
Предприятие: МИЭТ

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение AlexM »

Пытаюсь перевести проект в IAR (он у меня давно и я к нему привык)
столкнулся с проблемой вылета процессора в hard fault на операции умножения
разбор причин такого поведения (ведь другие проекты отлично собираются в IAR на 1921ВК01) привел к тому что "все портит" добавление в проект libCANOpen_drv.a
log файл компиляции до добавления библиотеки:

Код: Выделить всё

Selecting member DblMul.o(m7M_tls.a) to define __aeabi_dmul.
              definition:  __aeabi_dmul
После:

Код: Выделить всё

Selecting member DblMul.o(m7M_tlv.a) to define __aeabi_dmul.
              definition:  __aeabi_dmul
Видно что стала выбираться функция умножения двойной точности, реализации которой в процессоре нет.

Вопрос как это исправить? может у кого есть библиотека libCANOpen_drv.a скомпилированная из IAR ?
Аватара пользователя
Лашкевич
Сообщения: 372
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич »

Добрый день. Мы не собирали проект в IAR, но принципиальных ограничений не видим. Библиотеку libCANOpen_drv.a в IAR тоже не компилили.
Как носители исходников libCANOpen_drv.a, мы можем её перекомпилировать в IAR и выложить, но сами мы с IAR не работали (считаем его по сравнению с эклипсом очень отсталым в плане редактирования кода). Можем попробовать выполнить компиляцию в IAR, если вы дадите инструкцию, как делать библиотеки для IAR (или ссылку). Самим не хотелось бы разбираться. Но это крайний вариант - сначала предпочтительны другие два:
Второй вариант - поискать возможности прилинковать или сконвертировать библиотеку из под GCC (как есть) для компилятора IAR.
Третий вариант - сменить в IAR компиляторы на GCC (вроде бы так можно).
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
AlexM
Сообщения: 9
Зарегистрирован: 31 янв 2018, 12:24
Предприятие: МИЭТ

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение AlexM »

Я тоже никогда не занимался библиотеками.

Попробую сначала разобраться по вар 2
есть еще вариант 4 (разобраться с эклипсом) в нем у меня проект собирается и запускается,
но отталкивает непривычная среда + шаманство с драйверами, надо переключать jlink на segger для работы с другими проектами в IAR

по поводу проекта:
насколько необходимы всякие копирования участков памяти и функций?
в IAR инициализация памяти автоматическая, никогда не приходилось обнулять или инициализировать переменные вручную.
копирование функций без опции прошивки по CAN по идее не нужно
Аватара пользователя
Лашкевич
Сообщения: 372
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01

Сообщение Лашкевич »

Шаманство с драйверами надо только для jlink, st-link работает как есть, без zadig. Это нюансы опенсорсного отладчика OpnOCD - не работает с проприетарными драйверами Jlink.

Среда на базе эклипса очень много у кого - у тексаса, у STM их STM32CubeIDE, MPLAB X для PIC, у большинства китайских микроконтроллеров и т.п. Полезно было бы ориентироваться кнопочках хотя бы на случай миграции куда-то.

На мой взгляд у эклипса лучше, чем в IAR, работа с кодом - есть статический анализатор кода, который подсвечивает код в зависимости от его семантики. Например, если обратиться в коде к члену структуры, которого на самом деле в структуре нет, он будет черным, а который есть - подсвечен. Неработающие в данный момент куски кода, убранные условной компиляцией, будут серыми. Если есть опечатка в коде, она подсветится ещё до попытки компиляции - это лишь некоторые примеры. Работает автодополнение, можно с зажатым ctrl кликать на любые члены структур и переходить к их определению. Можно делать рефакторинг, скажем, переименование переменной speed в структуре, и эклипс заменит имя именно в этой структуре и местах её использования, не трогая одноименные переменные speed в других структурах.

Когда я знакомился с IAR, там и половины всего этого не было. Не знаю, может что и изменилось.

Думаю, если вы поработаете с эклипсом пару дней, то привыкнете и не заходите перелезать. А переносить проект в IAR - это недели работы без явной перспективы. Но это, как говорится, на "вкус и цвет"...

по поводу проекта:
насколько необходимы всякие копирования участков памяти и функций?
По поводу копирования функций - не нужно. В gcc тоже не нужно, если нет задачи исполнять код из RAM - а для этого проца код в RAM выполнение не ускоряет.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
Ответить

Вернуться в «32-разрядные микроконтроллеры»