FFT (БПФ) в CodeVisionAVR

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 4
Зарегистрирован: Ср сен 07, 2011 18:59:45

Сообщение PowerCPLD »

Добрый день, уважаемые Коты! Требуется Ваша помощь.

Перерыл все интернеты и наш форум в частности, но так и не нашёл необходимого.

В общем, нужен пример использования быстрого преобразования Фурье для CVAVR.

Задача простая: считывать сигнал с АЦП контроллера AVR, выделить его спектр, вывести результат на 8-ми битный порт(каждому выводу которого соответствует свой диапазон частот). В итоге должна получиться ЦМУ

Знаю о существовании прекрасной библиотеки http://elm-chan.org/works/akilcd/report_e.html но она для avr-gcc, а работать я умею только с CVAVR, а перекомпилировать под свою среду у меня не получается, хотя очень хочется использовать ту библиотеку.

Добавлю: не для коммерческих целей и не для курсового/диплома: только спортивный интерес. Вся надежда остаётся только на Вас: сам я пока не обладаю достаточными знаниями даже для того, чтобы перекомпилировать библиотеку Чана, а не то чтобы с нуля написать свою:cry:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

В файле variables.c нужные переменные. Ненужные выкинуть, т.к. этот файл выдернут из исходника. Ну и сам FFT.
PS. Счас проверю прикрепляемость. :)
PPS. Оппа, прикрепилось!
Вложения
temp.rar
(1.35 КБ) 573 скачивания
Docendo discimus
Контактная информация:
Реклама
Родился
Сообщения: 4
Зарегистрирован: Ср сен 07, 2011 18:59:45

Сообщение PowerCPLD »

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 переплетается, пытаюсь вычистить код. Ну и после всего, как же в итоге сравнивать полученный результат с критериями(нужными диапазонами?) :(
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Прицепите библиотеку math.h. Пи и синусы появятся. На варнинг забить.
Результат преобразования заносится в исходный массив. Делаем с ним то, что хотим.
Docendo discimus
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 4
Зарегистрирован: Ср сен 07, 2011 18:59:45

Сообщение PowerCPLD »

Есть ещё несколько вопросов: atmega8 эту функцию не потянет, как я вижу? Используется аж 2184 байта SRAM :o И очередное проявление моей глупости: что за исходный массив? И как правильно использовать функцию fft? :oops:

Как я понимаю нужно произвести несколько замеров, скажем 32. Чем больше замеров будут производиться, тем медленнее будет работать преобразование, но точнее результат. Вот есть у нас вход АЦП. Есть функция fft. Что делать дальше? :oops:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

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. Может Чан все-таки проще? Картинки во всяком случае красивые.
Docendo discimus
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Сообщение TRIOD »

Попробуй использовать исходник вот отсуда http://www.waitingforfriday.com/index.p ... m_Analyser.
Там правда на пике, но путём несложных монипуляций переделывается под AVR.
У меня на 8меге работало.
Только абсолютная пустота бездны принесёт мне покой.
Родился
Сообщения: 4
Зарегистрирован: Ср сен 07, 2011 18:59:45

Сообщение PowerCPLD »

pyzhman, TRIOD, спасибо за отзывчивость! Использовать вырезок из AlgoPascal не имею желания, т.к. неоправданно высокие аппаратные потребности у данного кода.

А вот ссылка TRIOD'а заинтересовала, визуально библиотека выглядит красиво и понятно, вызывая тем самым надежду.

Сейчас я занят аппаратной разработкой(потому особо глубоко не вникал в последнюю ссылку), БПФ будет лишь частью фарша(и хотелось бы, чтобы главной и работоспособной частью)

TRIOD, к Вам вопрос на будущее: для какого компилятора под AVR вы портировали представленный код? И может быть для уверенности поделитесь примером портированного Вами кода(для любого компилятора), если он ещё сохранился и не является военной тайной?
Вымогатель припоя
Аватара пользователя
Сообщения: 693
Зарегистрирован: Вт сен 15, 2009 16:23:06
Откуда: Москва

Сообщение TRIOD »

Портировал на CVAVR. Да там и портировать особо нечего поскольку нативный Си.
Исходники не сохронились.
Только абсолютная пустота бездны принесёт мне покой.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 189
Зарегистрирован: Пн мар 22, 2010 20:00:55
Откуда: Новосибирск

Сообщение alex08cb »

PowerCPLD писал(а):А вот ссылка TRIOD'а заинтересовала, визуально библиотека выглядит красиво и понятно, вызывая тем самым надежду.
Интересно, добились ли Вы положительных результатов в портировании кода на CVAVR?
Продолжение ЗУ по мотивам уважаемого Слона этой ветки.
Контактная информация:
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

TRIOD писал(а):Попробуй использовать исходник вот отсуда http://www.waitingforfriday.com/index.p ... m_Analyser.
Там правда на пике, но путём несложных монипуляций переделывается под AVR.
У меня на 8меге работало.
По этим исходникам пытаюсь разобраться с БПФ, промежуточный результат
MyFFT.rar
(83.47 КБ) 389 скачиваний
компилятор IAR AVR
Контактная информация:
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский

Сообщение phanis »

Вот еще вариант,
MyFFT2.rar
(85.8 КБ) 578 скачиваний
все по тем же исходникам. При тактовой в 16 М и дискретизации 20000 Гц обновление происходит примерно каждые 8 мсек. Может кому то и пригодится.
Контактная информация:
Ответить

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