/-\G 0 18 апреля, 2006 Опубликовано 18 апреля, 2006 · Жалоба Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 18 апреля, 2006 Опубликовано 18 апреля, 2006 · Жалоба Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26. поможем. НО не умалчивайте 1) характеристики сигналов: динамический диапазон, частота сэмплов 2) что вы хотите добиться фильтром. фильтр частотный? 3) точность фильтра. практика показывает что помочь будет проще, зная изначальную задачу. а может вам вообще фильтр как таковой не нужен...... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Proton 1 19 апреля, 2006 Опубликовано 19 апреля, 2006 · Жалоба Если тебе нужен неважно какой, лишь бы цифровой фильтр на AVR рекомендую почитать атмеловский Application Notes "AVR222: 8-Point Moving Average Filter". Прикрепляю его здесь. avr222.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kanzler 0 19 апреля, 2006 Опубликовано 19 апреля, 2006 · Жалоба Если тебе нужен неважно какой, лишь бы цифровой фильтр на AVR рекомендую почитать атмеловский Application Notes "AVR222: 8-Point Moving Average Filter". Прикрепляю его здесь. avr222.rar Хорошая вещь. Сам работаю с ней. Но вот вопросов много по этой штуке. В примере фильтр рассчитан на определённую частоту и определённую частоту выборок. Коэффициенты я рассчитываю в MatLab и в QED2000. Результаты получаются разные. Но не суть важно. Если кто работал с этим примером то просьба помочь разобраться вот с чем. Есть такая штука, называется - Scaling. Вот в этом месте я не очень понял суть. После того как вышеупомянутые программы выдают результат коэффициентов, они так же выдают значения сдвига выходных данных. Вопрос: Например QED2000 выдаёт значение сдвига 1 или -1, что они обозначают и как применить их в примере от Atmel? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
/-\G 0 19 апреля, 2006 Опубликовано 19 апреля, 2006 · Жалоба Спасибо за помощь, попробую разобраться с AVR222. Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал. Можно еще поподробнее написать о том, как расчитать коэффициенты фильтра по заданным характеристикам сигнала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 20 апреля, 2006 Опубликовано 20 апреля, 2006 · Жалоба Спасибо за помощь, попробую разобраться с AVR222. Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал. Можно еще поподробнее написать о том, как расчитать коэффициенты фильтра по заданным характеристикам сигнала. Не бывает "обычных" цифровых фильтров, по типу обычных стиральных порошков. Сформулируйте полностью задачу, поскольку вопрос у вас не получается задать. Что вы имеете на входе и что хотите получить на выходе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 20 апреля, 2006 Опубликовано 20 апреля, 2006 · Жалоба Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал. Imho если полоса сигнала неизменна, и сдвиг фазы не важен, может быть для такой задачи целесообразнее и проще реализовать аналоговый(ые) фильтр(ы). С выхода фильтра пропустить сигнал через опер с требуемым коэффициентом усиления и на АЦП AVR-ки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
/-\G 0 21 апреля, 2006 Опубликовано 21 апреля, 2006 · Жалоба Спасибо за ответы. Мне нужен КИХ фильтр, число коэффициентов от 5-10. Должно быть хорошее быстродействие. Результатом должен быть аналоговый сигнал, который можно прослушать, и увидеть разницу между начальным не обработанным сигналом. Еще кто-нибудь может подсказать как производить перемножение с помощью перемножающей матрицы.(Просто у меняесть пример фильтра, где умножение на коэффициенты заменено перемножающей матрицей) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 21 апреля, 2006 Опубликовано 21 апреля, 2006 · Жалоба Спасибо за ответы. Мне нужен КИХ фильтр, число коэффициентов от 5-10. Должно быть хорошее быстродействие. Результатом должен быть аналоговый сигнал, который можно прослушать, и увидеть разницу между начальным не обработанным сигналом. Еще кто-нибудь может подсказать как производить перемножение с помощью перемножающей матрицы.(Просто у меняесть пример фильтра, где умножение на коэффициенты заменено перемножающей матрицей) делать умножение с помошью матрицы(таблицы) безсмысленно. т.к. АВР делает умножение не медленнее адресации. только память израсходуете. как я понимаю ваша задача разделяется на 1) А-Ц преобразование 2) реализация цифрового фильтра 3) Ц-А преобразование собственно интересует точность. 8 бит хватит? вроде для звука худо-бедно подходит. скорость работы фильтра при количестве коэффициентов некритична, т.к. АВРка справится с примерно 200000 умножениями достаточно просто. (это из расчёта 1 умножение на коэффициент при частоте выборок 20кГц). Какой из КИХ фильтров Вы хотите реализовать? режекторный фильтр? полосовой? НЧ? ВЧ? при каких частотах пропускания/задержания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
/-\G 0 22 апреля, 2006 Опубликовано 22 апреля, 2006 · Жалоба Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 23 апреля, 2006 Опубликовано 23 апреля, 2006 · Жалоба Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере. если знаете Си, то вот Вам шаблончик на Ваш фильтр. double coeff[9] = {0.0,2.181e-02,7.557e-04,-.3226,.2943,.2943,-.3226,7.557e-04,2.181e-02}; double delay[9] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double KIH(double input){ double summ=0; int i; for (i=0;i<=7;i++){ delay[i] = delay[i+1]; summ += delay[i]*coeff[i]; } delay[8] = input; summ += delay[8]*coeff[8]; return summ; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Laksus 0 23 апреля, 2006 Опубликовано 23 апреля, 2006 · Жалоба http://www.caxapa.ru/mcu/wwwboard.html?id=...07512&todo=full http://elm-chan.org/works/vp/report.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 24 апреля, 2006 Опубликовано 24 апреля, 2006 · Жалоба Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере. Даю хороший совет. Почитайте книгу по ЦОС, например Айфичера (читается легко, хотя есть досадные ошибки перевода). В магазинах должна быть. Поймёте хотя бы что и к чему, какие бывают и как синтезируются фильтры. Потом поставьте матлаб, и посмотрите как фильтры там работают. Сейчас складывается такое ощущение, что вы стоите в чистом поле и просто не знаете в какую сторону бежать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 24 апреля, 2006 Опубликовано 24 апреля, 2006 · Жалоба Честно говоря несколько раз просматривал эту тему из любопытства. :) Т.е. насколько человеческий альтруизм может быть распространён. Похоже другие думают также как я, только не хотят огорчать тебя. :) Итак попробую подытожить. Тебе всегда помогут (сужу по себе) если у тебя конкретный вопрос, или нюанс какой-то, или упёрся и двигаться некуда! Но взять РАСЧИТАТЬ и НАПИСАТЬ за тебя ... Ты хоть вопрос изучи! У меня стоял когда-то такой вопрос. Поискал по поисковикам. Нашёл похожее на сайте TI. Изучил. Скачал программу QED2000. Кой чего разобрал. (явно меньше 10%) Написал, переписал 10 раз и в конце-концов добился результата! Конечно проще написать в форум и попросить написать за тебя. Но тогда следующий раз придётся поступать так-же... Да и в форум писать надо хотябы исходные данные подготовить (например частоту выборок не написал). Пойми даже если два фильтра по характеристикам весьма похожи, то всё равно прогу не заимствуешь. Надо выбрать тип фильтра, крутизну, коэффициенты, и т.д. и т.п. Это же не академическое программирование когда подпрограмме задаётся 150 параметров. Здесь в зависимости от задачи человек минимизирует/оптимизирует прогу и лишнее не пишет. Я например коэффициенты такие выбирал, чтобы сдвигами можно было. Ну и т.д. Короче давай напрягись хоть немного. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
/-\G 0 25 апреля, 2006 Опубликовано 25 апреля, 2006 · Жалоба Спасибоза помощь, за советы, я действительно раньше не занимался программированием ЦФ, тем более на микроконтроллере. Просто у меня задание по диплому сделать три Лабораторных работы(для следующег поколения студентов): ЦФ, Реверс, Перестройка по спектру(надо обрабатывать звук, а потом полученное воспроизвести в динамике компьтера). Необходимо наглядно продемонстрировать как на микроконтроллере можно реализовать Цифровую обработку сигнала - Задание руководителя. Я вообще то хотел на Delphi что-нибудь сделать. взял тему по прогаммированию - оказалось микроконтроллер. Подписался под дипломом, надо делать, делаю, но уже времени маловато остается, я хотел взять за основу эксперимент DSP на AVR http://elm-chan.org/works/vp/report.html. но не могу понять как там происходит умножение на заданные коэффициенты, и как с внешней памятью там работают. Там написано что нужно записать в память микроконтроллера два файла основной и переможающую таблицу, но ведь там память всего 2к, а файлы весят 1,5 и 2,4 кбайта. Извините я новичок, может задаю глупые вопросы, но до защиты диплома остается мало времени, а делать надо, я пытаюсь разобраться, но куда ни посмотри везде примеры на Си, а просто не понимаю как этот язык устроен. Хотел в дипломе попрограммировать, придется программировать, самому придумывать. Спасибо еще раз, что по крайней даете хорошие и правильные советы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться