Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
- Лашкевич
- Сообщения: 372
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Для другого кварца, скорее всего, нужно менять настройку модуля CAN.
В файле CANOpenUDfuncs.c есть таблица canSpeedTable
эта таблица записывается в регистры проца, см. скриншоты. Как пересчитать таблицу - см. ТО НИИЭТа. Для теста предлагаю поставить кварц на 16 МГц, проверить что работает вывод через нужные ножки, уже потом играть с перенастройкой таблицы.
В файле CANOpenUDfuncs.c есть таблица canSpeedTable
эта таблица записывается в регистры проца, см. скриншоты. Как пересчитать таблицу - см. ТО НИИЭТа. Для теста предлагаю поставить кварц на 16 МГц, проверить что работает вывод через нужные ножки, уже потом играть с перенастройкой таблицы.
-
- Сообщения: 70
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Я заливаю в планту Вектора модифицированое ПО. Только предварительно вернув старою частоту частоту кварца 12 мГц.Disona писал(а): ↑17 авг 2021, 18:40Вы заливаете в плату Вектора модифицированное под вашу плату ПО и оно работает?porsche2492 писал(а): ↑17 авг 2021, 18:25У меня есть другая плата собственной разработки, я залил ПО MotorControlDemo предварительно изменив его(изменения написал я выше которые сделал), после прошивки устройство не отображается в Юниконе. Но если заливаю ПО в ваше отладочную плату но все нормально определяется в Юниконе.Лашкевич писал(а): ↑17 авг 2021, 17:44 Добрый день. Мы с коллегами не поняли, в чём проблема и что надо.
1. У вас не работает на вашей плате?
2. У вас работает после изменения настроек на нашей (а какая плата была и стала?), а не должно?
3. На нашей плате заработало после приведённых изменений, а раньше не работало?
4. ваш вариант
Или вы заливаете в плату Вектора НЕмодифицированное ПО?
-
- Сообщения: 70
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Выводы работают. Зачем изменять настройки скорости CAN если частоты HCLK и PCLK остались без изменений 200 и 100 мГц соответственно, CAN же тактируеться от HCLK и соответственно делители для контроллера CAN не надо менять или что я недопонимаю? При этом я запустил CanMonitor от марафона и увидел, что на скорости 125 кбит/с приходит HeartBeat сообщение. При этом при запуске Юникона где узел отображается сообщение "...0BAD..."Лашкевич писал(а): ↑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 МГц, проверить что работает вывод через нужные ножки, уже потом играть с перенастройкой таблицы.
- Лашкевич
- Сообщения: 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 ножку.
Также после переопределения ножек CAN проверьте, что в софте нигде эти ножки не переписываются на другую функцию. Прямо на крутящемся софте вычитайте назад ALTFUNC и посмотрите, то ли там что вы прописали. Может быть, есть модуль в софте, который вы упустили, который переопределил RX ножку.
-
- Сообщения: 70
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Не подскажите как сделать, чтобы в программе UniCON в режиме Осцилогирование (Выборка)данные отображались бы не в единицах "T-Диск" а в единицах "Гц" либо "миллисенуду"? В руководстве на программу "Uniсon" я не понял, как это сделать.
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Вы должны (с помощью программы COODEdit4) добавить в словарь объект типа UINT32, например: В примере указана переменная dlog.sampling_rate. Если у вас в структуре dlog нет поля sampling_rate, то вы можете определить свою переменную, например:porsche2492 писал(а): ↑19 авг 2021, 16:01 Не подскажите как сделать, чтобы в программе UniCON в режиме Осцилогирование (Выборка)данные отображались бы не в единицах "T-Диск" а в единицах "Гц" либо "миллисенуду"? В руководстве на программу "Uniсon" я не понял, как это сделать.
Uint32 samplingRate;
И присвоить ей частоту выборок в Герцах (частоту, с которой вызывается функция dlog.update):
samplingRate = 10000; // Гц
Далее, в настройках профиля (в программе UniCON) нужно указать адрес этого объекта:
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Пытаюсь перевести проект в IAR (он у меня давно и я к нему привык)
столкнулся с проблемой вылета процессора в hard fault на операции умножения
разбор причин такого поведения (ведь другие проекты отлично собираются в IAR на 1921ВК01) привел к тому что "все портит" добавление в проект libCANOpen_drv.a
log файл компиляции до добавления библиотеки:
После:
Видно что стала выбираться функция умножения двойной точности, реализации которой в процессоре нет.
Вопрос как это исправить? может у кого есть библиотека libCANOpen_drv.a скомпилированная из 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 (вроде бы так можно).
Как носители исходников libCANOpen_drv.a, мы можем её перекомпилировать в IAR и выложить, но сами мы с IAR не работали (считаем его по сравнению с эклипсом очень отсталым в плане редактирования кода). Можем попробовать выполнить компиляцию в IAR, если вы дадите инструкцию, как делать библиотеки для IAR (или ссылку). Самим не хотелось бы разбираться. Но это крайний вариант - сначала предпочтительны другие два:
Второй вариант - поискать возможности прилинковать или сконвертировать библиотеку из под GCC (как есть) для компилятора IAR.
Третий вариант - сменить в IAR компиляторы на GCC (вроде бы так можно).
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Я тоже никогда не занимался библиотеками.
Попробую сначала разобраться по вар 2
есть еще вариант 4 (разобраться с эклипсом) в нем у меня проект собирается и запускается,
но отталкивает непривычная среда + шаманство с драйверами, надо переключать jlink на segger для работы с другими проектами в IAR
по поводу проекта:
насколько необходимы всякие копирования участков памяти и функций?
в IAR инициализация памяти автоматическая, никогда не приходилось обнулять или инициализировать переменные вручную.
копирование функций без опции прошивки по CAN по идее не нужно
Попробую сначала разобраться по вар 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 - это недели работы без явной перспективы. Но это, как говорится, на "вкус и цвет"...
Среда на базе эклипса очень много у кого - у тексаса, у STM их STM32CubeIDE, MPLAB X для PIC, у большинства китайских микроконтроллеров и т.п. Полезно было бы ориентироваться кнопочках хотя бы на случай миграции куда-то.
На мой взгляд у эклипса лучше, чем в IAR, работа с кодом - есть статический анализатор кода, который подсвечивает код в зависимости от его семантики. Например, если обратиться в коде к члену структуры, которого на самом деле в структуре нет, он будет черным, а который есть - подсвечен. Неработающие в данный момент куски кода, убранные условной компиляцией, будут серыми. Если есть опечатка в коде, она подсветится ещё до попытки компиляции - это лишь некоторые примеры. Работает автодополнение, можно с зажатым ctrl кликать на любые члены структур и переходить к их определению. Можно делать рефакторинг, скажем, переименование переменной speed в структуре, и эклипс заменит имя именно в этой структуре и местах её использования, не трогая одноименные переменные speed в других структурах.
Когда я знакомился с IAR, там и половины всего этого не было. Не знаю, может что и изменилось.
Думаю, если вы поработаете с эклипсом пару дней, то привыкнете и не заходите перелезать. А переносить проект в IAR - это недели работы без явной перспективы. Но это, как говорится, на "вкус и цвет"...
По поводу копирования функций - не нужно. В gcc тоже не нужно, если нет задачи исполнять код из RAM - а для этого проца код в RAM выполнение не ускоряет.по поводу проекта:
насколько необходимы всякие копирования участков памяти и функций?