Например TDA7294

Форум РадиоКот :: Просмотр темы - FFT на Си для AVR
Форум РадиоКот
https://radiokot.ru/forum/

FFT на Си для AVR
https://radiokot.ru/forum/viewtopic.php?f=57&t=37824
Страница 1 из 10

Автор:  Antibiotic [ Вт ноя 16, 2010 11:34:22 ]
Заголовок сообщения:  FFT на Си для AVR

Заранее извиняюсь перед модератором за создание темы по столь мелкому и возможно уже задававшемуся вопросу.
Господа Коты, поделитесь пожалуйста кодом БФП на Си без ассамблерных приблуд хотелось бы,если есть конечно :)
В высшей математике не силен,потому и сам написать не в состоянии подобную процедуру. Прошу помощи.
Заранее спасибо.

Автор:  ARV [ Вт ноя 16, 2010 11:39:27 ]
Заголовок сообщения:  Re: FFT на Си для AVR

можно поинтересоваться: для какой цели? FFT на чистом Си "без приблуд" будет очень медленным на AVR...

чисто Сишные реализации наверняка найдутся в википедии или просто на программистских форумах, посвященных обработке сигналов.

Автор:  Antibiotic [ Вт ноя 16, 2010 11:45:24 ]
Заголовок сообщения:  Re: FFT на Си для AVR

2 ARV:
Пока что просто для изучения и попытки постичь данный алгоритм. Просто с ассамблером не очень дружу. Если пример для АВР студии но там все самое интересное вынесено в ASM. Может быть есть ещё какие то алгоритмы для получения частотного спектра сигнала кроме БФП и ДФП ?

Автор:  ARV [ Вт ноя 16, 2010 11:56:59 ]
Заголовок сообщения:  Re: FFT на Си для AVR

алгоритмы-то есть, но для понимания они ничуть не проще, чем FFT или DFT. кстати, DFT - самое простое для понимания. если цель - освоить FFT вообще, то лучше делать это на компе, а не МК: и проще, и инстументарий удобнее, и готовых исходников море.

на мощные МК типа ARM, mega32 или dsPIC сишные тексты от компа переносятся практически без правки, а для простого AVR без ассемблерных вставок быстродействие такое, что FFT превращается в SFT - медленное преобразование Фурье :)))

Автор:  Antibiotic [ Вт ноя 16, 2010 12:38:55 ]
Заголовок сообщения:  Re: FFT на Си для AVR

спасибо большое за разъяснения.
SFT :))) :))) :))) получайте на него копирайт :)
Попробую на компе по колупать.

Автор:  GRAF [ Ср ноя 17, 2010 01:14:55 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Вот здесь очень простое описание БПФ
http://slonpts.narod.ru/algo/math/furie/06.html

Код реализации занимает менее 20 строк. Если нет необходимости восстанавливать сигнал, то фазу можно не считать.

Автор:  Antibiotic [ Ср ноя 17, 2010 11:00:16 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Спасибо, то что нужно.. "доступно и всерьез"

Автор:  YS [ Чт ноя 18, 2010 21:43:09 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Во! Спасибо! Тоже хотел преобразование Фурье поколупать! Изучаю ссылку...

Автор:  jordan [ Вт янв 08, 2013 22:54:04 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Здравствуйте коты разобравшиеся в преобразованиях Фурье!

Сейчас разбираюсь с ДПФ и БПФ... Поправите пожалуйста если не прав... Я так понимаю что мы берем N - количество выборок АЦП( например 1024), с частотой дискретизации например 44100 кГц... Потом после расчета действительной части, получаем N - амплитуд гармоник... Правильно ли я понял, что мы получаем 1024 частот гармонических колебаний, если да то какие это частоты (какие это 1024 частоты)?

Автор:  GRAF [ Ср янв 09, 2013 00:22:58 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Амплитуда гармоники вычисляется по формуле 4, если смотреть здесь.
Это корень квадратный из суммы квадратов действительной и мнимой частей.
Считая ДПФ по 1024 точкам, вы получаете 1024 отчета в частотной области. Всё верно.

При частоте дискретизации 44100 кГц (наверное имелось ввиду 44,100 кГц) частота гармоники считается f=m*Fдискр/N.
N=1024, m изменяется от 0 до 1024. Таким образом, например 1-я гармоника равна 1*44100/1024=0,043 кГц, вторая = 0,086 кГц. Следовательно, шаг получается 43 Гц.

Советую почитать Richard G. Lyons Understanding Digital Signal Processing. В этой книге на пальцах разбирается ДПФ, БПФ, всякие БИХ фильтры и прочие ДСПшные методы.

Автор:  Kavka [ Ср янв 09, 2013 06:24:04 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Может будет сильно круто, но есть такой сайтик - http://www.fftw.org/

Автор:  jordan [ Ср янв 09, 2013 11:50:18 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Спасибо GRAF, за формулу... Kavka за сайтик тоже спасибо, я правда его видел но не стал рыть так как он на английском, по английски понимаю, но по русски все равно лучше, если сайт стоящий поковыряем...
Буду разбираться если что обращусь за помощью :love:

А вообще есть желание замутить анализатор спектра аудио, в качестве практики и тренировки... конечно уже есть куча проектов, но хочеться разобраться и реализовать самому
:shock:

Автор:  phanis [ Ср янв 09, 2013 20:08:11 ]
Заголовок сообщения:  Re: FFT на Си для AVR

По ссылке который дал TRIOD
Переделав код под IAR AVR, получил 11 мсек на одно преобразование.
Мк Атмега8 тактовая 16 МГц. 128 точек. (можно использовать 32,64 или 128 точек)
исходник на СИ
Вложение:
MyFFT.rar [78.72 KiB]
Скачиваний: 1168
с примером проектом в протеусе.
Еще есть вариант elm-chan работает почти в двое быстрее , но там микс СИ и ассемблера.

Автор:  jordan [ Чт янв 10, 2013 10:22:55 ]
Заголовок сообщения:  Re: FFT на Си для AVR

phanis спасибо за инфу

Автор:  phanis [ Вс янв 13, 2013 10:13:21 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Вариант БПФ http://elm-chan.org/works/akilcd/report_e.html портированного в IAR_AVR. с примером в протеусе.
Код чуть весомее оригинала.
Время одного преобразования для 128 точек (7,18 мсек). МК Атмега 8, такт 16 МГц.
Вложение:
IAR_AVR_FFT_C_ASSEMB.rar [113.19 KiB]
Скачиваний: 760

Автор:  jordan [ Вс янв 13, 2013 21:01:15 ]
Заголовок сообщения:  Re: FFT на Си для AVR

phanis писал(а):
Вариант БПФ http://elm-chan.org/works/akilcd/report_e.html портированного в IAR_AVR. с примером в протеусе.
Код чуть весомее оригинала.
Время одного преобразования для 128 точек (7,18 мсек). МК Атмега 8, такт 16 МГц.
Вложение:
IAR_AVR_FFT_C_ASSEMB.rar



128 точек какой разрядности, 8 бит? 16? 32? и какой разрядности результаты?

Автор:  phanis [ Пн янв 14, 2013 11:17:45 ]
Заголовок сообщения:  Re: FFT на Си для AVR

16 /16 бит

Автор:  jordan [ Пн янв 14, 2013 15:19:48 ]
Заголовок сообщения:  Re: FFT на Си для AVR

phanis писал(а):
Вариант БПФ http://elm-chan.org/works/akilcd/report_e.html портированного в IAR_AVR. с примером в протеусе.
Код чуть весомее оригинала.
Время одного преобразования для 128 точек (7,18 мсек). МК Атмега 8, такт 16 МГц.
Вложение:
IAR_AVR_FFT_C_ASSEMB.rar


а частота дискретизации?

Автор:  phanis [ Пн янв 14, 2013 15:38:58 ]
Заголовок сообщения:  Re: FFT на Си для AVR

При использовании встроенного АЦП Атмеги, думаю до 15 кГЦ.

Автор:  jordan [ Пт янв 25, 2013 17:00:24 ]
Заголовок сообщения:  Re: FFT на Си для AVR

Продолжается изучение ДПФ и БПФ... написал простое приложение на C# ДПФ на 1024 отсчета, в качестве исследуемого сигнала взял сумму 3 гармоник с разными амплитудами... Алгоритм прост и отлично работает:

Код:
for (int k = 0; k < 1024; k++)
            {
                for (int n = 0; n < 1024; n++)
                {
                    x_real[k] += x_n[n] * Math.Cos( (-2) * Math.PI * k * n / 1024 );
                    x_imag[k] += x_n[n] * Math.Sin( (-2) * Math.PI * k * n / 1024);
                }

                x_Ampl[k] = Math.Sqrt( x_real[k] * x_real[k] + x_imag[k] * x_imag[k] );

               
            }


но наблюдается зеркальный эффект :cry:

вопрос следующий: стоит ли бороться с зеркальным эффектом, или просто не учитывать эти частоты так как они находятся за частотой найквиста и все равно не могут быть вычислены верно ???

Вложения:
Комментарий к файлу: зеркальный эффект
dft.JPG [72.39 KiB]
Скачиваний: 1372

Страница 1 из 10 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/