Реально ли сделать цифровой фильтр частот на AVR-ке? Если да, то сколько паралельно фильтров "влезит"? Сейчас я имею ввиду не только фильтры под светомузыку, но и для обработки звука с дальнейшим выводом через ЦАП
Цифровой фильтр на МК
Хотел сделать светомузыку на МК...Придумывал разные алгоритмы обработки показаний с АЦП, в результате чтоб красиво мигали светодиоды под музыку, но понесло меня в другую сторону...не буду спешить рассказывать, что вышло - сразу хочу задать вопрос.
Реально ли сделать цифровой фильтр частот на AVR-ке? Если да, то сколько паралельно фильтров "влезит"? Сейчас я имею ввиду не только фильтры под светомузыку, но и для обработки звука с дальнейшим выводом через ЦАП
Реально ли сделать цифровой фильтр частот на AVR-ке? Если да, то сколько паралельно фильтров "влезит"? Сейчас я имею ввиду не только фильтры под светомузыку, но и для обработки звука с дальнейшим выводом через ЦАП
- Реклама
- Сообщения: 200
- Зарегистрирован: Пт ноя 17, 2006 21:57:43
Т.е. преобразование Фурье (пусть даже быстрое ПФ) на AVR в реальном времени? Не хочу огорчать, но это мне кажется малореальным. Не потянет AVR. Надо чего-нибудь помощьнее. Возможно ARM какой-нибудь справится.Томатный писал(а):Реально ли сделать цифровой фильтр частот на AVR-ке?
Может имеет смысл подумать над несколькими аналоговыми фильтрами, управляемыми при помощи МК?
Телерадиокошак не прав.
AVR в состоянии выполнять БПФ для целей цветомузыки для любого разумного числа каналов (думаю, 32 канала - это уже выходит за рамки разумного)
Для настоящей ЦОС, конечно, AVR не пойдет, но для цветомузыки и т.п. "индикаторных" штучек - запросто. кстати, для цветомузыки можно применять куда более простые алгоритмы, чем БПФ - начиная от простого алгоритма дискриминации длительностей импульсов (я реализовывал его даже на AT89C2051 - во много раз менее производительном МК, чем AVR) до преобразования Хартли, Уолша и т.п.
AVR в состоянии выполнять БПФ для целей цветомузыки для любого разумного числа каналов (думаю, 32 канала - это уже выходит за рамки разумного)
Для настоящей ЦОС, конечно, AVR не пойдет, но для цветомузыки и т.п. "индикаторных" штучек - запросто. кстати, для цветомузыки можно применять куда более простые алгоритмы, чем БПФ - начиная от простого алгоритма дискриминации длительностей импульсов (я реализовывал его даже на AT89C2051 - во много раз менее производительном МК, чем AVR) до преобразования Хартли, Уолша и т.п.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 200
- Зарегистрирован: Пт ноя 17, 2006 21:57:43
Телерадиокошак писал(а):Т.е. преобразование Фурье (пусть даже быстрое ПФ) на AVR в реальном времени?
Помоему это звётся операцией свертки. Да.
Это по-моему не интересно. Это я так понял тоже может называться програмируемым фильтром? Хотелось бы всётаки на цифре...Телерадиокошак писал(а):Может имеет смысл подумать над несколькими аналоговыми фильтрами, управляемыми при помощи МК?
Вобщем я тоже думал что не реально, но один интересный человек натолкнул меня на эту идею очень уверено, что я решил попробовать. И вроди как получилось! Но на 99%
Скрины с протеуса:




и самое обидное, что эти скриншоты были зделаны, до того как были обнаружены серьезные ошибки в программе... После исправления сигнал стал какойто грубый, и вобще, очень тяжело выяснить причину ошибок... Во первых как подать сигнал на АЦП так, чтобы сигнал полностью попадал в рамки 0..255 и нулевой потенциал имел значение 128 ? и во вторых, как можно вывести 24-битное значение например? и в третих, как отследить переполнение числа в доп коде? Вобщем мозги кипят, оно то работает то нет.
В железе на слух особо не отличается от протеуса... иногда добивался нормального звучания, но были счелчки...
- Реклама
А можно подробнее о этих алгоритмах для "индикаторных" штучек?ARV писал(а):Телерадиокошак не прав.
AVR в состоянии выполнять БПФ для целей цветомузыки для любого разумного числа каналов (думаю, 32 канала - это уже выходит за рамки разумного)
Для настоящей ЦОС, конечно, AVR не пойдет, но для цветомузыки и т.п. "индикаторных" штучек - запросто. кстати, для цветомузыки можно применять куда более простые алгоритмы, чем БПФ - начиная от простого алгоритма дискриминации длительностей импульсов (я реализовывал его даже на AT89C2051 - во много раз менее производительном МК, чем AVR) до преобразования Хартли, Уолша и т.п.
Хочу зделать
Ещё по поводу скриншотов. Можно подумать, что сигнал фильтруется не от самой программы, а изза того, что преобразования происхотяд с небольшой частотой, и поэтому физически не улавливает высокочастотные сигналы... Но, что я хочу сказать... Сам алгоритм этого преобразования фурье получается вписывается в 300-400 тактов кристала, если я конечно его правильно зделал
Кста, частота кристала 16 мГц и делитель на АЦП = 32. Это около 38 кГц дискретизация... А прерывание получается через каждые 416 тактов кристала
алгоритм БПФ в 400 тактов - это либо не верно реализованный алгоритм, либо для очень малого числа отсчетов (наверное, не более
. БПФ, кстати, не очень хорошо подходит для фильтрации - он очень удачно позволяет определить спектр сигнала, а вот с фильтрацией там уже хуже - надо учитывать и фазу спектральных составляющих, да и выполнять не только прямое, но и обратное преобразхование... в общем, это явно слишком сложно...
на счет "алгоритмов индикаторных штучек" - здесь была тема "цветомузыка на МК" (по-моему, так называлась), в ней я немного об этом говорил. У меня на сайте есть микро-проектики с реализацией этого алгоритма на 51-ом семействе. Есть и анализатор спектра, уже на БПФ и AVR.
на счет "алгоритмов индикаторных штучек" - здесь была тема "цветомузыка на МК" (по-моему, так называлась), в ней я немного об этом говорил. У меня на сайте есть микро-проектики с реализацией этого алгоритма на 51-ом семействе. Есть и анализатор спектра, уже на БПФ и AVR.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Дык поделились бы исходниками, если это не военно-коммерческая тайна, а то все обещаете, обещаете... 
Оптимизм х (Опыт + Знания) = const
что касается алгоритма "дискриминации длительностей импульсов" - то сам алгоритм я словесно описал давным давно - кому надо, пусть прочтет (или у меня на сайте или здесь в обсуждениях на форуме). исходник я публиковал в журнальных статьях о 51-ых МК - он на асме для 51-ых, так что толку для AVR-щиков от него немного...
если речь о БПФ - то исходников и без меня пруд пруди ...
и, в общем-то, я ничего не обещал...
если речь о БПФ - то исходников и без меня пруд пруди ...
и, в общем-то, я ничего не обещал...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Оптимизм х (Опыт + Знания) = const
не хотите годы ждать - я выложил модуль энкодера 
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 13796
- Зарегистрирован: Чт сен 20, 2007 14:08:00
есть готовая реализация бпф для авр
на 3 канала влезет
у меня была такая идея, но в силу лени и тупости я от нее отказался
проще 3 фильтра аналоговых поставить и мк использовать для шима или просто переключать лампочки 8 каналов
можно еще сделать бит детектор для канала стробоскопа
плюс мк тут в реализации компрессора
на 3 канала влезет
у меня была такая идея, но в силу лени и тупости я от нее отказался
проще 3 фильтра аналоговых поставить и мк использовать для шима или просто переключать лампочки 8 каналов
можно еще сделать бит детектор для канала стробоскопа
плюс мк тут в реализации компрессора
я делал по этому алгоритму: http://www.sibsutis.ru/~mavr/MPiDSP/dsp104.htmARV писал(а):алгоритм БПФ в 400 тактов - это либо не верно реализованный алгоритм, либо для очень малого числа отсчетов (наверное, не более. БПФ, кстати, не очень хорошо подходит для фильтрации...
могу выложить исходники и проект протеуса, только сначало нужно понасписывать коментариев в код, чтоб хоть чучуть было понятно что я там понабирал))
Такой вопрос. Кто умеет составлять импульсную характеристику для метода по ссылке, желательно для моего случая? я её приблизительно составил по рисунку(может в этом и проблема?). у меня кстати 29 коефициентов...
Спасибо, лучше ими(штучками) и займусьARV писал(а):на счет "алгоритмов индикаторных штучек"...
делитесьkalobyte писал(а):есть готовая реализация бпф для авр
это не БПФТоматный писал(а):я делал по этому алгоритму: http://www.sibsutis.ru/~mavr/MPiDSP/dsp104.htm
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
мне от этого не легчеARV писал(а):это не БПФ
Давайте, конечно, поковыряем.Томатный писал(а):могу выложить исходники и проект протеуса
Оптимизм х (Опыт + Знания) = const
Та вот только-что доделал!!!
Начал коменты писать на каждую строчку и нашел несколько грубых ошибок, правда это стоило 3х лишних строк в цикле, что зделало алгоритм на 500 циклов
пришлось понизить дискретность в 2 раза...но если заюзать мегу88 с кристалом 20 мГц, то этим её можно немного повысить... ещё есть вариант уменьшить число коефициентов, сейчас какраз попробую на сколько это ефективно(http://www.sibsutis.ru/~mavr/MPiDSP/dsp104.htm)
Вобщем сейчас всё выложу...
Начал коменты писать на каждую строчку и нашел несколько грубых ошибок, правда это стоило 3х лишних строк в цикле, что зделало алгоритм на 500 циклов
Вобщем сейчас всё выложу...
вот берике кому нада цяцька 
толку с него мало, 8 бит всётаки, но рад что доделал (надеюсь всетаки доделал)
Чтоб юзать делитель 32, нужно уменьшить кол коефициентов до 23-х
думаю от этого никто не пострадает
на счет импульсной характеристики - не знаю даже как её делать, как уже говорил набросал визуально с картинки... если кто-то подскажет будит очень хорошо
и ещё там если юзать 16 битный выход, то получается небольшой глюк:

это я так понял изза последовательного вывода сначало одного байта, а потом другого(интервал равен длительности такта)
а так вроди все красиво, особено если в протеусе всунуть аудиофайл и пропустить через фильтр

Спасибо NiTr0 за идею, помощь и поддержку
толку с него мало, 8 бит всётаки, но рад что доделал (надеюсь всетаки доделал)
Чтоб юзать делитель 32, нужно уменьшить кол коефициентов до 23-х
думаю от этого никто не пострадает
на счет импульсной характеристики - не знаю даже как её делать, как уже говорил набросал визуально с картинки... если кто-то подскажет будит очень хорошо
и ещё там если юзать 16 битный выход, то получается небольшой глюк:

это я так понял изза последовательного вывода сначало одного байта, а потом другого(интервал равен длительности такта)
а так вроди все красиво, особено если в протеусе всунуть аудиофайл и пропустить через фильтр

Спасибо NiTr0 за идею, помощь и поддержку
- Вложения
-
- kih_filter_mega8.rar
- WOOHOO !!!
- (43.44 КБ) 641 скачивание
- Сообщения: 13796
- Зарегистрирован: Чт сен 20, 2007 14:08:00


