Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: IAR C проблема с функциями SIN, COS
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Д_М
Здравствуйте!
Проблема была замечена на версии IAR 2.28 подтвердилась на версии 6.40. Когда в программе используются функции вычисления sin, cos, то, что было написано и отлажено давным давно, дурит самым нелепым образом. После заремлевания sin, cos дури, нет. В настройках проекта стек возврата, дата стек, размер кучи, увеличены раза в 2..4, относительно величин по умолчанию. Других соображений, что вышеупомянутые функции затирают что-то лишнее, у меня нет. Что ещё есть смысл изменить в настройках? Какие соображения на этот счёт?
Спасибо!
Сергей Борщ
Цитата(Д_М @ Jun 18 2014, 11:18) *
В настройках проекта стек возврата, дата стек, размер кучи, увеличены раза в 2..4, относительно величин по умолчанию.
Хм. А почему не в 3...5 раз? Стеку надо давать столько, сколько требует функция. Сколько требуют sin и cos понятия не имею. Куча им не нужна. Для начала увеличьте стек данных насколько возможно. Но вполне возможно, что им не хватит и всей оставшейся у вас памяти. На вашем месте я бы создал отдельный проект из одного вызова такой функции, перед вызовом заполнил все ОЗУ каким-то кодом вроде 0xAB, прогнал его в симуляторе и после возврата из функции посмотрел, как далеко от начала стека код 0xAB затерт.
megajohn
Цитата(Д_М @ Jun 18 2014, 12:18) *
Какие соображения на этот счёт?


было подобное в MSVC, дурил modf, целую часть возвращал нормально, а фрактальную нет.
Причина оказалась банальна - не был в соответсвующем С-файле включен хедер <math.h>
хотя в дизасме вроде переходило куда надо.
scifi
Цитата(Д_М @ Jun 18 2014, 12:18) *
Какие соображения на этот счёт?

Про стек уже говорили. Но в общем случае любое изменение исходников программы, и даже опций компилятора, может привести к сбоям. Например, если в нужных местах нет volatile. Или если корректность программы зависит от времени выполнения некоторых участков.
den_po
Банальность: процессор в свойствах проекта правильный указан?
Ну и я бы воспользовался пошаговым выполнением и сохранением содержимого ОЗУ в файл до и после вызовов функций, сравнил бы, узнал, что и где портится.
jcxz
Цитата(den_po @ Jun 19 2014, 18:07) *
Ну и я бы воспользовался пошаговым выполнением и сохранением содержимого ОЗУ в файл до и после вызовов функций, сравнил бы, узнал, что и где портится.

В случае многозадачной ОС и/или наличия ISR-ов это не гарантирует результат. То что происходит в реалтайм и в пошаговом времени - разные вещи.
den_po
Цитата(jcxz @ Jun 20 2014, 09:47) *
В случае многозадачной ОС и/или наличия ISR-ов это не гарантирует результат. То что происходит в реалтайм и в пошаговом времени - разные вещи.

Ну если человек уверен, что виноват код функций, а не задержки при их вызове, такая проверка - самое то.
Rash
В других версиях не пробовал, но в 6.70, нормально работает и Sin и Cos
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.