FFT на Си для AVR
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: FFT на Си для AVR
возможно, я выступлю не в резонансе последних сообщений, но чем не устраивает знаменитая ченовская библиотека FFT, реализованная на ассемблере? она, правда, 16-битная, но зато проверенная...
не претендуя на истину в последней инстанции я предполагаю, что переплюнуть его будет очень непросто...
не претендуя на истину в последней инстанции я предполагаю, что переплюнуть его будет очень непросто...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: FFT на Си для AVR
Всем устраивает, но прежде хотелось бы самому отработать вопрос в целях обучения.
КРАМ, большое спасибо за наводку! В avr studio использую теперь директиву PROGMEM для таблиц
КРАМ, большое спасибо за наводку! В avr studio использую теперь директиву PROGMEM для таблиц
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: FFT на Си для AVR
еще, возможно, стоит нормировать на двоичную систему. Скажем, аргумент и результат не от 0 до 1 (или от 0 до 1000) а от 0 до 255 или от 0 до 65535. Так намного проще отлавливать переполнение и подстраивать под периферию.
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: FFT на Си для AVR
хорошая идея, можно тогда заготовить таблицы, умноженные не на 1000, а на 1024, и затем вместо деления использовать X>>=10;
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: FFT на Си для AVR
зачем? зачем вообще что-то делить? разве ваше счастье уменьшится, если вы смиритесь с тем, что синус-косинус у вас будет не от 0 до 1, а от 0 до 1024? все в мире относительно... чем меньше делите, тем больше итогNebelWefer писал(а): и затем вместо деления использовать X>>=10;
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- КРАМ
- Друг Кота
- Сообщения: 25152
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: FFT на Си для AVR
Итог может и больше, но модуль потом находить будет заметно дольше.
И, кроме того, достаточно часто требуется сохранение масштаба выходного сигнала по отношению к входному.
Идея с нормировкой коэффициентов под деноминатор 2^N - совершенно стандартна и используется практически всегда.
И, кроме того, достаточно часто требуется сохранение масштаба выходного сигнала по отношению к входному.
Идея с нормировкой коэффициентов под деноминатор 2^N - совершенно стандартна и используется практически всегда.
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: FFT на Си для AVR
NebelWefer писал(а):зачем вообще что-то делить?
В общем то не обязательно, согласен, но без деления REx и IMx набегают свыше миллиарда, можно и в long не уложиться)
К тому же, чем больше RE и IM, тем больше итераций уходит на вычисление корня, чтобы достичь приемлемой точности.
Re: FFT на Си для AVR
Всем добрый вечер прошу помощи . На ножку ацп атмеги32 поступает такой сигнал , мне с этого сигнала нужна частота и выводить на lcd . Как это можно реализовать ?
- Вложения
-
- 3.jpg
- (197.43 КБ) 551 скачивание
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: FFT на Си для AVR
На картинке смесь высоких и низких частот. Какую частоту вы хотите выводить на экран?
Может всё же выводить спектр если тема про БПФ?
Может всё же выводить спектр если тема про БПФ?
Re: FFT на Си для AVR
Нужна НЧ частота от 10 до 150Гц
Re: FFT на Си для AVR
Надеюсь, сигнал оцифрован ? Если нет, то срочно это сделать. А потом найти локальные максимумы и минимумы - чем больше, тем точнее - и разделить их число на временной интервал, на котором они расположены, с учетом масштаба развертки . Делов-то ... И без FFT. Пото'м преобразовать результат в символьную строку и вывести на LCD, но это уже совсем другая песня, исполняемая в разделе "Периферия" .
- КРАМ
- Друг Кота
- Сообщения: 25152
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: FFT на Си для AVR
Jack_A писал(а):И без FFT
Без спектрального анализа ничего путного в этом сигнале не измерить.
Совершенно непонятно что считать в этом сигнале "локальным". На каком интервале?
Там полно "минимумов" и "максимумов", которые находятся внутри других "минимумов" и "максимумов". Тогда можно ли первые считать таковыми?

-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: FFT на Си для AVR
Q-ti писал(а):Нужна НЧ частота от 10 до 150Гц
Тогда сперва почистить сигнал аналоговым или цифровым полосовым фильтром, затем подать на вход частотомера. Но быть может что и в этой полосе имеются мощные гармоники со смесью других частот.
Откуда этот сигнал?
Какая должна быть точность измерений такого показометра?
- КРАМ
- Друг Кота
- Сообщения: 25152
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: FFT на Си для AVR
uk8amk писал(а):Тогда сперва почистить сигнал аналоговым или цифровым полосовым фильтром, затем подать на вход частотомера.
Как можно "почистить" сигнал занимающий 4 октавы? От чего его можно "почистить"?
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: FFT на Си для AVR
На фото Q-ti по маркерам видно, что период колебаний сигнала 1 мс. Возможно, что это какая-то помеха или наводка. Исходя из потребностей в 150Гц максимум я и предложил фильтровать. Обычный полосно-пропускающий фильтр, хоть на операционнике, справится с такой задачей.
Если всё действительно так плохо и дело дойдёт до спектрального анализа, то сигнал очень желательно хорошо подготовить с учётом малого ДД АЦП и вычислительных возможностей AVR.
Если всё действительно так плохо и дело дойдёт до спектрального анализа, то сигнал очень желательно хорошо подготовить с учётом малого ДД АЦП и вычислительных возможностей AVR.
Re: FFT на Си для AVR
Доброй ночи попробую задать вопрос по другому .
Как реализовать вывод на lcd в цифрах частоты с максимальной амплитудой на промежутке от 0 до 120Гц. С частотой дискретизации 240 Гц .
Прошу помочь в написании кода , потому что в математике 0
.
Как реализовать вывод на lcd в цифрах частоты с максимальной амплитудой на промежутке от 0 до 120Гц. С частотой дискретизации 240 Гц .
Прошу помочь в написании кода , потому что в математике 0
Re: FFT на Си для AVR
Люди может есть у кого библиотека FFT на СИ поделитесь ?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: FFT на Си для AVR
https://github.com/mkschreder/avr-ultimate-driver-pack
Здесь есть fftradix библиотека, человек успел стянуть. Оригинальный сайт, с которого я её брал и дорабатывал для своего проекта, давно не работает, но что-то осталось.
Здесь есть fftradix библиотека, человек успел стянуть. Оригинальный сайт, с которого я её брал и дорабатывал для своего проекта, давно не работает, но что-то осталось.
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: FFT на Си для AVR
Q-ti, либо можете реализовать алгоритм, который описал товарищ YS на 4й странице ветки. Он очень простой, а уже потом займетесь оптимизацией если вообще потребуется.
-
NebelWefer
- Грызет канифоль
- Сообщения: 274
- Зарегистрирован: Чт апр 16, 2009 14:23:59
Re: FFT на Си для AVR
Товарищи, а Вы как нормализуете результаты БФП или Герцеля?
Линейно или через логарифм?
Линейно или через логарифм?
