|
Помогите сделать цифровой фильтр на AVR микроконтроллере, Цифровой фильтр на AVR микроконтроллере. |
|
|
|
Apr 18 2006, 19:22
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26.
|
|
|
|
|
Apr 18 2006, 20:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(ATMEL_AVR @ Apr 18 2006, 23:22)  Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26. поможем. НО не умалчивайте 1) характеристики сигналов: динамический диапазон, частота сэмплов 2) что вы хотите добиться фильтром. фильтр частотный? 3) точность фильтра. практика показывает что помочь будет проще, зная изначальную задачу. а может вам вообще фильтр как таковой не нужен......
|
|
|
|
|
Apr 19 2006, 03:51
|

Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 3-08-05
Из: Новосибирск
Пользователь №: 7 334

|
Если тебе нужен неважно какой, лишь бы цифровой фильтр на AVR рекомендую почитать атмеловский Application Notes "AVR222: 8-Point Moving Average Filter". Прикрепляю его здесь.
avr222.rar ( 19.86 килобайт )
Кол-во скачиваний: 1301
--------------------
Всяк хорошая мысля к нам приходит опосля.
|
|
|
|
|
Apr 19 2006, 04:49
|

Местный
  
Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728

|
Цитата(Proton @ Apr 19 2006, 09:51)  Если тебе нужен неважно какой, лишь бы цифровой фильтр на AVR рекомендую почитать атмеловский Application Notes "AVR222: 8-Point Moving Average Filter". Прикрепляю его здесь.
avr222.rar ( 19.86 килобайт )
Кол-во скачиваний: 1301Хорошая вещь. Сам работаю с ней. Но вот вопросов много по этой штуке. В примере фильтр рассчитан на определённую частоту и определённую частоту выборок. Коэффициенты я рассчитываю в MatLab и в QED2000. Результаты получаются разные. Но не суть важно. Если кто работал с этим примером то просьба помочь разобраться вот с чем. Есть такая штука, называется - Scaling. Вот в этом месте я не очень понял суть. После того как вышеупомянутые программы выдают результат коэффициентов, они так же выдают значения сдвига выходных данных. Вопрос: Например QED2000 выдаёт значение сдвига 1 или -1, что они обозначают и как применить их в примере от Atmel?
|
|
|
|
|
Apr 19 2006, 17:59
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Спасибо за помощь, попробую разобраться с AVR222. Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал. Можно еще поподробнее написать о том, как расчитать коэффициенты фильтра по заданным характеристикам сигнала.
|
|
|
|
|
Apr 20 2006, 02:48
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(ATMEL_AVR @ Apr 19 2006, 23:59)  Спасибо за помощь, попробую разобраться с AVR222. Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал. Можно еще поподробнее написать о том, как расчитать коэффициенты фильтра по заданным характеристикам сигнала. Не бывает "обычных" цифровых фильтров, по типу обычных стиральных порошков. Сформулируйте полностью задачу, поскольку вопрос у вас не получается задать. Что вы имеете на входе и что хотите получить на выходе?
--------------------
Пасу котов...
|
|
|
|
|
Apr 21 2006, 18:37
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Спасибо за ответы. Мне нужен КИХ фильтр, число коэффициентов от 5-10. Должно быть хорошее быстродействие. Результатом должен быть аналоговый сигнал, который можно прослушать, и увидеть разницу между начальным не обработанным сигналом.
Еще кто-нибудь может подсказать как производить перемножение с помощью перемножающей матрицы.(Просто у меняесть пример фильтра, где умножение на коэффициенты заменено перемножающей матрицей)
|
|
|
|
|
Apr 21 2006, 21:06
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(ATMEL_AVR @ Apr 21 2006, 22:37)  Спасибо за ответы. Мне нужен КИХ фильтр, число коэффициентов от 5-10. Должно быть хорошее быстродействие. Результатом должен быть аналоговый сигнал, который можно прослушать, и увидеть разницу между начальным не обработанным сигналом.
Еще кто-нибудь может подсказать как производить перемножение с помощью перемножающей матрицы.(Просто у меняесть пример фильтра, где умножение на коэффициенты заменено перемножающей матрицей) делать умножение с помошью матрицы(таблицы) безсмысленно. т.к. АВР делает умножение не медленнее адресации. только память израсходуете. как я понимаю ваша задача разделяется на 1) А-Ц преобразование 2) реализация цифрового фильтра 3) Ц-А преобразование собственно интересует точность. 8 бит хватит? вроде для звука худо-бедно подходит. скорость работы фильтра при количестве коэффициентов некритична, т.к. АВРка справится с примерно 200000 умножениями достаточно просто. (это из расчёта 1 умножение на коэффициент при частоте выборок 20кГц). Какой из КИХ фильтров Вы хотите реализовать? режекторный фильтр? полосовой? НЧ? ВЧ? при каких частотах пропускания/задержания?
|
|
|
|
|
Apr 22 2006, 18:02
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере.
|
|
|
|
|
Apr 23 2006, 20:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886

|
Цитата(ATMEL_AVR @ Apr 22 2006, 22:02)  Мне нужен полосовой фильтр, полосы пропускания 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; }
|
|
|
|
|
Apr 24 2006, 04:06
|

Знающий
   
Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206

|
Цитата(ATMEL_AVR @ Apr 23 2006, 00:02)  Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере. Даю хороший совет. Почитайте книгу по ЦОС, например Айфичера (читается легко, хотя есть досадные ошибки перевода). В магазинах должна быть. Поймёте хотя бы что и к чему, какие бывают и как синтезируются фильтры. Потом поставьте матлаб, и посмотрите как фильтры там работают. Сейчас складывается такое ощущение, что вы стоите в чистом поле и просто не знаете в какую сторону бежать.
--------------------
Пасу котов...
|
|
|
|
|
Apr 24 2006, 19:44
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Честно говоря несколько раз просматривал эту тему из любопытства.  Т.е. насколько человеческий альтруизм может быть распространён. Похоже другие думают также как я, только не хотят огорчать тебя. Итак попробую подытожить. Тебе всегда помогут (сужу по себе) если у тебя конкретный вопрос, или нюанс какой-то, или упёрся и двигаться некуда! Но взять РАСЧИТАТЬ и НАПИСАТЬ за тебя ... Ты хоть вопрос изучи! У меня стоял когда-то такой вопрос. Поискал по поисковикам. Нашёл похожее на сайте TI. Изучил. Скачал программу QED2000. Кой чего разобрал. (явно меньше 10%) Написал, переписал 10 раз и в конце-концов добился результата! Конечно проще написать в форум и попросить написать за тебя. Но тогда следующий раз придётся поступать так-же... Да и в форум писать надо хотябы исходные данные подготовить (например частоту выборок не написал). Пойми даже если два фильтра по характеристикам весьма похожи, то всё равно прогу не заимствуешь. Надо выбрать тип фильтра, крутизну, коэффициенты, и т.д. и т.п. Это же не академическое программирование когда подпрограмме задаётся 150 параметров. Здесь в зависимости от задачи человек минимизирует/оптимизирует прогу и лишнее не пишет. Я например коэффициенты такие выбирал, чтобы сдвигами можно было. Ну и т.д. Короче давай напрягись хоть немного.
|
|
|
|
|
Apr 25 2006, 18:51
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Спасибоза помощь, за советы, я действительно раньше не занимался программированием ЦФ, тем более на микроконтроллере. Просто у меня задание по диплому сделать три Лабораторных работы(для следующег поколения студентов): ЦФ, Реверс, Перестройка по спектру(надо обрабатывать звук, а потом полученное воспроизвести в динамике компьтера). Необходимо наглядно продемонстрировать как на микроконтроллере можно реализовать Цифровую обработку сигнала - Задание руководителя. Я вообще то хотел на Delphi что-нибудь сделать. взял тему по прогаммированию - оказалось микроконтроллер. Подписался под дипломом, надо делать, делаю, но уже времени маловато остается, я хотел взять за основу эксперимент DSP на AVR http://elm-chan.org/works/vp/report.html. но не могу понять как там происходит умножение на заданные коэффициенты, и как с внешней памятью там работают. Там написано что нужно записать в память микроконтроллера два файла основной и переможающую таблицу, но ведь там память всего 2к, а файлы весят 1,5 и 2,4 кбайта. Извините я новичок, может задаю глупые вопросы, но до защиты диплома остается мало времени, а делать надо, я пытаюсь разобраться, но куда ни посмотри везде примеры на Си, а просто не понимаю как этот язык устроен. Хотел в дипломе попрограммировать, придется программировать, самому придумывать. Спасибо еще раз, что по крайней даете хорошие и правильные советы.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|