Форум РадиоКот https://radiokot.ru/forum/ |
|
FFT (БПФ) в CodeVisionAVR https://radiokot.ru/forum/viewtopic.php?f=57&t=64212 |
Страница 1 из 1 |
Автор: | PowerCPLD [ Чт фев 09, 2012 13:15:16 ] |
Заголовок сообщения: | FFT (БПФ) в CodeVisionAVR |
Добрый день, уважаемые Коты! Требуется Ваша помощь. Перерыл все интернеты и наш форум в частности, но так и не нашёл необходимого. В общем, нужен пример использования быстрого преобразования Фурье для CVAVR. Задача простая: считывать сигнал с АЦП контроллера AVR, выделить его спектр, вывести результат на 8-ми битный порт(каждому выводу которого соответствует свой диапазон частот). В итоге должна получиться ЦМУ Знаю о существовании прекрасной библиотеки http://elm-chan.org/works/akilcd/report_e.html но она для avr-gcc, а работать я умею только с CVAVR, а перекомпилировать под свою среду у меня не получается, хотя очень хочется использовать ту библиотеку. Добавлю: не для коммерческих целей и не для курсового/диплома: только спортивный интерес. Вся надежда остаётся только на Вас: сам я пока не обладаю достаточными знаниями даже для того, чтобы перекомпилировать библиотеку Чана, а не то чтобы с нуля написать свою:cry: |
Автор: | pyzhman [ Чт фев 09, 2012 13:23:40 ] | ||
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR | ||
В файле variables.c нужные переменные. Ненужные выкинуть, т.к. этот файл выдернут из исходника. Ну и сам FFT. PS. Счас проверю прикрепляемость. ![]() PPS. Оппа, прикрепилось!
|
Автор: | PowerCPLD [ Чт фев 09, 2012 13:59:57 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
pyzhman, при попытке компиляции выдаёт несколько ошибок(компилятор - CVAVR 2.04.4a): 2 штуки undefined symbol 'PI' - их я исправил введя переменную float PI=3.1415; - правильно ли я сделал? 4 штуки undefined symbol 'sin' - к чему относится "sin" ? Также выскакивает Warning: included from: 1.c: overflow is possible in 16 bit addition, casting to 'long' may be required , несмотря на то, что тип проблемной переменной указан как long int Честно говоря, недалеко продвинувшемуся тяжело разобраться в этом коде, тут ещё и TWI переплетается, пытаюсь вычистить код. Ну и после всего, как же в итоге сравнивать полученный результат с критериями(нужными диапазонами?) ![]() |
Автор: | pyzhman [ Чт фев 09, 2012 14:14:13 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
Прицепите библиотеку math.h. Пи и синусы появятся. На варнинг забить. Результат преобразования заносится в исходный массив. Делаем с ним то, что хотим. |
Автор: | PowerCPLD [ Чт фев 09, 2012 14:50:57 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
Есть ещё несколько вопросов: atmega8 эту функцию не потянет, как я вижу? Используется аж 2184 байта SRAM ![]() ![]() Как я понимаю нужно произвести несколько замеров, скажем 32. Чем больше замеров будут производиться, тем медленнее будет работать преобразование, но точнее результат. Вот есть у нас вход АЦП. Есть функция fft. Что делать дальше? ![]() |
Автор: | pyzhman [ Пт фев 10, 2012 06:34:02 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
mega8 не потянет, т.к. не тот объем памяти. Мною использовалась mega64. Исходный массив - куда забиваются считанные с АЦП данные. Размерность массива кратна двойке. Использование: вызов функции, все готово, в этом массиве находятся частоты и соответствующие им амплитуды. Можно отдельно прогнать через окно, чье-либо. В свое время взято с Код: /*********************************************************************** This code is generated by the AlgoPascal translator This code is distributed under the ALGLIB license (see http://www.alglib.net/copyrules.php for details) ***********************************************************************/ Там было описание что, как и куда. Посмотрите. PS. Может Чан все-таки проще? Картинки во всяком случае красивые. |
Автор: | TRIOD [ Пт фев 10, 2012 14:26:44 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
Попробуй использовать исходник вот отсуда http://www.waitingforfriday.com/index.php/Real-Time_Audio_Spectrum_Analyser. Там правда на пике, но путём несложных монипуляций переделывается под AVR. У меня на 8меге работало. |
Автор: | PowerCPLD [ Пт фев 10, 2012 21:48:22 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
pyzhman, TRIOD, спасибо за отзывчивость! Использовать вырезок из AlgoPascal не имею желания, т.к. неоправданно высокие аппаратные потребности у данного кода. А вот ссылка TRIOD'а заинтересовала, визуально библиотека выглядит красиво и понятно, вызывая тем самым надежду. Сейчас я занят аппаратной разработкой(потому особо глубоко не вникал в последнюю ссылку), БПФ будет лишь частью фарша(и хотелось бы, чтобы главной и работоспособной частью) TRIOD, к Вам вопрос на будущее: для какого компилятора под AVR вы портировали представленный код? И может быть для уверенности поделитесь примером портированного Вами кода(для любого компилятора), если он ещё сохранился и не является военной тайной? |
Автор: | TRIOD [ Сб фев 11, 2012 10:05:45 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
Портировал на CVAVR. Да там и портировать особо нечего поскольку нативный Си. Исходники не сохронились. |
Автор: | alex08cb [ Вс дек 09, 2012 19:48:01 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
PowerCPLD писал(а): А вот ссылка TRIOD'а заинтересовала, визуально библиотека выглядит красиво и понятно, вызывая тем самым надежду. Интересно, добились ли Вы положительных результатов в портировании кода на CVAVR? |
Автор: | phanis [ Сб дек 22, 2012 16:49:01 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
TRIOD писал(а): Попробуй использовать исходник вот отсуда http://www.waitingforfriday.com/index.php/Real-Time_Audio_Spectrum_Analyser. Там правда на пике, но путём несложных монипуляций переделывается под AVR. У меня на 8меге работало. По этим исходникам пытаюсь разобраться с БПФ, промежуточный результат Вложение: компилятор IAR AVR
|
Автор: | phanis [ Пн дек 24, 2012 18:25:30 ] |
Заголовок сообщения: | Re: FFT (БПФ) в CodeVisionAVR |
Вот еще вариант, Вложение: все по тем же исходникам. При тактовой в 16 М и дискретизации 20000 Гц обновление происходит примерно каждые 8 мсек. Может кому то и пригодится.
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |