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

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

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

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

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

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

Что-то не так со значением объекта 2600.01 - VendorToken. По этому объекту юникон определеяет, какую базу текстов использовать. Для устройств на базе НИИЭТа значение должно быть 0x11111111 и оно присваивается сразу двумя способами, как в дефолтах словаря объектов, так и напрямую в переменную VendorToken. Сейчас, судя по всему, этого объекта или нет, или там ноль. Поэтому юникон не знает, какую базу текстов использовать и рисует прочерки. Подробнее об этом объекте написано в мануале кодэдита. Попробуйте следующее:
1. Откройте cood2.c и поищите VendorToken. Он должен быть на 2600h.01
2. Поищите его в main.c, он должен быть Uint32 VendorToken=0x11111111;
3. Поищите его в юниконе "вслепую" по номеру индекса, перебирая все объекты, напишите сюда, чему равно его значение.
4. Проверьте, что перед инициализацией драйвера CANOpen вы разрешили ему загружать параметры (LoadParamsFromUserMemory_ena)
5. Попробуйте нажать кнопку в юниконе справа сверху "По умолчанию", посмотрите, меняется ли значение VendorToken в словаре.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
petrovitch
Сообщения: 107
Зарегистрирован: 15 фев 2017, 19:07

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

Сообщение petrovitch »

1. Откройте cood2.c и поищите VendorToken. Он должен быть на 2600h.01
2. Поищите его в main.c, он должен быть Uint32 VendorToken=0x11111111;
Всё верно!
3. Поищите его в юниконе "вслепую" по номеру индекса, перебирая все объекты, напишите сюда, чему равно его значение.
07.08.2019 18:50:52
Узел 1: Неизв. устройство (0033)-0000 v.00.01 2000-00-00 (00000033_00000001)
Группа: _
_ [2600,01] = 286331153 U32
4. Проверьте, что перед инициализацией драйвера CANOpen вы разрешили ему загружать параметры (LoadParamsFromUserMemory_ena)
Где это?
5. Попробуйте нажать кнопку в юниконе справа сверху "По умолчанию", посмотрите, меняется ли значение VendorToken в словаре.
Обновление идёт видимо, но значение остаётся прежним.
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

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

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

Ну, параметр есть и значение правильное (286331153 в хексах - единички). Тогда просьба скачать заново с битбакета юникон, распаковать и проверить. Там две версии юникона, проверьте обе и сообщите результат. Может, в процессе опытов что-то повредилось в его директории..
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
petrovitch
Сообщения: 107
Зарегистрирован: 15 фев 2017, 19:07

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

Сообщение petrovitch »

На версии 2.2.6 словарь загрузился сразу и достаточно быстро, не несмотря на канал USB-RS/

Версию 3.6.4 пришлось перезаписать и тоже всё заработало!

Спасибо!
petrovitch
Сообщения: 107
Зарегистрирован: 15 фев 2017, 19:07

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

Сообщение petrovitch »

Хочу вернуться к добавлению приёма задающих воздействий по каналу SPI в режиме Slave в проекте MotorControlDemo.

Вопросы следующие:

1. Приём по SPI лучше организовать по дополнительному прерыванию (по заполнению FIFO на половину) или опрашивая соответствующий бит из sm_net (с миллисекундным интервалом)?

2. Другим решением было бы получение информации из SPI с помощью DMA.

( Это немного обсуждалось в ветке про SPI)

Как более рационально?

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

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

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

Прерывание лучше делать, если вычислительная задача должна быть приоритетнее 10кГц (самое быстрое прерывание в этом проекте). Если достаточно в 1мс что-то там поллить и раз в 1мс обмениваться посылками, то имхо без прерываний проще и понятнее. Если хочется уменьшить лаг, можно в 10кГц запихать и поллинг и установку новых данных. А мастер пусть пореже тогда шлет, скажем, на 3кГц. Тогда всегда будет новая инфа. Если надо еще быстрее и без лага, то прерывание. А FIFO или нет зависит от длины посылки и что там вообще будет.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
petrovitch
Сообщения: 107
Зарегистрирован: 15 фев 2017, 19:07

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

Сообщение petrovitch »

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

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

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

Я не вижу, чем здесь DMA поможет. DMA хорош какие-то большие массивы данных гонять, видеопамять там, или с АЦП данные собирать на большой скорости. А раз в 1мс задание принимать... Имхо DMA оверкилл.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
KopetanKorzhik
Сообщения: 1
Зарегистрирован: 26 авг 2019, 16:09
Предприятие: TopSecret

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

Сообщение KopetanKorzhik »

Доброго времени суток, возникла пара вопросов.
При отладке проекта на МК все виснет после вызова функции co2_Init в файле SM_Net.c (у меня строка 46). Судя по всему все виснет в недрах библиотеки libCANOpen_drv.a. Есть предположение, что это связано с отсутствием связи по интерфейсу CAN (пока что ножки мк просто висят в воздухе).
В связи с этим второй вопрос: где можно скачать uniCON для проверки наличия связи с МК, быть может зависание это косяк отладки?
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

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

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

Доброе, нет, из-за отсутствия связи точно не может быть зависания. Может, если тактирование CAN не включено в инициализации ядра или что-то с памятью а проекте поломано. Подскажите, какой МК, какие изменения в проекте по сравнению с оригинальным? Юникон, как и всё сопутствующее, лежит в разделе download на битбакете. Советую взять с битбакета все новое, включая проект https://bitbucket.org/niietcm4/motorcon ... downloads/
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
Ответить

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