реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> синус, таблица синуса
siriasis
сообщение Jun 4 2005, 11:21
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 40
Регистрация: 26-05-05
Пользователь №: 5 438



Мужики нужна таблица синуса на 256 отсчетов на 2313 . Опыты у самого мало. Может вы чем- нибудь поможете.
Go to the top of the page
 
+Quote Post
sergunas
сообщение Jun 4 2005, 12:15
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373



а что тут сложного!? Если только не знать что такое синус? Или я что-то не понял в вопросе?
Хотя, действительно, не понял: что такое "на 2313"?
Go to the top of the page
 
+Quote Post
XShocK
сообщение Jun 4 2005, 14:01
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 60
Регистрация: 12-03-05
Из: Америка
Пользователь №: 3 295



2313 это частота? тогда нужна еще скорость потока.
если 2313 это амплитуда, тогда все равно нужна частота
int main()
{
double freq = 1.0;
double amp = 2313.0;
for(int i = 0; i < 256; i++)
cout << i << " - " << sin(2*3.1415*freq/256.0)*amp << endl;
}

или я тоже чего-то не понял
Go to the top of the page
 
+Quote Post
siriasis
сообщение Jun 4 2005, 18:05
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 40
Регистрация: 26-05-05
Пользователь №: 5 438



2313 это At90s2313/

Да мужики я молодой в этом деле, и Си пока не изучал. Только ассемблер потихоньку освоил. Так что не могли бы объяснить как на ассемблере написать таблицу.
Go to the top of the page
 
+Quote Post
vet
сообщение Jun 5 2005, 09:42
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(siriasis @ Jun 4 2005, 22:05)
2313 это At90s2313/

Да мужики я молодой в этом деле, и Си пока не изучал. Только ассемблер потихоньку освоил. Так что не могли бы объяснить как на ассемблере написать таблицу.
*


Да элементарно. Таблица - набор чисел (скажем, байт), следующих во FLASH друг за другом. Произвольные байты размещаются в памяти ассемблерной директивой .DB n1, n2, ...
Взять число из таблицы по индексу - значит, вычислить смещение от начала этого набора и выполнить команду LPM.
С расчётом таблицы, думаю, проблем не возникнет )

Как результат, имеем примерно такой код:
Код
;п/п принимает индекс в регистре R30, возвращает значение таблицы в регистре R0
get_sin:
         ldi r31,0
         subi r30,-low(sintable*2)
         sbci r31,-high(sintable*2)
         lpm
         ret

sintable:
         .db   0,  1,  2,  3,  5,  6,  7,  8,  9, 10, 11, 12, 13, 15, 16, 17
         .db .....все остальные значения


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
siriasis
сообщение Jun 5 2005, 19:00
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 40
Регистрация: 26-05-05
Пользователь №: 5 438



Спасибо большое за код.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016