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

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
добрый вечер

■ 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. Разложить эти функции в ряды и посчитать. - медленно (деление и возведение в
степень не очень-то шустрые операции), но зато мало места код занимает.


... www.king-fix.da.ru

Re: Формирование SIN и COS.
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.



Re: Формирование SIN и COS.
Hello, Alexander Derazhne !

 >  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 аналогично.
 > Используются
 > две таблицы - "грубо" и "плавно" :-)). Hапример, одна на 90

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


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


Re: Формирование SIN и COS.
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.



Формирование SIN и COS.
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.


Re: Формирование SIN и COS.
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


Re: Формирование SIN и COS.
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.



Re: Формирование SIN и COS.
     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)

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

Site Timeline