Вычисление COS

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Вычисление COS

Сообщение DimanVIP »

Доброго всем времени суток!
Возникла проблема с вычислением COSинуса в IAR. Никак не получается ни с использованием библиотеки math.h, ни со сторонними функциями. На выходе всегда получается одно и тоже число независимо от вводимого угла.
Может кто решал подобную задачу? Помоги пожалуйста!
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Реклама
Аватара пользователя
O-LED
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57
Контактная информация:

Re: Вычисление COS

Сообщение O-LED »

напиши свою функцию. Этож 3-5 строк всего.
KIT
Реклама
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Re: Вычисление COS

Сообщение DimanVIP »

Самая простая

#include <math.h>
...
for (i = 0; i <90 ; i++)
cosinus = cos(i);
....

cosinus всегда = 9.23231e-39.
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: Вычисление COS

Сообщение Meteor »

Посмотрите описание функции, в компьютерных сях аргумент представлен в радианах. А тут?
ЗЫ. Арккосинус Вашего значения 90 гр.
Может не обнуляется аргумент?
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Re: Вычисление COS

Сообщение DimanVIP »

Да пок каким бы соусом какое значение не толкал - ответ всегда один.
Что значит не обнуляется и какой аргумент?
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Реклама
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Re: Вычисление COS

Сообщение DimanVIP »

А вот с 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
Показаны только загоняемые значения, на которых возвращаемые значения меняются.
В промежутке между ними они НЕ МЕНЯЮТСЯ!
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Реклама
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Вычисление COS

Сообщение ibiza11 »

Код: Выделить всё

  while(1)
  {
    x=cos(3.1415/180*y);
    y++;
  }
Все прекрасно считает, от 1 до -1 и наоборот. y-unsigned char, x-float
Ставим плюсы: )
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Re: Вычисление COS

Сообщение DimanVIP »

АААААА-а-а-а-а-а.
Я с ума сойду скоро уже наверное....
Для чистоты эксперимента создал абсолютно новый проект с одной единственной фунцией и...
все естесственно заработало....

Буду копать.... я это дело так не оставлю...
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
kolobok0
Грызет канифоль
Сообщения: 296
Зарегистрирован: Ср дек 30, 2009 09:55:39

Re: Вычисление COS

Сообщение kolobok0 »

DimanVIP писал(а):...cosinus всегда = 9.23231e-39.
тупой вопрос.
а вы косинус смотрите на каждом проходе цикла или чисто в конце? :)

и не совсем тупой.
под дизазмом смотрели? пошажно? всё встанет на свои места. сам вызов имеется ввиду.

(круглый)
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Re: Вычисление COS

Сообщение DimanVIP »

смотрел естественно пошажно.
Весь прикол в том был, что по ошибке вычисления проводились в прерывании.
И получалось так, что еще до окончания вычисления, прерывания вызывалось вновь и т.д.
Смотрел я в протесе, и только потом еще обратил внимание что он тупить начал и файл подкачки перевалил за гиг.
Перенес в основной цикл, где ему и положено быть, и все конечно заработало.

Но как не говорится что бог не делает - все к лучшему.
В поисках функций вычисления косинуса я наткнулся на одну отличную реализацию, идеально подходящую под мою задачу.
Она позволяла без вычислений этого самого косинуса "рисовать" синусоиду различной амплитуды и частоты, использую для этого всего лишь таблично заданную "половинку синусоиды". Причем сразу 3 фазы, сдвинутые на 120 градусов. Очень компактный и шустрый алгоритм.

Вот так вот....
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Aleksis
Встал на лапы
Сообщения: 91
Зарегистрирован: Чт сен 13, 2007 16:44:46
Откуда: Минск

Re: Вычисление COS

Сообщение Aleksis »

DimanVIP, а не могли бы вы этой реализацией поделится?
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

Re: Вычисление COS

Сообщение DimanVIP »

Aleksis писал(а):DimanVIP, а не могли бы вы этой реализацией поделится?
Делюсь, в том виде в каком нашел. Там есть файл протоса, запустите и все увидите.
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Aleksis
Встал на лапы
Сообщения: 91
Зарегистрирован: Чт сен 13, 2007 16:44:46
Откуда: Минск

Re: Вычисление COS

Сообщение Aleksis »

Спасибо
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»