Alexashka 0 11 января, 2016 Опубликовано 11 января, 2016 · Жалоба но дело даже не в постоянной составляющей, например ... Делаем смещение на 128 ... Вот именно -все дело в ней, в постоянной составляющей :) эти 128 на которые смещён сигнал -это и есть постоянная составляющая, которую обычно добавляют специально, чтобы корректно оцифровать знакопеременный сигнал. Делая вычитание 128 Вы удаляете эту постоянку :) Проблема в том, что точно Вы не знаете какая именно постоянка присутствует на входе АЦП, поэтому иногда сначала накладывают ФВЧ, который ее удаляет в силу своей природы, а потом уже делают все остальные преобразования с сигналом. Теперь понятно, что для этого удобнее работать со знаковыми (signed) переменными. Но и сигнал тогда на вход двухполярный нужен, операционник с двуполярным питанием, как то так, ну ессно смещение в половину AREF, Ну это если АЦП у Вас в контроллере позволяет работать с двуполярным сигналом (чаще бывает диф.вход,т.е сигнала подается два - полезный со смещением и собственно смещение (или если хотите парафазные сигналы), при этом оба сигнала однополярные, что гораздо проще реализуется в кристаллах, ну и смещение удаляется автоматически самим АЦП). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 11 января, 2016 Опубликовано 11 января, 2016 (изменено) · Жалоба Да не АЦП однополярный, делаем смещение и ввиду того что сигнал двуполярный он будет играть около точки смещения. И тогда получается что adc=ADCL, if (adc<128) { x=-(128-adc), } else x=adc-128, Изменено 11 января, 2016 пользователем RedD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexashka 0 12 января, 2016 Опубликовано 12 января, 2016 · Жалоба И тогда получается что adc=ADCL, if (adc<128) { x=-(128-adc), } else x=adc-128, Да можно проще :) signed char x; x = ADCL - 128; И еще, без использования аналогового АРУ 8 бит для оцифровки звука будет слишком мало. Я бы ориентировался на 12 бит (в крайнем случае 10). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 12 января, 2016 Опубликовано 12 января, 2016 (изменено) · Жалоба Да можно проще :) signed char x; x = ADCL - 128; И еще, без использования аналогового АРУ 8 бит для оцифровки звука будет слишком мало. Я бы ориентировался на 12 бит (в крайнем случае 10). x = ADСL - 128; да проще, Напрашивается мысль смещение вычислять автоматически, ну не знаю, допустим при включении, или используя второй канал АЦП, Хотя если хорошо застабилизировать цепь смещения, то и так никуда не денется Про то что 8 бит мало, это понятно, но обкатать можно и на 8 битах, Кстати у 8 бит avr, тоже есть инструкция ASR .... Изменено 13 января, 2016 пользователем RedD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 12 января, 2016 Опубликовано 12 января, 2016 (изменено) · Жалоба А понял, если наложить ФВЧ то и получим смещение, .... Но накладно по ресурсам, можно взять резистор 50кОм, подключить к АЦП, заблокировать на корпус ну 10тью МКФдами, и другим каналом мерить, благо их у avr как минимум восемь. А усиление ослабление как делать правильно? Через коэффициенты передачи фильтров или напрямую можно ? По эквалайзеру .... Сделал три полосовых фильтра с перекрытием в 30 процентов в полосе 0,3 - 3,4 кГц, НЧ, СЧ, ВЧ, для каждого фильтра свой Кус, int Kus1,Kus2,Kus3; Прогоняем сигнал через фильтра, каждую полосу или усиливаем или ослабляем или не трогаем Кus=1. Получаем Y1,Y2,Y3 - выходные данные фильтров, Y1=Y1*Kus1; Y2=Y2*Kus2; Y3=Y3*Kus3; Правильно ли будет что Y0=Y1||Y2||Y3, где Y0 общий выходной сигнал ? По компрессору ... В статье которую я приводил формула SPL такая X(n)=10log((1/m)*((Сумма i=0,m-1)X2[n-1]) Может я чего не понял, но это формула работает только для положительных значений adc, так х в квадрате. Как быть ????????? И еще много вопросов ) А лана со знаком понятно нужно умножить на (x(n)/x(n)), да и есть более удачный вариант .... Изменено 13 января, 2016 пользователем RedD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexashka 0 13 января, 2016 Опубликовано 13 января, 2016 · Жалоба 1) Да как Вам удобней, так и делайте. 2) Y0=Y1||Y2||Y3 а это что? перемножение по модулю? или логическое "или"? не знаю, я бы просто сложил. 3) Не понял о какой статье идет речь. но это формула работает только для положительных значений adc, так х в квадрате Да ладно?! (+5) и (-5) в квадрате это не одно и то же? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 14 января, 2016 Опубликовано 14 января, 2016 (изменено) · Жалоба Ок ) Возми в студенты а ? Вторую вышку хочу получить ! Изменено 6 февраля, 2016 пользователем Herz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IMaxI 0 5 февраля, 2016 Опубликовано 5 февраля, 2016 (изменено) · Жалоба Прошу прощение. А не проще ли использовать аппаратный перемножитель (если конечно таковой присутствует в камне). Просто интересно где то год назад делал простенький ПФ 2-рого порядка на MSP430. Точно во сколько он тактов вылез не скажу (не помню). Но возник вопрос не проще, если имеется аппаратный перемножитель с накоплением использовать его, предворительно сместив коэффициенты в целочисленную область. А учитывая что в том же MSP430 два 16-ти разрядных регистра и 32 разрядный аккумулятор то по моему это прямо конфэтка :yeah: (там кажется 2 такта всего на перемножение с суммированием уходит). Поругайте если не прав. PS. Ох помню тогда намучился с переносом коэффициентов в целочисленную область (но благо для фильтра это делается 1 раз). И еще подскажите где можно почитать про реализацию кольцевых буферов (особенно заинтересовало про размещение буфера по определенным адресам (в чем преимущество)) и на какие грабли при этом можно наступить. Изменено 5 февраля, 2016 пользователем IMaxI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexashka 0 5 февраля, 2016 Опубликовано 5 февраля, 2016 · Жалоба А учитывая что в том же MSP430 два 16-ти разрядных регистра и 32 разрядный аккумулятор У автора какбы не совсем MSP430 :) А так да, штука полезная, у Silabs тоже есть в некоторых камнях встроенный МАС (multiple and accumulate), правда на 40 бит (32 по моему опыту не хватает даже для фильтра 4го порядка -например данные 16 бит, коэфф.тоже 16 бит -это уже 32, плюс сумма нескольких слагаемых - и вот уже переполнение). Чем хорош предложенный тут метод -он сразу ограничивает разрядность данных уже при умножении на коэффициент, поэтому для сумматора можно использовать переменные небольшой разрядности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 6 февраля, 2016 Опубликовано 6 февраля, 2016 · Жалоба dspic тоже не плох Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 12 апреля, 2017 Опубликовано 12 апреля, 2017 · Жалоба http://www.cqham.ru/forum/showthread.php?3...-Mixer-RedD-%E0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RedD 0 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Не хотел новую тему создавать, а можно загрузить tetris for led display AVR ? Ну и есть под Turbo C 3.2 Dos (отладочная), Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Evgeni 0 30 июля, 2020 Опубликовано 30 июля, 2020 · Жалоба Друзья здравствуйте. Если кому не сложно, помогите. Может есть у кого код простого ФВЧ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 2 30 июля, 2020 Опубликовано 30 июля, 2020 · Жалоба 2 hours ago, Evgeni said: Друзья здравствуйте. Если кому не сложно, помогите. Может есть у кого код простого ФВЧ? Нет, но есть http://www.winfilter.20m.com/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться