Формирование SIN и COS.

добрый вечер

■ Message posted by Dmitry Sokolov to All ■ Subject: Формирование SIN и COS.

DS> Kак программно (на asm или с++) сформировать сигнал SIN и СОS, выводя DS> их на порт P1 (на линии P1.0 и P1.1) контроллера С164СI ?

А как вообще посчитать синус/косинус знаешь? Есть два варианта:

  1. Использовать таблицу - много места, но зато высокая скорость работы
  2. Разложить эти функции в ряды и посчитать. - медленно (деление и возведение в степень не очень-то шустрые операции), но зато мало места код занимает.

...

formatting link

Reply to
Sasha Leshinsky
Loading thread data ...

Hello, Sasha! You wrote to Dmitry Sokolov on Sat, 06 Dec 2003 15:12:36 +0300:

DS>> Kак программно (на asm или с++) сформировать сигнал SIN и СОS, DS>> выводя их на порт P1 (на линии P1.0 и P1.1) контроллера С164СI ?

SL> А как вообще посчитать синус/косинус знаешь? SL> Есть два варианта:

SL> 1. Использовать таблицу - много места, но зато высокая скорость SL> работы SL> 2. Разложить эти функции в ряды и посчитать. - медленно (деление и SL> возведение в степень не очень-то шустрые операции), но зато мало SL> места код занимает.

Есть третий и четвёртый :-). sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b), для cos аналогично. Используются две таблицы - "грубо" и "плавно" :-)). Например, одна на 90 значений с шагом в один градус и вторая, покрывающая этот самый градус с ещё более мелким шагом. Четвёртый способ - вариация вышеописанного, но вместо второй таблицы значения вычисляются через ряды - для малых углов достаточно одного-двух членов.

With best regards, Alexander Derazhne.

Reply to
Alexander Derazhne

Hello, Anatoly! You wrote to Alexander Derazhne on Sun, 07 Dec 2003 22:17:22 +0300:

DS>>>> выводя их на порт P1 (на линии P1.0 и P1.1) контроллера С164СI ? SL>>> А как вообще посчитать синус/косинус знаешь? AD>> Четвёртый способ - вариация вышеописанного, но вместо второй AM> Процессор EMU10K1 aka Soundblaster Live вычисляет синус и косинус, AM> генерируя на выходе тон, всего лишь двумя операторами ассемблера AM> этого процессора. Беда только - этот процессор умеет a=b*c+d в AM> 32-битовых значениях. А умеют ли это эмбеднутые дивайсы - бабушка AM> надвое.

Это ведь рекуррентная формула? Т.е. генерируется именно тон, а не функция произвольного вргумента?.

With best regards, Alexander Derazhne.

Reply to
Alexander Derazhne

Hello, Alexander Derazhne !

Да какое там грубо и плавно, если нужно всего 2 разряда? Маленькой таблицей все решается.

С уважением, Дима Орлов.

Reply to
Dima Orlov

Dear Sasha,

06 Dec 03 15:12, Sasha Leshinsky wrote to Dmitry Sokolov:

DS>> Kак программно (на asm или с++) сформировать сигнал SIN и СОS, выводя DS>> их на порт P1 (на линии P1.0 и P1.1) контроллера С164СI ?

SL> А как вообще посчитать синус/косинус знаешь? SL> 1. Использовать таблицу SL> 2. Разложить эти функции в ряды и посчитать

... и сейчас все начнут рассказывать, как синусы считаются.

Читайте исходное письмо. Товарищ хочет на ногу P1.0 вывести синус, а на вторую ногу - косинус. Сигналы то есть такие. Аналоговые, если не вру :-)

Sincerely yours, Old Greaser.

Reply to
Serge Bryxin

Hello Alexander!

07 Dec 03 15:57, you wrote to Sasha Leshinsky:

DS>>> выводя их на порт P1 (на линии P1.0 и P1.1) контроллера С164СI ? SL>> А как вообще посчитать синус/косинус знаешь? AD> Четвёртый способ - вариация вышеописанного, но вместо второй Процессор EMU10K1 aka Soundblaster Live вычисляет синус и косинус, генерируя на выходе тон, всего лишь двумя операторами ассемблера этого процессора. Беда только - этот процессор умеет a=b*c+d в 32-битовых значениях. А умеют ли это эмбеднутые дивайсы - бабушка надвое.

Anatoly

Reply to
Anatoly Mashanov

Hello, Dima! You wrote to Alexander Derazhne on Sun, 07 Dec 2003 19:12:00 +0300:

DO> Hello, Alexander Derazhne !

DS>>>> Kак программно (на asm или с++) сформировать сигнал SIN и СОS, DS>>>> выводя их на порт P1 (на линии P1.0 и P1.1) контроллера С164СI ? DO> ~~~~~~~~~~~~~~~~~~~~~~~~~

DO> Да какое там грубо и плавно, если нужно всего 2 разряда? Маленькой DO> таблицей все решается.

Откуда я знаю, что там будет выводиться? ШИМ, последовательный канал, дельта-модуляция? Человек написал синус-косинус - он-то знает чего ему надо.

With best regards, Alexander Derazhne.

Reply to
Alexander Derazhne

Greetings, Alexander!

Посмотрел я мессагу, посланную Alexander Derazhne к Sasha Leshinsky, и решил ответить:

AD> Есть третий и четвёртый :-). AD> sin(a+b)=sin(a)*cos(b)+cos(a)*sin(b), для cos аналогично. AD> Используются две таблицы - "грубо" и "плавно" :-)). Hапример, одна на

Есть еще ваpиант, годится если необходим последовательный пеpебоp значений. Задаются начальные условия: SIN(0)=0, COS(0)=1, затем для пеpебоpа с шагом угла dFi используются фоpмулы: COS(Fi) = SIN'(Fi) SIN(Fi) = -COS'(Fi), ==>

Sin = Sin + Sin'(Fi) * dFi/(2*PI) = Sin + Cos*dFi/(2*PI) Cos = Cos + Cos'(Fi) * dFi/(2*PI) = Cos - Sin*dFi/(2*PI) ,где Sin и Cos - пеpеменные, содеpжащие текущие отсчеты (Fi).

C наилучшими пожеланиями Ilja aka ИЛ-2 (ilja_vlaskin$mail.ru)

... В Греческом зале, в Греческом зале...

Reply to
Ilja Vlaskin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.