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

|
Помогите с алгоритмом, либо любой другой информацией по реализации цифрового фильтра на AVR микроконтроллере. Есть программатор STK500 и микроконтроллеры ATMega16 и ATTiny26.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 29)
|
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 кбайта. Извините я новичок, может задаю глупые вопросы, но до защиты диплома остается мало времени, а делать надо, я пытаюсь разобраться, но куда ни посмотри везде примеры на Си, а просто не понимаю как этот язык устроен. Хотел в дипломе попрограммировать, придется программировать, самому придумывать. Спасибо еще раз, что по крайней даете хорошие и правильные советы.
|
|
|
|
|
Apr 25 2006, 21:13
|
Профессионал
    
Группа: Свой
Сообщений: 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 займёт вечер а от стандартных вопросов избавит =)
|
|
|
|
|
Apr 26 2006, 19:20
|
Группа: Новичок
Сообщений: 3
Регистрация: 25-04-06
Пользователь №: 16 479

|
Кстати, эта ссылка может быть полезной: http://lord-n.narod.ru/walla.htmlЕсть масса литературы по цифровой фильтрации, в частности вышеупомянутый Айфичер. Почти все в формате DjVue.
|
|
|
|
|
May 2 2006, 17:51
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Здраствуйте. хотел попросить у кого-нибудь программу QED 2000 v3.6.2 , скачал в интернете QED2000 v3.6.4, а к ней ни один кряк не подходит, фильтры она считает. а коэффициенты посмотреть нельзя. Дайте пожалуйста кому не жалко.
|
|
|
|
|
May 22 2006, 17:22
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Делаю фильтр на Mega16, 23 коеффициента, подскажите как выбрать нормированные коеффициенты, чтобы во время перемноженияи и суммы не было переполнения результата.
|
|
|
|
|
May 30 2006, 18:08
|
Группа: Новичок
Сообщений: 9
Регистрация: 18-04-06
Пользователь №: 16 244

|
Вроде сделал цифровой фильтр полоса 300-8000 Гц, Fd=16000, Сейчас делаю эффект называемый pitch, по-русски изменение частоты воспроизводимиго звука, т.е. из женского получается мужской голос. Посмотрел пример из DSP эксперимент, мне не ясно как там происходит интерполяция, и как в итоге получается сдвинутый по частоте сигнал, может кто-нибудь делал что-нибудь подобное, подскажите.
|
|
|
|
|
May 30 2006, 18:45
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
ATMEL_AVRПокажите пожалуйста исходники из Вашего: Цитата "Посмотрел пример из DSP эксперимент". Я тоже так хочу :-)
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Jun 1 2006, 19:04
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Jun 4 2006, 12:20
|
Участник

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

|
да шож там того программирования - какая разница на микроконтроллере или на персоналке, или в маткаде, сообразил разностное уравнение фильтра нужной конструкции для тебя и все готово. Разностное уравнение или со справочников, или сам состряпай, и все - да желательно изобрази работу этого разностного уравнения в Маткаде например, подав на него шум с полезным сигналом и посмотри что получилось после с шумом и особенно с сигналом. А можешь все теоретически - вывести зону устойчивости фильтра, расчитать шум квантования,  , но вот такие классные фирмы как TI делают много чего за нас, у них файлики в Матлабе, и потом сразу все на Сях под CCS в их же сигнальники заливается, сигнальники то у них классные TMS320F28xx, хотя почему то мой босс торчал на Аналог Девайс, говорит у них сигнально-ориентированные команды правильно реализованы а у техаса нет, но я не спорю, все таки босс, он ваял на аналогах, я на техасах. А вообще скачай книжки с dspguide.com Steve Swith. У меня была скачана с инета элементрарна переведенная на русский язык эта классика, а современные книжки тоже супер, введи в гугле, что тебя интересует на данный момент и дерзай. А спрашивать - правильно люди говорят, ну сделаешь проект, решишь задачу, а ничему не научишься, а вот если бы сначала разобрался. а потом спросил для лучшего усвоения - тогда было бы супер.
|
|
|
|
|
Jun 5 2006, 10:52
|
Группа: Новичок
Сообщений: 6
Регистрация: 5-06-06
Пользователь №: 17 783

|
Цитата(Sergiy @ Jun 4 2006, 16:20)  да шож там того программирования - какая разница на микроконтроллере или на персоналке, или в маткаде, сообразил разностное уравнение фильтра нужной конструкции для тебя и все готово. Разностное уравнение или со справочников, или сам состряпай, и все - да желательно изобрази работу этого разностного уравнения в Маткаде например, подав на него шум с полезным сигналом и посмотри что получилось после с шумом и особенно с сигналом. А можешь все теоретически - вывести зону устойчивости фильтра, расчитать шум квантования,  , но вот такие классные фирмы как TI делают много чего за нас, у них файлики в Матлабе, и потом сразу все на Сях под CCS в их же сигнальники заливается, сигнальники то у них классные TMS320F28xx, хотя почему то мой босс торчал на Аналог Девайс, говорит у них сигнально-ориентированные команды правильно реализованы а у техаса нет, но я не спорю, все таки босс, он ваял на аналогах, я на техасах. А вообще скачай книжки с dspguide.com Steve Swith. У меня была скачана с инета элементрарна переведенная на русский язык эта классика, а современные книжки тоже супер, введи в гугле, что тебя интересует на данный момент и дерзай. А спрашивать - правильно люди говорят, ну сделаешь проект, решишь задачу, а ничему не научишься, а вот если бы сначала разобрался. а потом спросил для лучшего усвоения - тогда было бы супер. Привет! Не знаю у кого спросить, но я делаю диплом по теме "Определение дефектов подшипников путем анализа вибрации". И мне надо на промежуточном этапе сузить частоты идущие от датчика, делаю я это на Atmege16. Не подскажете каким образом можно напистаь Фурье преобразование на данном микроконтроллере. Если есть какие-нибудь исходники, буду признательна. Спасибо.
|
|
|
|
|
Jun 5 2006, 17:19
|

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

|
Цитата SvetaM Привет! Не знаю у кого спросить, но я делаю диплом по теме "Определение дефектов подшипников путем анализа вибрации". И мне надо на промежуточном этапе сузить частоты идущие от датчика, делаю я это на Atmege16. Не подскажете каким образом можно напистаь Фурье преобразование на данном микроконтроллере. Если есть какие-нибудь исходники, буду признательна. Спасибо. Исходники есть, для Вас ничего не жалко, заходите ещё.
avrfft.zip ( 15.86 килобайт )
Кол-во скачиваний: 590
FFT___asm_code_example.zip ( 7.63 килобайт )
Кол-во скачиваний: 394
--------------------
Всяк хорошая мысля к нам приходит опосля.
|
|
|
|
|
Jun 6 2006, 07:08
|
Группа: Новичок
Сообщений: 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-той?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|