|
Цифровой Фильтр на ATmega, Цифровой Фильтр на ATmega |
|
|
|
Sep 16 2009, 04:18
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 20-09-08
Пользователь №: 40 344

|
Добрый день, давно не заходил с проблемами. КТо может помочь куском кода к цифровому фильтру для Codevision. Даже с чего начать не знаю, куда не сунусь везде только формулы да теория. Хочу попробовать отфильтровать сигнал снятый с ацп Atmegи, и преобразовать на выход с помощью ШИМ и RC цепи
|
|
|
|
|
 |
Ответов
|
Dec 27 2009, 18:27
|
Группа: Новичок
Сообщений: 4
Регистрация: 25-11-07
Пользователь №: 32 665

|
Подскажите, пожалуйста. что представляет собой кольцевой буфер для входных значений фильтра (полосового)?
|
|
|
|
|
Dec 27 2009, 22:26
|

山伏
    
Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294

|
Цитата(Fix @ Dec 27 2009, 20:27)  Подскажите, пожалуйста. что представляет собой кольцевой буфер для входных значений фильтра (полосового)? Допустим Вы хотите сделать кольцевой буфер размера N на основе массива(можно еще на основе связанного списка, это просто - указатель последнего элемента должен указывать на первый, но он намного "тяжеловеснее" чем на основе массива). Функция которая отвечает за запись и/или чтение из буфера дожна при этом обеспечивать кольцевую адресацию. Тоесть достигнув элемента массива N-1(т.к. в C адресация начинается с "0") начать запись вновь с "0"-го элемента. "Счетчик" сбрасывают многими конструкциями. if(i=N){ i=0}, i=i%N или i=(i)&(N). Последний случай - это наложение маски. Работает очень быстро - но только для порядка из ряда целой степени двойки. Первый - предполагает ветвление - потому, как-бы, чисто теоретически - это не хорошо для кэша(а автомат-способ его работы у каждого процессора свой). Но лучше посмотреть, что наваял компилятор в ассемблерном листинге - т.е.есть ли ветвление вообще. Для многих типов DSP можно инициализировать счетчик как кольцевой, он представляет из себя отдельный автомат - т.е. работает без затрат производительности. Если любите смотреть на вещи не штампами и шаблонами, то можете попробовать сделать кольцевой автомат на основе таймера - тоже никаких затрат в виде тактов на проверки - но там нужно будет просчитать хватит ли Вам производительности такого фильтра - и это чисто asm решение, никакой переносимости... P.S.: Сам кольцевой буфер проистекает от формулы свертки (это той, что по-идее должен знать каждый второкурсник ВТУЗа  ) - потому форма АЧХ(полосовой или какой иной) при этом никакой рояли не играет... P.P.S.: исправил очепятку! Ибо знаю по-себе в какой ступор они приводят начинающих  ...
--------------------
Нас помнят пока мы мешаем другим... //-------------------------------------------------------- Хороший блатной - мертвый... //-------------------------------------------------------- Нет старик, это те дроиды которых я ищу...
|
|
|
|
|
Dec 27 2009, 23:01
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(DRUID3 @ Dec 28 2009, 01:26)  "Счетчик" сбрасывают многими конструкциями. if(i=N){N=0}, i=i%N или i=(i)&(N). Последний случай - это наложение маски. Работает очень быстро - но только для порядка из ряда целой степени двойки. Всё правильно. Только дополню, что существует особый случай, когда кольцевой буфер работает особенно изящно и быстро - это случай, когда он расчитан на 256 элементов. В этом случае, достаточно сделать "счетчик" цикла типа unsigned char, чтобы всё заработало само собой. Ведь в один байт число, большее чем 255 не запихнешь, поэтому такой счетчик будет "автоматически" сбрасываться при переполнении. Кольцевые буферы на 256 элементов оказываются очень удобным инструментом не только для означенной цели, но и для буферизации приема и передачи по UART и USB, т.е. когда прием или получение приходят по прерыванию (UART) или когда отправлять по одному байту неэффективно (USB). Примечание: у некоторых дурных компиляторов (кажется для MSP430) тип char трактуется как 2 байта, тогда ищите там другой однобайтный тип.
|
|
|
|
Сообщений в этой теме
_Ie0nid Цифровой Фильтр на ATmega Sep 16 2009, 04:18 Genadi Zawidowski Радиолюбительская конструкция. Sep 16 2009, 04:50 haker_fox Цитата(_Ie0nid @ Sep 16 2009, 13:18) куда... Sep 16 2009, 06:36 SasaVitebsk Боюсь, что меня сейчас поколотят, но попробую обле... Sep 16 2009, 07:30 MrYuran Цитата(SasaVitebsk @ Sep 16 2009, 11:30) ... Sep 16 2009, 07:39  SasaVitebsk Цитата(MrYuran @ Sep 16 2009, 10:39) Непл... Sep 16 2009, 08:14 ZVE Цитата(SasaVitebsk @ Sep 16 2009, 10:30) ... Sep 17 2009, 11:18  Serhiy_UA Много лет назад экспериментировал на ATmega16 со з... Sep 17 2009, 13:19  SasaVitebsk Цитата(ZVE @ Sep 17 2009, 14:18) Да покаж... Sep 17 2009, 19:45   galjoen Цитата(SasaVitebsk @ Sep 17 2009, 22:45) ... Jan 2 2010, 10:51 Legotron Цитата(MrYuran @ Sep 16 2009, 11:39) А дл... Sep 17 2009, 13:04 Сергей Борщ Цитата(Legotron @ Sep 17 2009, 16:04) А п... Sep 17 2009, 13:17 Goodefine Цитата(SasaVitebsk @ Sep 17 2009, 22:45) ... Sep 18 2009, 21:08 AHTOXA Скорее всего причина вот тут:
Код X0=ADCW-512;
Поп... Sep 18 2009, 21:24 Goodefine Цитата(AHTOXA @ Sep 19 2009, 00:24) Попро... Sep 18 2009, 21:38 AHTOXA Тогда наоборот, замените в объявлении Xi, Yi и Tem... Sep 18 2009, 22:12 Goodefine Я это уже проделывал. Основное отличие - фильтр на... Sep 18 2009, 22:22 AHTOXA Да, засада
А long пробовали? Sep 18 2009, 22:26 Goodefine Вот Long не пробовал, только сейчас - то же самое.... Sep 18 2009, 22:30 AHTOXA Есть ещё одна мысль. Я не совсем понял, откуда взя... Sep 18 2009, 22:42 Goodefine Чет не едут у меня лыжи С флоатами хрень какая-т... Sep 18 2009, 22:52 AHTOXA Цитата(Goodefine @ Sep 19 2009, 04:52) Че... Sep 18 2009, 23:16 Goodefine Цитата(AHTOXA @ Sep 19 2009, 02:16) Но хо... Sep 18 2009, 23:43 dimka76 Цитата(Goodefine @ Sep 19 2009, 03:43) Не... Sep 19 2009, 04:15 SasaVitebsk Эээээ...
Результат обсуждения меня не порадовал. ... Sep 20 2009, 20:33 Goodefine Цитата(SasaVitebsk @ Sep 20 2009, 23:33) ... Sep 21 2009, 13:45 SasaVitebsk Цитата(Goodefine @ Sep 21 2009, 16:45) За... Sep 21 2009, 20:27 _Ie0nid здраствуйте, простите за то что долго не было, и з... Sep 22 2009, 04:58 SasaVitebsk Цитата(_Ie0nid @ Sep 22 2009, 07:58) Вы п... Sep 22 2009, 10:00 MrYuran Цитата(_Ie0nid @ Sep 22 2009, 08:58)
Учи... Sep 22 2009, 10:52 Goodefine Цитата(SasaVitebsk @ Sep 21 2009, 23:27) ... Sep 22 2009, 10:35 _Ie0nid РАЗОБРАЛСЯ, тут еще на работе мне паренек здорово ... Sep 23 2009, 01:37 V_G Вообще кольцевой буфер легко реализуется, если его... Dec 28 2009, 23:39 Fix При расчете коэффициентов полосового фильтра с пом... Dec 30 2009, 11:48 SasaVitebsk Цитата(Fix @ Dec 30 2009, 14:48) ... реко... Dec 30 2009, 21:35  Serhiy_UA Цитата(SasaVitebsk @ Dec 31 2009, 00:35) ... Dec 31 2009, 08:02 V_G Существуют разные алгоритмы синтеза фильтров и раз... Dec 30 2009, 12:18 mdmitry Добавлю, что АЧХ фильтра и ФЧХ связаны между собой... Dec 30 2009, 13:14 Rst7 ЦитатаВсё правильно. Только дополню, что существуе... Dec 31 2009, 10:31 Rioi Все знают о существовании таких файлов:
1) AVR201:... Jan 6 2010, 10:21 galjoen Цитата(Rioi @ Jan 6 2010, 13:21) А теперь... Jan 6 2010, 10:50 SasaVitebsk Цитата(Rioi @ Jan 6 2010, 14:21) все знаю... Jan 23 2010, 21:46 DRUID3 Забавная информация к размышлению для тех кто пише... Jan 24 2010, 10:12 Rst7 ЦитатаЗабавная информация к размышлению
Информаци... Jan 24 2010, 10:44 SasaVitebsk Да не на что она не намекает. Заниматься такой опт... Jan 24 2010, 11:09 DRUID3 Цитата(SasaVitebsk @ Jan 24 2010, 13:09) ... Jan 24 2010, 12:36 RedD Для SasaVitebsk.
Интересует тема, не могу написать... Jan 1 2016, 18:24 Andrew34 Вечер добрый господа электронщики!)
У меня про... May 24 2010, 14:40 Herz RedD, Вы обратили внимание на то, как выглядит Ваш... Jan 1 2016, 18:52 RedD Цитата(Herz @ Jan 1 2016, 18:52) RedD, Вы... Jan 1 2016, 19:26  Herz Цитата(RedD @ Jan 1 2016, 21:26) Извиняюс... Jan 1 2016, 22:34   RedD Цитата(Herz @ Jan 1 2016, 22:34) Вы бы Пр... Jan 2 2016, 08:49    RedD Вобщем правильно, вручную проверил,
Но все равно ... Jan 2 2016, 10:31     RedD Слесарь да я смотрю ты местный,
Не знаешь как с Са... Jan 8 2016, 09:43    Alexashka Цитата(RedD @ Jan 2 2016, 12:49) Я ВАС по... Jan 8 2016, 23:15     RedD Цитата(Alexashka @ Jan 9 2016, 00:15) Мож... Jan 9 2016, 14:16 Alexashka ЦитатаИтого все на сдвигах, да в том то и прикол ч... Jan 10 2016, 10:24 RedD Цитата(Alexashka @ Jan 10 2016, 11:24) Ну... Jan 10 2016, 10:31  Alexashka Цитата(RedD @ Jan 10 2016, 14:31) ДЛя avr... Jan 10 2016, 17:49   RedD Цитата(Alexashka @ Jan 10 2016, 18:49) С ... Jan 10 2016, 19:24    RedD А вообще меня интересовала практическая реализация... Jan 11 2016, 04:22    Alexashka Цитата(RedD @ Jan 10 2016, 23:24) Все отв... Jan 11 2016, 06:03     RedD Ну то что я хотел сделать я почти сделал )
На Ва... Jan 11 2016, 09:31      Alexashka Цитата(RedD @ Jan 11 2016, 13:31) Ну хотя... Jan 11 2016, 10:27       RedD Цитата(Alexashka @ Jan 11 2016, 11:27) Ну... Jan 11 2016, 15:31        Alexashka Цитата(RedD @ Jan 11 2016, 19:31) Что Вы ... Jan 11 2016, 17:21         RedD Цитата(Alexashka @ Jan 11 2016, 18:21) Ва... Jan 11 2016, 17:46          Alexashka Цитата(RedD @ Jan 11 2016, 21:46) но дело... Jan 11 2016, 19:38           RedD Да не АЦП однополярный, делаем смещение и ввиду то... Jan 11 2016, 20:42            Alexashka Цитата(RedD @ Jan 12 2016, 00:42) И тогда... Jan 12 2016, 01:39             RedD Цитата(Alexashka @ Jan 12 2016, 02:39) Да... Jan 12 2016, 09:01              RedD А понял, если наложить ФВЧ то и получим смещение, ... Jan 12 2016, 13:57               Alexashka 1) Да как Вам удобней, так и делайте.
2) Y0=Y1||Y2... Jan 13 2016, 01:04         RedD Но и сигнал тогда на вход двухполярный нужен, опер... Jan 11 2016, 17:46 RedD Цитата(Alexashka @ Jan 10 2016, 11:24) Ко... Jan 10 2016, 12:50 RedD Ок )
Возми в студенты а ? Вторую вышку хочу получ... Jan 14 2016, 00:56 IMaxI Прошу прощение. А не проще ли использовать аппарат... Feb 5 2016, 05:00 Alexashka Цитата(IMaxI @ Feb 5 2016, 08:00) А учиты... Feb 5 2016, 05:57  RedD dspic тоже не плох Feb 6 2016, 08:43   RedD http://www.cqham.ru/forum/showthread.php?3...-Mixe... Apr 12 2017, 13:26    RedD Не хотел новую тему создавать, а можно загрузить t... Apr 11 2018, 07:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|