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

 
 
> Генерация синуса, stm32f405 CooCox
stm32f4
сообщение Dec 14 2012, 07:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-08-12
Пользователь №: 73 098



Всем привет) Народ подскажи , существует ли возможность генерации значений синуса?например какаяниб функция, которая будет генерировать синус заданной амплитуды с определенным кол точек!Как можно проще сделать фазовый сдвиг, этого синуса ?
Само сбой можно заранее заготовить массивы значений и потом делить/умножать его, но этот вариант мне не совсем подходит(

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Dec 14 2012, 09:34
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (stm32f4 @ Dec 14 2012, 09:23) *
но этот вариант мне не совсем подходит(
Чем не подходит? Еще можно генерить по алгоритму Герцеля. Пример тут и тут


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Dec 14 2012, 10:32
Сообщение #3


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(Сергей Борщ @ Dec 14 2012, 11:34) *
Чем не подходит? Еще можно генерить по алгоритму Герцеля. Пример тут и тут

...можно... Но я его так для integer и не научился эффективно применять. Это для fix или float скорее. Можно еще дифуром генерить - сопряженные полюса на единичной окружности и вуаля. Я тут недавно ссылку на книгу Роде и Шварца приводил.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 14 2012, 10:39
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (DRUID3 @ Dec 14 2012, 12:32) *
Это для fix или float скорее.
И чем же нас fixed point не устраивает? коэффициент умножить, результат поделить. Работает прекрасно. sin(), кстати, в целых числах тоже может лишь 1,0,-1 выдавать, значит, вольно или невольно, но фиксированную точку использовать придется.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Dec 14 2012, 11:07
Сообщение #5


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(Сергей Борщ @ Dec 14 2012, 12:39) *
И чем же нас fixed point не устраивает? коэффициент умножить, результат поделить.
biggrin.gif Ну нас то устраивает, но если бы все было так просто стал бы стартер спрашивать?

Цитата(Сергей Борщ @ Dec 14 2012, 12:39) *
Работает прекрасно. sin(), кстати, в целых числах тоже может лишь 1,0,-1 выдавать, значит, вольно или невольно, но фиксированную точку использовать придется.

Ну он и в тех трех как бы не совсем целые выдает, но не в этом суть. А в том, что если стартеру нужно очень быстро и сразу в int то быстрее чем на IIR у него не выйдет(ну разве что таблица), но первые значения(переходной процесс) все-равно придется отбрасывать - и перестройка по частоте получается не мгновенная - это да, минус.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 14 2012, 11:20
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(DRUID3 @ Dec 14 2012, 14:07) *
А в том, что если стартеру нужно очень быстро и сразу в int то быстрее чем на IIR у него не выйдет

Он еще и фазу хочет двигать.. Не пойдет дифур...
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Dec 14 2012, 11:37
Сообщение #7


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(_Pasha @ Dec 14 2012, 13:20) *
Он еще и фазу хочет двигать.. Не пойдет дифур...

Так чо? Фазу двигать там просто - частоту много сложнее. Дифур пишет в "кольцо", а по кольцу прыгай куда хошь. Этож гармоника.

Кстати у простейшего DDS построенного только на таком принципе нет и не может быть никакого "усечения фазы" - это на заметку тем кто разрабатывает "сверхчистые" синтезаторы.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 14 2012, 11:54
Сообщение #8


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(DRUID3 @ Dec 14 2012, 15:37) *
Так чо?

Тогда вообще красота
Код
Y[n+1] = K*Y[n] - Y[n-1]

Нестабильность по амплитуде вследствие простой перестройки K можно компенсировать на полупериоде. Кольцо только может быть большим.

Цитата(Lmx2315 @ Dec 14 2012, 15:48) *
..алгоритм CORDIC.

С учетом наличия FPU cordic тама suxx sm.gif

Сообщение отредактировал _Pasha - Dec 14 2012, 11:55
Go to the top of the page
 
+Quote Post
stm32f4
сообщение Dec 27 2012, 20:17
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 11-08-12
Пользователь №: 73 098



Цитата(_Pasha @ Dec 14 2012, 15:54) *
С учетом наличия FPU cordic тама suxx sm.gif

А что такое FPU?Само само собой википедию и многие статьи я прочитал)Но как его применить к генерации синуса- я не оч понял(В даташите по поводу fpu ничего конкретного нет, одни регистры!!!

По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405((( wacko.gif
Go to the top of the page
 
+Quote Post



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

 


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


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