FFT на Си для AVR

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: FFT на Си для AVR

Сообщение ARV »

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

Мой уютный бложик... заходите!
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: FFT на Си для AVR

Сообщение NebelWefer »

Всем устраивает, но прежде хотелось бы самому отработать вопрос в целях обучения.
КРАМ, большое спасибо за наводку! В avr studio использую теперь директиву PROGMEM для таблиц
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: FFT на Си для AVR

Сообщение COKPOWEHEU »

еще, возможно, стоит нормировать на двоичную систему. Скажем, аргумент и результат не от 0 до 1 (или от 0 до 1000) а от 0 до 255 или от 0 до 65535. Так намного проще отлавливать переполнение и подстраивать под периферию.
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: FFT на Си для AVR

Сообщение NebelWefer »

хорошая идея, можно тогда заготовить таблицы, умноженные не на 1000, а на 1024, и затем вместо деления использовать X>>=10;
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: FFT на Си для AVR

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: FFT на Си для AVR

Сообщение КРАМ »

Итог может и больше, но модуль потом находить будет заметно дольше.
И, кроме того, достаточно часто требуется сохранение масштаба выходного сигнала по отношению к входному.
Идея с нормировкой коэффициентов под деноминатор 2^N - совершенно стандартна и используется практически всегда.
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: FFT на Си для AVR

Сообщение NebelWefer »

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

В общем то не обязательно, согласен, но без деления REx и IMx набегают свыше миллиарда, можно и в long не уложиться)
К тому же, чем больше RE и IM, тем больше итераций уходит на вычисление корня, чтобы достичь приемлемой точности.
Q-ti
Встал на лапы
Сообщения: 134
Зарегистрирован: Чт ноя 17, 2011 00:57:23
Откуда: Харьков

Re: FFT на Си для AVR

Сообщение Q-ti »

Всем добрый вечер прошу помощи . На ножку ацп атмеги32 поступает такой сигнал , мне с этого сигнала нужна частота и выводить на lcd . Как это можно реализовать ?
Вложения
3.jpg
(197.43 КБ) 551 скачивание
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: FFT на Си для AVR

Сообщение uk8amk »

На картинке смесь высоких и низких частот. Какую частоту вы хотите выводить на экран?
Может всё же выводить спектр если тема про БПФ?
Q-ti
Встал на лапы
Сообщения: 134
Зарегистрирован: Чт ноя 17, 2011 00:57:23
Откуда: Харьков

Re: FFT на Си для AVR

Сообщение Q-ti »

Нужна НЧ частота от 10 до 150Гц
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: FFT на Си для AVR

Сообщение Jack_A »

Надеюсь, сигнал оцифрован ? Если нет, то срочно это сделать. А потом найти локальные максимумы и минимумы - чем больше, тем точнее - и разделить их число на временной интервал, на котором они расположены, с учетом масштаба развертки . Делов-то ... И без FFT. Пото'м преобразовать результат в символьную строку и вывести на LCD, но это уже совсем другая песня, исполняемая в разделе "Периферия" .
Изображение
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: FFT на Си для AVR

Сообщение КРАМ »

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

Без спектрального анализа ничего путного в этом сигнале не измерить.
Совершенно непонятно что считать в этом сигнале "локальным". На каком интервале?
Там полно "минимумов" и "максимумов", которые находятся внутри других "минимумов" и "максимумов". Тогда можно ли первые считать таковыми?
:dont_know:
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: FFT на Си для AVR

Сообщение uk8amk »

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

Тогда сперва почистить сигнал аналоговым или цифровым полосовым фильтром, затем подать на вход частотомера. Но быть может что и в этой полосе имеются мощные гармоники со смесью других частот.
Откуда этот сигнал?
Какая должна быть точность измерений такого показометра?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25151
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: FFT на Си для AVR

Сообщение КРАМ »

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

Как можно "почистить" сигнал занимающий 4 октавы? От чего его можно "почистить"? :dont_know:
:)
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: FFT на Си для AVR

Сообщение uk8amk »

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

Re: FFT на Си для AVR

Сообщение Q-ti »

Доброй ночи попробую задать вопрос по другому .
Как реализовать вывод на lcd в цифрах частоты с максимальной амплитудой на промежутке от 0 до 120Гц. С частотой дискретизации 240 Гц .
Прошу помочь в написании кода , потому что в математике 0 :oops: .
Q-ti
Встал на лапы
Сообщения: 134
Зарегистрирован: Чт ноя 17, 2011 00:57:23
Откуда: Харьков

Re: FFT на Си для AVR

Сообщение Q-ti »

Люди может есть у кого библиотека FFT на СИ поделитесь ?
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: FFT на Си для AVR

Сообщение WiseLord »

https://github.com/mkschreder/avr-ultimate-driver-pack
Здесь есть fftradix библиотека, человек успел стянуть. Оригинальный сайт, с которого я её брал и дорабатывал для своего проекта, давно не работает, но что-то осталось.
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: FFT на Си для AVR

Сообщение NebelWefer »

Q-ti, либо можете реализовать алгоритм, который описал товарищ YS на 4й странице ветки. Он очень простой, а уже потом займетесь оптимизацией если вообще потребуется.
NebelWefer
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 16, 2009 14:23:59

Re: FFT на Си для AVR

Сообщение NebelWefer »

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

Вернуться в «AVR»