Доброго всем времени суток!
Возникла проблема с вычислением COSинуса в IAR. Никак не получается ни с использованием библиотеки math.h, ни со сторонними функциями. На выходе всегда получается одно и тоже число независимо от вводимого угла.
Может кто решал подобную задачу? Помоги пожалуйста!
Посмотрите описание функции, в компьютерных сях аргумент представлен в радианах. А тут?
ЗЫ. Арккосинус Вашего значения 90 гр.
Может не обнуляется аргумент?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
А вот с acos какая-то непонятная ерунда.
загоняемое значение (0-200) - результат :
0 - 1,5708
1 - 0
2 - 3,40282
и до 200 - 3,40282
загоняемое значение ((0-200) * 3.14 / 180) - результат :
0 - 1,5708
0,0174444 - 0,785398
0,715222 - 0
1,01178 - 3,40282
и до победного - 3,40282
Показаны только загоняемые значения, на которых возвращаемые значения меняются.
В промежутке между ними они НЕ МЕНЯЮТСЯ!
АААААА-а-а-а-а-а.
Я с ума сойду скоро уже наверное....
Для чистоты эксперимента создал абсолютно новый проект с одной единственной фунцией и...
все естесственно заработало....
смотрел естественно пошажно.
Весь прикол в том был, что по ошибке вычисления проводились в прерывании.
И получалось так, что еще до окончания вычисления, прерывания вызывалось вновь и т.д.
Смотрел я в протесе, и только потом еще обратил внимание что он тупить начал и файл подкачки перевалил за гиг.
Перенес в основной цикл, где ему и положено быть, и все конечно заработало.
Но как не говорится что бог не делает - все к лучшему.
В поисках функций вычисления косинуса я наткнулся на одну отличную реализацию, идеально подходящую под мою задачу.
Она позволяла без вычислений этого самого косинуса "рисовать" синусоиду различной амплитуды и частоты, использую для этого всего лишь таблично заданную "половинку синусоиды". Причем сразу 3 фазы, сдвинутые на 120 градусов. Очень компактный и шустрый алгоритм.