Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: синус
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
siriasis
Мужики нужна таблица синуса на 256 отсчетов на 2313 . Опыты у самого мало. Может вы чем- нибудь поможете.
sergunas
а что тут сложного!? Если только не знать что такое синус? Или я что-то не понял в вопросе?
Хотя, действительно, не понял: что такое "на 2313"?
XShocK
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;
}

или я тоже чего-то не понял
siriasis
2313 это At90s2313/

Да мужики я молодой в этом деле, и Си пока не изучал. Только ассемблер потихоньку освоил. Так что не могли бы объяснить как на ассемблере написать таблицу.
vet
Цитата(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 .....все остальные значения
siriasis
Спасибо большое за код.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.