Обсуждаем контроллеры компании Atmel.
Ответить

Re: FFT на Си для AVR

Вс янв 15, 2017 21:00:36

возможно, я выступлю не в резонансе последних сообщений, но чем не устраивает знаменитая ченовская библиотека FFT, реализованная на ассемблере? она, правда, 16-битная, но зато проверенная...
не претендуя на истину в последней инстанции я предполагаю, что переплюнуть его будет очень непросто...

Re: FFT на Си для AVR

Вс янв 15, 2017 23:04:57

Всем устраивает, но прежде хотелось бы самому отработать вопрос в целях обучения.
КРАМ, большое спасибо за наводку! В avr studio использую теперь директиву PROGMEM для таблиц

Re: FFT на Си для AVR

Вс янв 15, 2017 23:32:00

еще, возможно, стоит нормировать на двоичную систему. Скажем, аргумент и результат не от 0 до 1 (или от 0 до 1000) а от 0 до 255 или от 0 до 65535. Так намного проще отлавливать переполнение и подстраивать под периферию.

Re: FFT на Си для AVR

Вс янв 22, 2017 08:41:31

хорошая идея, можно тогда заготовить таблицы, умноженные не на 1000, а на 1024, и затем вместо деления использовать X>>=10;

Re: FFT на Си для AVR

Вс янв 22, 2017 10:14:47

:hunger:
NebelWefer писал(а): и затем вместо деления использовать X>>=10;
зачем? зачем вообще что-то делить? разве ваше счастье уменьшится, если вы смиритесь с тем, что синус-косинус у вас будет не от 0 до 1, а от 0 до 1024? все в мире относительно... чем меньше делите, тем больше итог :)))

Re: FFT на Си для AVR

Вс янв 22, 2017 11:26:51

Итог может и больше, но модуль потом находить будет заметно дольше.
И, кроме того, достаточно часто требуется сохранение масштаба выходного сигнала по отношению к входному.
Идея с нормировкой коэффициентов под деноминатор 2^N - совершенно стандартна и используется практически всегда.

Re: FFT на Си для AVR

Вс янв 22, 2017 16:21:36

NebelWefer писал(а):зачем вообще что-то делить?

В общем то не обязательно, согласен, но без деления REx и IMx набегают свыше миллиарда, можно и в long не уложиться)
К тому же, чем больше RE и IM, тем больше итераций уходит на вычисление корня, чтобы достичь приемлемой точности.

Re: FFT на Си для AVR

Ср фев 01, 2017 19:53:13

Всем добрый вечер прошу помощи . На ножку ацп атмеги32 поступает такой сигнал , мне с этого сигнала нужна частота и выводить на lcd . Как это можно реализовать ?
Вложения
3.jpg
(197.43 KiB) Скачиваний: 529

Re: FFT на Си для AVR

Ср фев 01, 2017 22:45:55

На картинке смесь высоких и низких частот. Какую частоту вы хотите выводить на экран?
Может всё же выводить спектр если тема про БПФ?

Re: FFT на Си для AVR

Чт фев 02, 2017 00:04:11

Нужна НЧ частота от 10 до 150Гц

Re: FFT на Си для AVR

Чт фев 02, 2017 03:20:45

Надеюсь, сигнал оцифрован ? Если нет, то срочно это сделать. А потом найти локальные максимумы и минимумы - чем больше, тем точнее - и разделить их число на временной интервал, на котором они расположены, с учетом масштаба развертки . Делов-то ... И без FFT. Пото'м преобразовать результат в символьную строку и вывести на LCD, но это уже совсем другая песня, исполняемая в разделе "Периферия" .

Re: FFT на Си для AVR

Чт фев 02, 2017 04:28:24

Jack_A писал(а):И без FFT

Без спектрального анализа ничего путного в этом сигнале не измерить.
Совершенно непонятно что считать в этом сигнале "локальным". На каком интервале?
Там полно "минимумов" и "максимумов", которые находятся внутри других "минимумов" и "максимумов". Тогда можно ли первые считать таковыми?
:dont_know:

Re: FFT на Си для AVR

Чт фев 02, 2017 07:11:26

Q-ti писал(а):Нужна НЧ частота от 10 до 150Гц

Тогда сперва почистить сигнал аналоговым или цифровым полосовым фильтром, затем подать на вход частотомера. Но быть может что и в этой полосе имеются мощные гармоники со смесью других частот.
Откуда этот сигнал?
Какая должна быть точность измерений такого показометра?

Re: FFT на Си для AVR

Чт фев 02, 2017 09:37:24

uk8amk писал(а):Тогда сперва почистить сигнал аналоговым или цифровым полосовым фильтром, затем подать на вход частотомера.

Как можно "почистить" сигнал занимающий 4 октавы? От чего его можно "почистить"? :dont_know:
:)

Re: FFT на Си для AVR

Чт фев 02, 2017 11:06:18

На фото Q-ti по маркерам видно, что период колебаний сигнала 1 мс. Возможно, что это какая-то помеха или наводка. Исходя из потребностей в 150Гц максимум я и предложил фильтровать. Обычный полосно-пропускающий фильтр, хоть на операционнике, справится с такой задачей.
Если всё действительно так плохо и дело дойдёт до спектрального анализа, то сигнал очень желательно хорошо подготовить с учётом малого ДД АЦП и вычислительных возможностей AVR.

Re: FFT на Си для AVR

Пт фев 10, 2017 23:32:20

Доброй ночи попробую задать вопрос по другому .
Как реализовать вывод на lcd в цифрах частоты с максимальной амплитудой на промежутке от 0 до 120Гц. С частотой дискретизации 240 Гц .
Прошу помочь в написании кода , потому что в математике 0 :oops: .

Re: FFT на Си для AVR

Вс фев 12, 2017 11:23:14

Люди может есть у кого библиотека FFT на СИ поделитесь ?

Re: FFT на Си для AVR

Вс фев 12, 2017 17:01:31

https://github.com/mkschreder/avr-ultimate-driver-pack
Здесь есть fftradix библиотека, человек успел стянуть. Оригинальный сайт, с которого я её брал и дорабатывал для своего проекта, давно не работает, но что-то осталось.

Re: FFT на Си для AVR

Пн фев 20, 2017 09:19:50

Q-ti, либо можете реализовать алгоритм, который описал товарищ YS на 4й странице ветки. Он очень простой, а уже потом займетесь оптимизацией если вообще потребуется.

Re: FFT на Си для AVR

Ср май 03, 2017 20:10:54

Товарищи, а Вы как нормализуете результаты БФП или Герцеля?
Линейно или через логарифм?
Ответить