|
|
  |
Генерация синуса, stm32f405 CooCox |
|
|
|
Dec 14 2012, 07:36
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
QUOTE (stm32f4 @ Dec 14 2012, 10:23)  Всем привет) Народ подскажи , существует ли возможность генерации значений синуса?например какаяниб функция, которая будет генерировать синус заданной амплитуды с определенным кол точек!Как можно проще сделать фазовый сдвиг, этого синуса ? Само сбой можно заранее заготовить массивы значений и потом делить/умножать его, но этот вариант мне не совсем подходит( в си есть библиотека math.h . Там есть функция синуса, косинуса . Используйте. float p = 2 * 3.141592653589 / 8; // будет 8 отсчетов на период for(i=0; i<64; i++) { Re[i] = A*cos(p * i); // заполняем действительную часть сигнала Im[i] = 0.0; // заполняем мнимую часть сигнала } зы пример из проверки 64 точечного БПФ
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Dec 14 2012, 09:34
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Dec 14 2012, 10:39
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Dec 14 2012, 11:07
|

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

|
Цитата(Сергей Борщ @ Dec 14 2012, 12:39)  И чем же нас fixed point не устраивает? коэффициент умножить, результат поделить.  Ну нас то устраивает, но если бы все было так просто стал бы стартер спрашивать? Цитата(Сергей Борщ @ Dec 14 2012, 12:39)  Работает прекрасно. sin(), кстати, в целых числах тоже может лишь 1,0,-1 выдавать, значит, вольно или невольно, но фиксированную точку использовать придется. Ну он и в тех трех как бы не совсем целые выдает, но не в этом суть. А в том, что если стартеру нужно очень быстро и сразу в int то быстрее чем на IIR у него не выйдет(ну разве что таблица), но первые значения(переходной процесс) все-равно придется отбрасывать - и перестройка по частоте получается не мгновенная - это да, минус.
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Dec 14 2012, 11:54
|
;
     
Группа: Участник
Сообщений: 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
Сообщение отредактировал _Pasha - Dec 14 2012, 11:55
|
|
|
|
|
Dec 27 2012, 20:17
|
Участник

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

|
Цитата(_Pasha @ Dec 14 2012, 15:54)  С учетом наличия FPU cordic тама suxx  А что такое FPU?Само само собой википедию и многие статьи я прочитал)Но как его применить к генерации синуса- я не оч понял(В даташите по поводу fpu ничего конкретного нет, одни регистры!!! По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405(((
|
|
|
|
|
Dec 28 2012, 08:41
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(stm32f4 @ Dec 28 2012, 00:17)  А что такое FPU?Само само собой википедию и многие статьи я прочитал) Вы бы еще на заборе что нибудь почитали Цитата По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405(((  Смотрим сайт ST ( http://www.st.com/internet/mcu/product/252144.jsp ) Цитата The Cortex-M4 core features a Floating point unit (FPU) single precision which supports all ARM single-precision data-processing instructions and data types. It also implements a full set of DSP instructions and a memory protection unit (MPU) which enhances application security. The Cortex-M4 core with FPU will be referred to as Cortex-M4F throughout this document. Цитата даташите по поводу fpu ничего конкретного нет Это надо искать не в DS, а в описании архитектуры Cortex M4 на сайте ARM - http://infocenter.arm.com/help/index.jsp?t...439c/index.html
|
|
|
|
|
Jan 30 2013, 18:40
|

Участник

Группа: Участник
Сообщений: 44
Регистрация: 20-01-13
Из: Украина, Киев
Пользователь №: 75 259

|
Цитата(stm32f4 @ Dec 27 2012, 22:17)  А что такое FPU?Само само собой википедию и многие статьи я прочитал)Но как его применить к генерации синуса- я не оч понял(В даташите по поводу fpu ничего конкретного нет, одни регистры!!! По-моему люди не поняли что я говорю о процессоре cortex m4 stm32f405(((  Правильно сказали выше. Самая простая функция F(x) = Amp * sin (2*pi*f + alpha) f - частота, Amp - амплитуда, alpha - начальная фаза
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|