Добрый день. Как именно зависает? Посмотрите через JTAG, куда попадает процессор. Вполне возможно, что синус и косинус вызываются как-то неправильно или не оттуда, и процессор встает на несуществующей инструкции или типа того. Пройдите по шагам это место, покажите дизассемблерный код места зависания. И вообще, крайне не рекомендуется пользоваться стандартными сишными функциями вычисления тригонометрии: они реализованы в формате double, очень медленные и не поддерживают в вычислениях модуль FPU (потому что он float). Найдите быстрые табличные реализации и используйте их, и всегда контролируйте в окне дизассеблера, используется ли модуль FPU. Посмотрите рекомендации презентации отсюда (http://motorcontrol.ru/courses/courses_mc01/ , день три, там pdf).Ngg писал(а): ↑18 дек 2017, 15:39 Добрый день микроконтроллер зависает на функция вычисления Sin и Cos
uf.angle += 0.0001*rmp.output;
if(uf.angle >= 2.0*PI)
{
uf.angle = uf.angle-2.0*PI;
}
uf.freq = rmp.output;
uf.calc(&uf);
angle=uf.angle;
cosAngl=cos(angle);
sinAngl=sin(angle);
все представленные величины размерности double, так же бывают зависания на некоторых простых условия if(...), начинает работать только при переносе условия в какое либо другое место. Данная часть кода выполняется в прерывании по таймеру 10кГц, при описании синуса через ряд Тейлора все исправно работает. Среда разработки Qt Creator. Сборка основана на ваших демо проектах. Отладочная плата ОАО "НИИЭТ".
К1921ВК01Т (арм Cortex-M4F)
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: К1921ВК01Т (арм Cortex-M4F)
Re: К1921ВК01Т (арм Cortex-M4F)
Добрый день. Работаю в сетапе JetLink9 + VectorCARD +VectorIDE, и все было хорошо, пока я не ткнул в Run до того как OpenOCD полностью сцепился с МК. Теперь он сцепляться не хочет, консоль выдает следующее:
- | Показать
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: К1921ВК01Т (арм Cortex-M4F)
Добрый день. Сложно сказать, что произошло, но да, стереть контроллер в такой ситуации первое что надо попробовать. Как это делать разными способами описано в viewtopic.php?f=37&t=504&p=3556#p3558 (вверх/вниз полистайте там). Скрипты описанные лежат в дистибутиве VectorIDE в директории openocd
rasulikv писал(а): ↑15 янв 2018, 15:58 Добрый день. Работаю в сетапе JetLink9 + VectorCARD +VectorIDE, и все было хорошо, пока я не ткнул в Run до того как OpenOCD полностью сцепился с МК. Теперь он сцепляться не хочет, консоль выдает следующее:Пробовал вставлять JetLink в другие USB, переустанавливать ему дрова. Мог ли я убить контроллер таким образом? Если нужно стереть флеш, то как подать нужную по даташиту команду во FLASH_FULL_ERASE с подтянутой ножкой H2?
- | Показать
Re: К1921ВК01Т (арм Cortex-M4F)
Да, это помогло. Видимо каким то образом слетела настройка выводов порта как JTAGа. У меня сработал нииэтовский скрипт. Спасибо!
Лашкевич писал(а): ↑15 янв 2018, 17:06 Добрый день. Сложно сказать, что произошло, но да, стереть контроллер в такой ситуации первое что надо попробовать. Как это делать разными способами описано в viewtopic.php?f=37&t=504&p=3556#p3558 (вверх/вниз полистайте там). Скрипты описанные лежат в дистибутиве VectorIDE в директории openocd
rasulikv писал(а): ↑15 янв 2018, 15:58 Добрый день. Работаю в сетапе JetLink9 + VectorCARD +VectorIDE, и все было хорошо, пока я не ткнул в Run до того как OpenOCD полностью сцепился с МК. Теперь он сцепляться не хочет, консоль выдает следующее:Пробовал вставлять JetLink в другие USB, переустанавливать ему дрова. Мог ли я убить контроллер таким образом? Если нужно стереть флеш, то как подать нужную по даташиту команду во FLASH_FULL_ERASE с подтянутой ножкой H2?
- | Показать
Re: К1921ВК01Т (арм Cortex-M4F)
Здравствуйте!
Подскажите пожалуйста, при синхронизации блоков ШИМ, если все блоки включены цепочкой, задержка в один такт распространяется на каждый последующий блок? (NT_PWMn->TBPHS_bit.TBPHS = n+1) или (NT_PWM0->TBPHS_bit.TBPHS = 0; NT_PWM(1...8)->TBPHS_bit.TBPHS = 1;)
Подскажите пожалуйста, при синхронизации блоков ШИМ, если все блоки включены цепочкой, задержка в один такт распространяется на каждый последующий блок? (NT_PWMn->TBPHS_bit.TBPHS = n+1) или (NT_PWM0->TBPHS_bit.TBPHS = 0; NT_PWM(1...8)->TBPHS_bit.TBPHS = 1;)
Re: К1921ВК01Т (арм Cortex-M4F)
Прошу прощения, в первом уравнении имелось в виду(NT_PWMn->TBPHS_bit.TBPHS = n)
Re: К1921ВК01Т (арм Cortex-M4F)
Добрый день!DmitryK писал(а): ↑31 янв 2018, 17:10 Здравствуйте!
Подскажите пожалуйста, при синхронизации блоков ШИМ, если все блоки включены цепочкой, задержка в один такт распространяется на каждый последующий блок? (NT_PWMn->TBPHS_bit.TBPHS = n+1) или (NT_PWM0->TBPHS_bit.TBPHS = 0; NT_PWM(1...8)->TBPHS_bit.TBPHS = 1;)
Задержка появляется только в момент генерации синхроипульса, через цепочку блоков этот импульс проходит "насквозь", т.е. дополнительных задержек не появляется.
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: К1921ВК01Т (арм Cortex-M4F)
Добрый день!
Мы хотим применить данный микроконтроллер в металлокерамическом корпусе, однако контрактное производство по монтажу печатных плат запросило информацию о работе с таким изделием - как формовать ножки, какая для этого нужна оснастка, какое получается посадочное место на печатной плате и какие документы этот процесс описывают. Можно получить такой "ликбез", чтобы передать его производителям? Могут ли микроконтроллеры поставляться уже с сформованными ножками?
Мы хотим применить данный микроконтроллер в металлокерамическом корпусе, однако контрактное производство по монтажу печатных плат запросило информацию о работе с таким изделием - как формовать ножки, какая для этого нужна оснастка, какое получается посадочное место на печатной плате и какие документы этот процесс описывают. Можно получить такой "ликбез", чтобы передать его производителям? Могут ли микроконтроллеры поставляться уже с сформованными ножками?
Re: К1921ВК01Т (арм Cortex-M4F)
Добрый день!Лашкевич писал(а): ↑13 фев 2018, 18:34 Добрый день!
Мы хотим применить данный микроконтроллер в металлокерамическом корпусе, однако контрактное производство по монтажу печатных плат запросило информацию о работе с таким изделием - как формовать ножки, какая для этого нужна оснастка, какое получается посадочное место на печатной плате и какие документы этот процесс описывают. Можно получить такой "ликбез", чтобы передать его производителям? Могут ли микроконтроллеры поставляться уже с сформованными ножками?
К сожалению, мы не занимаемся формовкой и "ликбез" осуществить не в состоянии. Всё что у нас есть - документация на корпус, остальное обычно решается на стороне потребителя.
- Вложения
-
- 208-1.pdf
- Корпус 4250.208-1
- (98.38 КБ) 166 скачиваний
Re: К1921ВК01Т (арм Cortex-M4F)
Спасибо за ответ. Частота ядра 100 МГц. По поводу waitsates не понял, если вы про breakpoint'ы, то не более 2х. Еще существует проблема с отладкой, контроллер постоянно приходится стирать контроллер bat файлом перед дебагом(ошибка target not halted). Программатор St-link v2(клон), до этого использовался J-link 9 работал лучше, но к сожалению умер, пример tick_1ms отлаживается без проблем, а на большом проекте зависает, причем после ресета загораются инициализированные диоды. Конфигурация Qt 3.4.2+GCC_арм_4.9+OpenOCD на основе VectorIDE. Подключил контроллер FPU зависает на обычном делении в main функции, до этого данный проект без FPU с применением "костылей" работал нормально, но довольно медленно. Проект собирался на основе MotorContor(Vector) без применения IQ библиотек.Лашкевич писал(а): ↑09 янв 2018, 09:37 Добрый день. Как именно зависает? Посмотрите через JTAG, куда попадает процессор. Вполне возможно, что синус и косинус вызываются как-то неправильно или не оттуда, и процессор встает на несуществующей инструкции или типа того. Пройдите по шагам это место, покажите дизассемблерный код места зависания. И вообще, крайне не рекомендуется пользоваться стандартными сишными функциями вычисления тригонометрии: они реализованы в формате double, очень медленные и не поддерживают в вычислениях модуль FPU (потому что он float). Найдите быстрые табличные реализации и используйте их, и всегда контролируйте в окне дизассеблера, используется ли модуль FPU. Посмотрите рекомендации презентации отсюда (http://motorcontrol.ru/courses/courses_mc01/ , день три, там pdf).
http://dropmefiles.com/3Dgrc. Прилагаю файлы qbs,main,доп библиотеки к базе примеров перефирии Qt и скрин дизасемблера зависающего на 6 строке деление float/float.