Всем добрый вечер.
Возникла у меня проблема. Пытаюсь сделать анализатор спектра на atmega8, используя библиотеку avrfft, написанную специально для MegaAVRs. За основу брал код со страницы
http://www.jnutthailand.com/FFT.html, но ничем не могу открыть схему, приведенную там. Как нужно фильтровать звуковой сигнал? Сейчас на вход АЦП подаю звуковой сигнал амплитуды 2.5V, сдвинутый на 2.5V вверх (0V-5V). Но получаются редкие бары-банды (не знаю как правильно назвать эти столбики), а в целом скачат одновременно все 24 полоски. Есть проект в Протеусе + код под WinAvr (в приложении). Там нужно подать любую wav мелодию на вход АЦП (осторожно, генерация очень тормозит). Очень рассчитываю на вашу помощь.
Нажмите для просмотра прикрепленного файлаИ кстати как избежать проседания напряжения во время просчета fft в функции? В реальности диоды слегка мигают. Без этой функции свечение диодов стабильно. Нижняя полоска светится всегда.
Спасибо.
_Артём_
Sep 25 2012, 19:30
Цитата(Wart @ Sep 25 2012, 21:03)

И кстати как избежать проседания напряжения во время просчета fft в функции? В реальности диоды слегка мигают.
Вы хотите сказать что ядро так напрягается, что питание аж просаживается? Тогда схема питания кривая.
Или задержка на вычисления слишком большая?
Цитата(_Артём_ @ Sep 25 2012, 23:30)

Вы хотите сказать что ядро так напрягается, что питание аж просаживается? Тогда схема питания кривая.
Или задержка на вычисления слишком большая?
Значит второе, т.к диоды питаются от сдвиговых регистров, не от МК. За счет задержки на вычисление, импульс свечения получается немного длиннее, следовательно и яркость выше. Теперь буду думать как этого избежать. Мысли вслух. Спасибо.
_Артём_
Sep 25 2012, 23:43
Цитата(Wart @ Sep 26 2012, 00:34)

Теперь буду думать как этого избежать.
А чего там думать-то...
Если хотите вычислять в прерывании - разрешайте вложенные прерывания.
Если не хотите вложенных прерываний - ставьте в прерывании флаг, что прерывание было и в основной программе считайте (если флаг установлен).
Вы хотите сказать, что мега справляется с FFT реального звукового сигнала в реальном времени?
1. Если у вас 24 полоски (т.е. точки FFT), то на таком количестве дискрет FFT неэффективен.
2. Какова частота дискретизации? Не забывайте про теорему Котельникова, и давите аналоговым ФНЧ перед АЦП все, что выше половины частоты дискретизации
1. по ссылкам топикстартера используется Ченовская библиотека FFT - по-моему единственный действительно быстро работающий вариант FFT для AVR
2. AVR действительно справляется с FFT реального звукового сигнала в реальном времени благодаря этой библиотеке
3. я чуток модифицировал эту библиотеку в своих проектах и достигал вот этого
http://www.youtube.com/watch?v=WefMRAn6UZM&feature=g-upl и вот этого
http://www.youtube.com/watch?v=ol-tNkIDzks&feature=g-upl не говоря уже об этом
http://www.youtube.com/watch?v=VhUWL7wSMQA&feature=g-upl
ARV, нашел где почитать, буду разбираться.
_Артём_, спасибо
ARV, хотелось бы подробней, схемы хотяб. Какой сигнал подавать на АЦП? Через что пропускать?
я в своих тестовых проектах, видео которых приводил ранее, подавал на вход АЦП сигнал без всяких усилителей и фильтров: делителем смещал уровень на входе на 1,25В и через конденсатор подавал сигнал. для "настоящих" проектов, естественно, необходим на входе фильтр, желательно активный, желательно высоких порядков, с полосой пропускания не шире анализируемой полосы сигнала, и при этом частота среза должна быть не менее чем в 2 раза ниже, чем частота дискредитации АЦП. для "цветного" спектроанализатора 10х16 я использовал двухэтапное FFT, т.к. иначе получить логарифмическую сетку частот не выйдет - не хватит у AVR силенок, а для этого случая потребуется 2 фильтра с разной частотой среза.
схема простейшего анализатора 8х8 есть на моем сайте (см. профиль).