реклама на сайте
подробности

 
 
> Помогите сделать цифровой фильтр на AVR микроконтроллере, Цифровой фильтр на AVR микроконтроллере.
ATMEL_AVR
сообщение Apr 18 2006, 19:22
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 29)
Petka
сообщение Apr 18 2006, 20:28
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(ATMEL_AVR @ Apr 18 2006, 23:22) *
Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26.

поможем. НО не умалчивайте
1) характеристики сигналов: динамический диапазон, частота сэмплов
2) что вы хотите добиться фильтром. фильтр частотный?
3) точность фильтра.
практика показывает что помочь будет проще, зная изначальную задачу. а может вам вообще фильтр как таковой не нужен......
Go to the top of the page
 
+Quote Post
Proton
сообщение Apr 19 2006, 03:51
Сообщение #3


Частый гость
**

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



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


--------------------
Всяк хорошая мысля к нам приходит опосля.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Apr 19 2006, 04:49
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 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?
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение Apr 19 2006, 17:59
Сообщение #5





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Спасибо за помощь, попробую разобраться с AVR222.
Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал.
Можно еще поподробнее написать о том, как расчитать коэффициенты фильтра по заданным характеристикам сигнала.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 20 2006, 02:48
Сообщение #6


Знающий
****

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



Цитата(ATMEL_AVR @ Apr 19 2006, 23:59) *
Спасибо за помощь, попробую разобраться с AVR222.
Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал.
Можно еще поподробнее написать о том, как расчитать коэффициенты фильтра по заданным характеристикам сигнала.


Не бывает "обычных" цифровых фильтров, по типу обычных стиральных порошков.
Сформулируйте полностью задачу, поскольку вопрос у вас не получается задать.
Что вы имеете на входе и что хотите получить на выходе?


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 20 2006, 14:18
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ATMEL_AVR @ Apr 19 2006, 20:59) *
Мне нужен обычный цифровой фильтр, обрабатывающий речь 300-3400Гц, выходной сигнал записывается на компьютер, потом нужно сравнить исходный файл и преобразованный сигнал.


Imho если полоса сигнала неизменна, и сдвиг фазы не важен, может быть для такой задачи целесообразнее и проще реализовать аналоговый(ые) фильтр(ы). С выхода фильтра пропустить сигнал через опер с требуемым коэффициентом усиления и на АЦП AVR-ки.
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение Apr 21 2006, 18:37
Сообщение #8





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Спасибо за ответы. Мне нужен КИХ фильтр, число коэффициентов от 5-10. Должно быть хорошее быстродействие. Результатом должен быть аналоговый сигнал, который можно прослушать, и увидеть разницу между начальным не обработанным сигналом.

Еще кто-нибудь может подсказать как производить перемножение с помощью перемножающей матрицы.(Просто у меняесть пример фильтра, где умножение на коэффициенты заменено перемножающей матрицей)
Go to the top of the page
 
+Quote Post
Petka
сообщение Apr 21 2006, 21:06
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(ATMEL_AVR @ Apr 21 2006, 22:37) *
Спасибо за ответы. Мне нужен КИХ фильтр, число коэффициентов от 5-10. Должно быть хорошее быстродействие. Результатом должен быть аналоговый сигнал, который можно прослушать, и увидеть разницу между начальным не обработанным сигналом.

Еще кто-нибудь может подсказать как производить перемножение с помощью перемножающей матрицы.(Просто у меняесть пример фильтра, где умножение на коэффициенты заменено перемножающей матрицей)


делать умножение с помошью матрицы(таблицы) безсмысленно. т.к. АВР делает умножение не медленнее адресации. только память израсходуете.

как я понимаю ваша задача разделяется на
1) А-Ц преобразование
2) реализация цифрового фильтра
3) Ц-А преобразование

собственно интересует точность. 8 бит хватит? вроде для звука худо-бедно подходит. скорость работы фильтра при количестве коэффициентов некритична, т.к. АВРка справится с примерно 200000 умножениями достаточно просто. (это из расчёта 1 умножение на коэффициент при частоте выборок 20кГц).
Какой из КИХ фильтров Вы хотите реализовать? режекторный фильтр? полосовой? НЧ? ВЧ? при каких частотах пропускания/задержания?
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение Apr 22 2006, 18:02
Сообщение #10





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере.
Go to the top of the page
 
+Quote Post
Petka
сообщение Apr 23 2006, 20:53
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 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;
}
Go to the top of the page
 
+Quote Post
Laksus
сообщение Apr 23 2006, 23:02
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 146
Регистрация: 16-05-05
Пользователь №: 5 069



http://www.caxapa.ru/mcu/wwwboard.html?id=...07512&todo=full
http://elm-chan.org/works/vp/report.html
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 24 2006, 04:06
Сообщение #13


Знающий
****

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



Цитата(ATMEL_AVR @ Apr 23 2006, 00:02) *
Мне нужен полосовой фильтр, полосы пропускания fн=2000 Гц , fв=2800 Гц(полоса должна изменяться в зависимости от выбранных коэффициентов фильтра). Подскажите пожалуйста алгоритм, может быть есть код на ассемблере.


Даю хороший совет.
Почитайте книгу по ЦОС, например Айфичера (читается легко, хотя есть досадные ошибки перевода). В магазинах должна быть.
Поймёте хотя бы что и к чему, какие бывают и как синтезируются фильтры.
Потом поставьте матлаб, и посмотрите как фильтры там работают.
Сейчас складывается такое ощущение, что вы стоите в чистом поле и просто не знаете в какую сторону бежать.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 24 2006, 19:44
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Честно говоря несколько раз просматривал эту тему из любопытства. smile.gif Т.е. насколько человеческий альтруизм может быть распространён. Похоже другие думают также как я, только не хотят огорчать тебя. smile.gif
Итак попробую подытожить.
Тебе всегда помогут (сужу по себе) если у тебя конкретный вопрос, или нюанс какой-то, или упёрся и двигаться некуда! Но взять РАСЧИТАТЬ и НАПИСАТЬ за тебя ...
Ты хоть вопрос изучи!
У меня стоял когда-то такой вопрос. Поискал по поисковикам. Нашёл похожее на сайте TI. Изучил. Скачал программу QED2000. Кой чего разобрал. (явно меньше 10%) Написал, переписал 10 раз и в конце-концов добился результата! Конечно проще написать в форум и попросить написать за тебя. Но тогда следующий раз придётся поступать так-же... Да и в форум писать надо хотябы исходные данные подготовить (например частоту выборок не написал). Пойми даже если два фильтра по характеристикам весьма похожи, то всё равно прогу не заимствуешь. Надо выбрать тип фильтра, крутизну, коэффициенты, и т.д. и т.п. Это же не академическое программирование когда подпрограмме задаётся 150 параметров. Здесь в зависимости от задачи человек минимизирует/оптимизирует прогу и лишнее не пишет. Я например коэффициенты такие выбирал, чтобы сдвигами можно было. Ну и т.д.

Короче давай напрягись хоть немного. smile.gif
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение Apr 25 2006, 18:51
Сообщение #15





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Спасибоза помощь, за советы, я действительно раньше не занимался программированием ЦФ, тем более на микроконтроллере. Просто у меня задание по диплому сделать три Лабораторных работы(для следующег поколения студентов): ЦФ, Реверс, Перестройка по спектру(надо обрабатывать звук, а потом полученное воспроизвести в динамике компьтера). Необходимо наглядно продемонстрировать как на микроконтроллере можно реализовать Цифровую обработку сигнала - Задание руководителя. Я вообще то хотел на Delphi что-нибудь сделать. взял тему по прогаммированию - оказалось микроконтроллер. Подписался под дипломом, надо делать, делаю, но уже времени маловато остается, я хотел взять за основу эксперимент DSP на AVR http://elm-chan.org/works/vp/report.html. но не могу понять как там происходит умножение на заданные коэффициенты, и как с внешней памятью там работают. Там написано что нужно записать в память микроконтроллера два файла основной и переможающую таблицу, но ведь там память всего 2к, а файлы весят 1,5 и 2,4 кбайта. Извините я новичок, может задаю глупые вопросы, но до защиты диплома остается мало времени, а делать надо, я пытаюсь разобраться, но куда ни посмотри везде примеры на Си, а просто не понимаю как этот язык устроен. Хотел в дипломе попрограммировать, придется программировать, самому придумывать. Спасибо еще раз, что по крайней даете хорошие и правильные советы.
Go to the top of the page
 
+Quote Post
Petka
сообщение Apr 25 2006, 21:13
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



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


прошивки часто хранят в *.HEX файлах, где запсаны HEX представления байт прошивки(т.е. тесктовый а не бинарный вид). в итоге прошивка в HEX имеет минимум в 2 раза больше размер. Кроме того коэффициенты(те которые константы) не обязательно загружать в SRAM, можно ещё загрузить в память программ(Flash), которая в несколько раз больше. Хотя зачем я всё это рассказываю? Почитайте сами хотябы обзор AVR займёт вечер а от стандартных вопросов избавит =)
Go to the top of the page
 
+Quote Post
Дмитрий Анатолье...
сообщение Apr 26 2006, 19:20
Сообщение #17





Группа: Новичок
Сообщений: 3
Регистрация: 25-04-06
Пользователь №: 16 479



Кстати, эта ссылка может быть полезной: http://lord-n.narod.ru/walla.html
Есть масса литературы по цифровой фильтрации, в частности вышеупомянутый Айфичер. Почти все в формате DjVue.
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение May 2 2006, 17:51
Сообщение #18





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Здраствуйте. хотел попросить у кого-нибудь программу QED 2000 v3.6.2 , скачал в интернете QED2000 v3.6.4, а к ней ни один кряк не подходит, фильтры она считает. а коэффициенты посмотреть нельзя. Дайте пожалуйста кому не жалко.
Go to the top of the page
 
+Quote Post
Petka
сообщение May 2 2006, 19:05
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(ATMEL_AVR @ May 2 2006, 21:51) *
Здраствуйте. хотел попросить у кого-нибудь программу QED 2000 v3.6.2 , скачал в интернете QED2000 v3.6.4, а к ней ни один кряк не подходит, фильтры она считает. а коэффициенты посмотреть нельзя. Дайте пожалуйста кому не жалко.

см. мои посты выше. я Вам просчитал фильтр, о котором Вы просили.
Go to the top of the page
 
+Quote Post
kanzler
сообщение May 4 2006, 10:29
Сообщение #20


Местный
***

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



Столкнулся с проблемой того что фильр не работает. Связка такая Полосовой фильтр - синхронный детектор - ФНЧ - ФВЧ. Связка до ФВЧ работает. Фильтр взял от Atmel AVR223. Характеристика ФВЧ: частота среза 0,1 Гц, частота преобразования 5404 Гц. Фильтр IIR второго порядка, коэффициенты рассчитывал в МатЛабе и в QED2000, почти схожи но не суть. На выходе ФВЧ должен быть ноль если сигнал не меняется, и изменение если меняется с частотой от 0,1 Гц, но сиго не происходит. Кто подскажет, что могло случиться?
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение May 22 2006, 17:22
Сообщение #21





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Делаю фильтр на Mega16, 23 коеффициента, подскажите как выбрать нормированные коеффициенты, чтобы во время перемноженияи и суммы не было переполнения результата.
Go to the top of the page
 
+Quote Post
kanzler
сообщение May 23 2006, 04:43
Сообщение #22


Местный
***

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



Цитата(ATMEL_AVR @ May 22 2006, 23:22) *
Делаю фильтр на Mega16, 23 коеффициента, подскажите как выбрать нормированные коеффициенты, чтобы во время перемноженияи и суммы не было переполнения результата.

Скорее всего вам надо выбрать разрядность аккумулятора из расчёта Разрядность данных * Разрядность коэффициентов.
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение May 30 2006, 18:08
Сообщение #23





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Вроде сделал цифровой фильтр полоса 300-8000 Гц, Fd=16000,
Сейчас делаю эффект называемый pitch, по-русски изменение частоты воспроизводимиго звука,
т.е. из женского получается мужской голос. Посмотрел пример из DSP эксперимент, мне не ясно как там происходит интерполяция, и как в итоге получается сдвинутый по частоте сигнал, может кто-нибудь делал что-нибудь подобное, подскажите.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 30 2006, 18:45
Сообщение #24


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



ATMEL_AVR
Покажите пожалуйста исходники из Вашего:
Цитата
"Посмотрел пример из DSP эксперимент".

Я тоже так хочу :-)


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
ATMEL_AVR
сообщение Jun 1 2006, 19:04
Сообщение #25





Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244



Вот исходник, может чего усовершенствуете, поможете:
А так вроде работает
;
;----------------------------------------------------------------------------;
; FIR Filter 300-8000
;----------------------------------------------------------------------------;
; Note1: ATMega16 @ 8MHz
;
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\m16def.inc" ; tn26def This file is contained in "AVR Family Assembler".
.include "C:\Program Files\Atmel\vpsrc\avr.inc"
.include "C:\Program Files\Atmel\vpsrc\vp_def.inc"
; коэффициенты
.equ k23=-7
.equ k22=-8
.equ k21=-8
.equ k20=-8
.equ k19=-9
.equ k18=-9
.equ k17=-9
.equ k16=-9
.equ k15=-10
.equ k14=-10
.equ k13=-10
.equ k12=255
.equ k11=-10
.equ k10=-10
.equ k9=-10
.equ k8=-9
.equ k7=-9
.equ k6=-9
.equ k5=-9
.equ k4=-8
.equ k3=-8
.equ k2=-8
.equ k1=-7
.equ max=65
;----------------------------------------------------------;
; Program code
.cseg
outi SPL, LOW(RAMEND)
outi SPH, HIGH(RAMEND)
rcall cl_data
rcall init_io
;---------------------------------------;
; Main loop (38.5kHz)

main:

sbis ADCSR, 4 ;Wait for EOC
rjmp PC-1 ;/
sbi ADCSR, 4 ;Clear ADIF
in EL, ADCH ;Read A/D data
sbi ADCSR, 6 ;// start new A/D conversion
outi TCNT1L, 0x0
outi OCR1BH, 0x0
subi EL,45 ;
out OCR1BL, EH ;Update analog output

ldiw Y, 0x70
clrw B

; clrw C ;сохраненные отчеты
; clrw A ;отчеты из памяти

; Cl_Data процедура для очистки памяти данных вначале фильтрации

; addi YL, 41
; ori YL, 0x80
; andi YL, 0xBF
;=====================================
;Z - регистр для загрузки последнего отчета
;В - регистр содержащий знчение костанты
;C - регистр для загрузки предпоследнего разряда,
; для того чтобы потом загрузить предпоследний отчет в последний
; таким образом отчеты здвигаются на один вправо
;=====================================
; k23
ld AL, Y+ ; загрузка в ZL 23 отчета - адрес х70
ldi DL,k23
cp DL,ZL
; если результат больше 0 тогда коэф считается отрицательным
brcc PC+3
mul DL,AL
rjmp PC+2
mulsu DL,AL
addw B,T0
ld CL, Y ; загрузка в DL 22 отчета - адрес х71
st -Y,CL ; X23<-X22
inc YL
; B:=X(23)*k23
; в X(23) записывается X(22),
; т.е. в память по ядресу x70 заноситься значение X(22)
;k22
ldi DL,k22
ld AL, Y+ ; загрузка в ZL 23 отчета - адрес х70
cp DL,ZL
; если результат больше 0 тогда коэф считается отрицательным
brcc PC+3
mul DL,AL ; беззнаковое умножение
rjmp PC+2
mulsu DL,AL ; DL < 0 , AL - беззнаковое
addw B,T0
ld CL, Y ; загрузка в СL 21 отчета из адрес х72
st -Y,CL ; X22<-X21
inc YL
;k21
;х72
ldi DL,k21
rcall summ
; k20
ldi DL, k20 ; ZL=20,х73
rcall summ
; k19
ldi DL, k19 ; ZL=19,х74
rcall summ
; k18 = -1
ldi DL,k18
rcall summ
; k17
ldi DL,k17
rcall summ
; k16
; ZL=16,х77
ldi DL,k16
rcall summ
; k15
; ZL=15,х78
ldi DL,k15
rcall summ
; k14
; ZL=14,х79
ldi DL,k14
rcall summ
; k13
; ZL=13,х7A
ldi DL,k13
rcall summ
; k12
; ZL=12,х7B
ldi DL,k12
ld AL, Y+ ; загрузка в ZL 23 отчета - адрес х70
mul DL,AL ; беззнаковое умножение
addw B,T0
ld CL, Y ; загрузка в СL 21 отчета из адрес х72
st -Y,CL ; X22<-X21
inc YL
; k11
; ZL=11,х7C
ldi DL,k11
rcall summ
; k10
; ZL=10,х7D
ldi DL,k10
rcall summ
; k9
; ZL=9,х7E
ldi DL,k9
rcall summ
; k8
; ZL=8,х7F
ldi DL,k8
rcall summ
; k7
; ZL=7,х80
ldi DL,k7
rcall summ
; k6
; ZL=6,х81
ldi DL,k6
rcall summ
; k5
; ZL=5,х82
ldi DL,k5
rcall summ
; k4
; ZL=4,х83
ldi DL,k4
rcall summ
; k3
; ZL=3,х84
ldi DL,k3
rcall summ
; k2
; ZL=2,х85
ldi DL,k2
ld AL, Y+ ; загрузка в ZL 23 отчета - адрес х70
cp DL,ZL
; если результат больше 0 тогда коэф считается отрицательным
brcc PC+3
mul DL,AL ; беззнаковое умножение
rjmp PC+2
mulsu DL,AL ;
addw B,T0
; AL загружается в регистр CL, чтобы в следующим цикле
; отот отчет был перед другим входным сигналом
mov CL,EL ; CL=1,входное значение
st -Y,CL ; X2<-X1
; k1
ldi DL,k1
cp DL,ZL
; если результат больше 0 тогда коэф считается отрицательным
brcc PC+3
mul DL,CL ; беззнаковое умножение
rjmp PC+2
mulsu DL,CL ; DL < 0 , AL - беззнаковое
addw B,T0
; проверка на отрицательный результат
; sbis ADCH, 3
; subi BH,220
st X, BH
; cp BH,ZH
; если результат больше 0 тогда коэф считается отрицательным
; brcc PC+3
mov EH,BH ; в EН записывается сумма произведений DL=k1*x1+k2*x2+...+k23*x23
; rjmp PC+2
; mov EH,EL
rjmp main

; Очистка памяти для загрузки значений отчетов
cl_data:
ldi BL,0b10000000
ldiw Y,0x87
st -Y, BL
inc BL
cpi YL, 0x70
brne PC-3
ret

; Операция суммирования
summ:
; k22
ld AL, Y+ ; загрузка в ZL 23 отчета - адрес х70
cp DL,ZL
; если результат больше 0 тогда коэф считается отрицательным
brcc PC+3
mul DL,AL ; беззнаковое умножение
rjmp PC+2
mulsu DL,AL ; DL < 0 , AL - беззнаковое
addw B,T0
ld CL, Y ; загрузка в СL 21 отчета из адрес х72
st -Y,CL ; X22<-X21
inc YL
; B:=X(22)*k22
; в X(22) записывается X(21),
; т.е. в память по ядресу x71 заноситься значение X(21)
ret
ret
;---------------------------------------;
; Initialize peripherals

init_io:
clr _0
clr _255
dec _255

ldi AL, 0b10100111
mov _NTRL, AL

outi MCUCR, 0b01000000 ;Disable pull-ups

out PORTA, _0 ;АЦП
out DDRA, _0

outi PORTB, 0b11110000 ; SCK, MISO, MOSI
outi DDRB, 0b11110000 ;
outi DDRD, 0b00010000 ; OC1 - выход ЦАП

;A/D converter
outi ADMUX, 0b11100111 ;Ch:7, Vref:2.56V (Можно еще попробовать)
outi ADCSR, 0b11010101 ;Clock:одиночный режим 8000000/32/13=19230 Гц запуск

outi TCCR1A, 0b00110001 ;00-отключен OC1A
;11-OC1B работает в инертированном режиме 1 при совпадении TC1
;00-не используется
;01-WGM11,WGM10-8 битная Phase Correct PWM(ШИМ с точной фазой)
;// 8 bit Correct PWM, using COM1B Установка ШИМ работает вывод В, неинвертированный ШИМ OCB1
outi TCNT1H, 0x00
outi TCNT1L, 0x00 ;// set counter1 to zero Счетный регистр обнуляется
outi TIFR, 0x04 ;// clear counter1 overflow flag флаг разрешения прерывания по переполнению ТС1
outi TIMSK, 0b00001100 ;1-флаг разрешения прерывания по совпадению TC1B
;// enable counter1 overflow interrupt флаг прерывания по переполнению ТС1
outi TCCR1B,0b00000001 ;0-отключена схема подавления помех
;0-сохр счетного регистра по спаду
;0-не используется
;00-WGM13,WGM12-8 разрядная ШИМ
;001-clkI/O=8МГц-тактовая частота счетчика
;// counter1 clock prescale = 1 8000000/256/2=15625 Гц частота дискретизации ШИМ
outi OCR1BH, 0x00 ;// set output compare register B to zero Регистр сравнения очистим
outi OCR1BL, 0x00
ldi ZL, max
ldi ZH, 250
ret
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 1 2006, 19:31
Сообщение #26


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А какой тип фильтра? НЧ?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Sergiy
сообщение Jun 4 2006, 12:20
Сообщение #27


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 29-05-06
Из: Netherlands (Delft)/Ukraine (Odessa)
Пользователь №: 17 547



да шож там того программирования - какая разница на микроконтроллере или на персоналке, или в маткаде, сообразил разностное уравнение фильтра нужной конструкции для тебя и все готово. Разностное уравнение или со справочников, или сам состряпай, и все - да желательно изобрази работу этого разностного уравнения в Маткаде например, подав на него шум с полезным сигналом и посмотри что получилось после с шумом и особенно с сигналом. А можешь все теоретически - вывести зону устойчивости фильтра, расчитать шум квантования, smile.gif, но вот такие классные фирмы как TI делают много чего за нас, у них файлики в Матлабе, и потом сразу все на Сях под CCS в их же сигнальники заливается, сигнальники то у них классные TMS320F28xx, хотя почему то мой босс торчал на Аналог Девайс, говорит у них сигнально-ориентированные команды правильно реализованы а у техаса нет, но я не спорю, все таки босс, он ваял на аналогах, я на техасах. А вообще скачай книжки с dspguide.com Steve Swith. У меня была скачана с инета элементрарна переведенная на русский язык эта классика, а современные книжки тоже супер, введи в гугле, что тебя интересует на данный момент и дерзай. А спрашивать - правильно люди говорят, ну сделаешь проект, решишь задачу, а ничему не научишься, а вот если бы сначала разобрался. а потом спросил для лучшего усвоения - тогда было бы супер.
Go to the top of the page
 
+Quote Post
SvetaM
сообщение Jun 5 2006, 10:52
Сообщение #28





Группа: Новичок
Сообщений: 6
Регистрация: 5-06-06
Пользователь №: 17 783



Цитата(Sergiy @ Jun 4 2006, 16:20) *
да шож там того программирования - какая разница на микроконтроллере или на персоналке, или в маткаде, сообразил разностное уравнение фильтра нужной конструкции для тебя и все готово. Разностное уравнение или со справочников, или сам состряпай, и все - да желательно изобрази работу этого разностного уравнения в Маткаде например, подав на него шум с полезным сигналом и посмотри что получилось после с шумом и особенно с сигналом. А можешь все теоретически - вывести зону устойчивости фильтра, расчитать шум квантования, smile.gif, но вот такие классные фирмы как TI делают много чего за нас, у них файлики в Матлабе, и потом сразу все на Сях под CCS в их же сигнальники заливается, сигнальники то у них классные TMS320F28xx, хотя почему то мой босс торчал на Аналог Девайс, говорит у них сигнально-ориентированные команды правильно реализованы а у техаса нет, но я не спорю, все таки босс, он ваял на аналогах, я на техасах. А вообще скачай книжки с dspguide.com Steve Swith. У меня была скачана с инета элементрарна переведенная на русский язык эта классика, а современные книжки тоже супер, введи в гугле, что тебя интересует на данный момент и дерзай. А спрашивать - правильно люди говорят, ну сделаешь проект, решишь задачу, а ничему не научишься, а вот если бы сначала разобрался. а потом спросил для лучшего усвоения - тогда было бы супер.



Привет! Не знаю у кого спросить, но я делаю диплом по теме "Определение дефектов подшипников путем анализа вибрации". И мне надо на промежуточном этапе сузить частоты идущие от датчика, делаю я это на Atmege16. Не подскажете каким образом можно напистаь Фурье преобразование на данном микроконтроллере. Если есть какие-нибудь исходники, буду признательна. Спасибо.
Go to the top of the page
 
+Quote Post
Proton
сообщение Jun 5 2006, 17:19
Сообщение #29


Частый гость
**

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



Цитата
SvetaM
Привет! Не знаю у кого спросить, но я делаю диплом по теме "Определение дефектов подшипников путем анализа вибрации". И мне надо на промежуточном этапе сузить частоты идущие от датчика, делаю я это на Atmege16. Не подскажете каким образом можно напистаь Фурье преобразование на данном микроконтроллере. Если есть какие-нибудь исходники, буду признательна. Спасибо.


Исходники есть, для Вас ничего не жалко, заходите ещё.Прикрепленный файл  avrfft.zip ( 15.86 килобайт ) Кол-во скачиваний: 590
Прикрепленный файл  FFT___asm_code_example.zip ( 7.63 килобайт ) Кол-во скачиваний: 394


--------------------
Всяк хорошая мысля к нам приходит опосля.
Go to the top of the page
 
+Quote Post
SvetaM
сообщение Jun 6 2006, 07:08
Сообщение #30





Группа: Новичок
Сообщений: 6
Регистрация: 5-06-06
Пользователь №: 17 783



Цитата(Proton @ Jun 5 2006, 21:19) *
Цитата
SvetaM
Привет! Не знаю у кого спросить, но я делаю диплом по теме "Определение дефектов подшипников путем анализа вибрации". И мне надо на промежуточном этапе сузить частоты идущие от датчика, делаю я это на Atmege16. Не подскажете каким образом можно напистаь Фурье преобразование на данном микроконтроллере. Если есть какие-нибудь исходники, буду признательна. Спасибо.


Исходники есть, для Вас ничего не жалко, заходите ещё.Прикрепленный файл  avrfft.zip ( 15.86 килобайт ) Кол-во скачиваний: 590
Прикрепленный файл  FFT___asm_code_example.zip ( 7.63 килобайт ) Кол-во скачиваний: 394



Спасибо большое. Только вот меня интересует, что лучше из ассемблерных кодов и что мне больше подходит (к своему стыду интересуюсь по этому поводу у вас)? А именно так чтобы лишнего особо не было, так как хочу прямо так (ничего не делая) вставить прогу в диплом, так как времени уже не осталось. И еще нет ли чего ч русскими комментариями, а то на перевод тоже времени нет. Большое спасибо заранее.

Цитата(SvetaM @ Jun 6 2006, 11:06) *
Цитата(Proton @ Jun 5 2006, 21:19) *

Цитата
SvetaM
Привет! Не знаю у кого спросить, но я делаю диплом по теме "Определение дефектов подшипников путем анализа вибрации". И мне надо на промежуточном этапе сузить частоты идущие от датчика, делаю я это на Atmege16. Не подскажете каким образом можно напистаь Фурье преобразование на данном микроконтроллере. Если есть какие-нибудь исходники, буду признательна. Спасибо.


Исходники есть, для Вас ничего не жалко, заходите ещё.Прикрепленный файл  avrfft.zip ( 15.86 килобайт ) Кол-во скачиваний: 590
Прикрепленный файл  FFT___asm_code_example.zip ( 7.63 килобайт ) Кол-во скачиваний: 394



Спасибо большое. Только вот меня интересует, что лучше из ассемблерных кодов и что мне больше подходит (к своему стыду интересуюсь по этому поводу у вас)? А именно так чтобы лишнего особо не было, так как хочу прямо так (ничего не делая) вставить прогу в диплом, так как времени уже не осталось. И еще нет ли чего ч русскими комментариями, а то на перевод тоже времени нет. Большое спасибо заранее.


Да, и еще забыла, а это ничего что исходник для Atmega8, а мне надо для 16-той?
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01694 секунд с 7
ELECTRONIX ©2004-2016