Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Модераторы: 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 в словаре.
1. Откройте cood2.c и поищите VendorToken. Он должен быть на 2600h.01
2. Поищите его в main.c, он должен быть Uint32 VendorToken=0x11111111;
3. Поищите его в юниконе "вслепую" по номеру индекса, перебирая все объекты, напишите сюда, чему равно его значение.
4. Проверьте, что перед инициализацией драйвера CANOpen вы разрешили ему загружать параметры (LoadParamsFromUserMemory_ena)
5. Попробуйте нажать кнопку в юниконе справа сверху "По умолчанию", посмотрите, меняется ли значение VendorToken в словаре.
-
- Сообщения: 107
- Зарегистрирован: 15 фев 2017, 19:07
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Всё верно!1. Откройте cood2.c и поищите VendorToken. Он должен быть на 2600h.01
2. Поищите его в main.c, он должен быть Uint32 VendorToken=0x11111111;
07.08.2019 18:50:523. Поищите его в юниконе "вслепую" по номеру индекса, перебирая все объекты, напишите сюда, чему равно его значение.
Узел 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 в хексах - единички). Тогда просьба скачать заново с битбакета юникон, распаковать и проверить. Там две версии юникона, проверьте обе и сообщите результат. Может, в процессе опытов что-то повредилось в его директории..
-
- Сообщения: 107
- Зарегистрирован: 15 фев 2017, 19:07
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
На версии 2.2.6 словарь загрузился сразу и достаточно быстро, не несмотря на канал USB-RS/
Версию 3.6.4 пришлось перезаписать и тоже всё заработало!
Спасибо!
Версию 3.6.4 пришлось перезаписать и тоже всё заработало!
Спасибо!
-
- Сообщения: 107
- Зарегистрирован: 15 фев 2017, 19:07
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Хочу вернуться к добавлению приёма задающих воздействий по каналу SPI в режиме Slave в проекте MotorControlDemo.
Вопросы следующие:
1. Приём по SPI лучше организовать по дополнительному прерыванию (по заполнению FIFO на половину) или опрашивая соответствующий бит из sm_net (с миллисекундным интервалом)?
2. Другим решением было бы получение информации из SPI с помощью DMA.
( Это немного обсуждалось в ветке про SPI)
Как более рационально?
3. Как сделать так, чтобы во время приёма информации от Master сразу происходил и забор актуальной информации обратно? Иначе, реализуя идею по п.1, информация в обратную сторону пойдёт с задержкой в 1 сеанс связи.
Вопросы следующие:
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 или нет зависит от длины посылки и что там вообще будет.
-
- Сообщения: 107
- Зарегистрирован: 15 фев 2017, 19:07
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
А съём данных с помощью DMA в этом проекте Вы не поддерживаете?
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Я не вижу, чем здесь DMA поможет. DMA хорош какие-то большие массивы данных гонять, видеопамять там, или с АЦП данные собирать на большой скорости. А раз в 1мс задание принимать... Имхо DMA оверкилл.
-
- Сообщения: 1
- Зарегистрирован: 26 авг 2019, 16:09
- Предприятие: TopSecret
Re: Проект MotorControlDemo для микроконтроллеров серии 1921ВК01
Доброго времени суток, возникла пара вопросов.
При отладке проекта на МК все виснет после вызова функции co2_Init в файле SM_Net.c (у меня строка 46). Судя по всему все виснет в недрах библиотеки libCANOpen_drv.a. Есть предположение, что это связано с отсутствием связи по интерфейсу CAN (пока что ножки мк просто висят в воздухе).
В связи с этим второй вопрос: где можно скачать uniCON для проверки наличия связи с МК, быть может зависание это косяк отладки?
При отладке проекта на МК все виснет после вызова функции 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/