Академия гитарной электроники: Эффекты на мк... - Академия гитарной электроники

Перейти к содержимому

  • 3 Страниц +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Эффекты на мк...

#61 Пользователь офлайн   Маклауд 

  • Злой модер
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 02 октября 2010 - 17:34

Dr_Zlo, имхо флешка за оперу не очень катит. Скорости далеко не те. Да и количество циклов записи не бесконечное.
"...Металлисты - это самый развитой и передовой класс, и никто не может отрицать, что это и есть передовой отряд всего пролетариата." (В.И. Ленин, "Полное Собрание Сочинений", том 24)
0

#62 Пользователь офлайн   Dr_Zlo 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 13 октября 2010 - 19:46

Только что циклы перезаписи ограничены =\... А вообще скорость приличная, там же аппаратное spi, можешь тесты скорости посмотреть у елмчана, обрати внимание на скорость меги, всего 9,2мгц:
http://elm-chan.org/.../img/rwtest.png


Мне же всего 32кбс нужно, и пишу я по 512б за раз.

По скромным подсчетам ммцшки 256мб, если равномерно(как я собираюсь) писать на нее хватит на 6,5 лет О_О.

Так народ, стоит или нет добавлять переключаемые куски примочек? Тоесть аналоговый перегруз?
И не забывай, юный падаван, страх, гнев, и гитары FENDER ведут тебя к темной стороне силы...
0

#63 Пользователь офлайн   Kurtz 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 28 ноября 2010 - 14:19

Чу! Мирикл!
В свете есть иное диво - FRAM называется.
http://www.ramtron.com/products/nonvolatil...ory/serial.aspx
SPI 40МГц
Циклов перезаписи в районе 10E14.

Выношу на суд общественности :)
Прикрепленное изображение: test.gif
JTAG 20pin (такой дешевле в нашем сельпо)
Номиналы обвязки не расставил. Пока это не важно.
Кодек мастер на I2S.
Управление кодеком по SPI.
FRAM тоже на SPI - хранить настройки. А может и не только настройки...
Куча кнопок на INT0 прерывании, хотя, наверное, можно и просто опрашивать.
МК тактируется 12МГц от CLKOUT кодека. (Для юсб пригодится).
Может RTCLK и не будет.
На счет буфера перед кодеком не стал заморачиваться - всё-равно гитару без драйва не гоняю. :)

В спринте получилась двусторонняя плата 180х110мм.
Вот думаю теперь травить - не травить... :fie:))
...А конденсатор C1 мы вылепим из пластилина, потому что мой диплом всё-равно никто читать не будет!...
0

#64 Пользователь офлайн   Rst7 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 28 ноября 2010 - 22:37

Цитата

Выношу на суд общественности


Разделить домены цифрового и аналогового питания. Не просто земли разделить, а сделать разные стабилизаторы +3.3В. Плюс добавить бусин ферритовых. Иначе будет вонь.
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
1

#65 Пользователь офлайн   Kurtz 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 28 ноября 2010 - 23:27

Спасибо.
А куда бусин и каких? (и что это, вообще, такое? :)

В доке-то про ноги питания написано что-то типа "should be isolated".
Я подумал про несколько регуляторов питания, но почему-то решил, что жирно будет :fie:)
Ок. Добавлю.

На плате-то я еще землю аналоговую отдельно развёл (но она всё-равно с цифровой землёй стыкуется:)
Плата планируется типа тестовой, с возможностью дальнейшего расширения (у всех ног мк есть площадка).
А аналоговые части мк и кодека можно будет от одного стабилизатора питать или лучше вообще отдельные стабилизаторы?

Еще у меня CLKOUT 12MHz от кодека к мк чуть ли не самая длинная дорожка получилась ;(
Может добавить кварц к мк.

В общем, первый проект на мк :) Осталось полно вопросов :))
...А конденсатор C1 мы вылепим из пластилина, потому что мой диплом всё-равно никто читать не будет!...
0

#66 Пользователь офлайн   Rst7 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 28 ноября 2010 - 23:58

Цитата

А куда бусин и каких? (и что это, вообще, такое?


Вот такие, в питание, точнее, в разрывы, как сделано, например, тут - смотреть, как L1..L6 включены.

Цитата

Еще у меня CLKOUT 12MHz от кодека к мк чуть ли не самая длинная дорожка получилась ;(
Может добавить кварц к мк.


Не надо, я думаю все будет ок.
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
1

#67 Пользователь офлайн   Kurtz 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 09 января 2011 - 18:18

В общем, для тех, кто хочет попробовать что такое MCU ARM Cortex-M3, но жмётся на тестовую плату.
Есть 2 выхода.
1) Написать Деду Морозу длинное жалестное письмо.
2) Сделать самому.

Так же, если вы не знаете что подарить близким, то тестовая плата с практически топовым LPC1768 (100МГц, 64кБ RAM), да еще сделанная своими руками, - лучший подарок на НГ. :)
Прикрепленное изображение: km04.GIF

Лейка исправлена, а то сам я сделал чуть более раннюю версию, которая отличалась отсутствием официального места под кнопки и немного перепутанной полюсовкой аналогового питания :lol:, но всё быстро исправилось тёплым ламповым навесом.)
Прикрепленный файл  LPC1768tb.lay (130,14К)
Количество загрузок:356
Подразумевается система "Йожег 1.1" - все ноги выведены на двухрядные штыри с шагом 2,54мм.
Основная идея - любой дополнительный девайс будет подцепляться шлейфом.


Если сто ног с шагом 0,5мм не пугает, то по пунктам.:
1. ЧТО ПРОШИТЬ
МК LPC1768 1 шт. http://www.megachip....item_id=1254003
Кварц 12МГц http://www.megachip....item_id=1050326
Конденсаторы керамические 0.30p/50V 0805 парочка http://www.megachip....item_id=1217702
Кнопица 6х6мм смд парочка http://www.megachip....?item_id=131542
Стабилизаторы 2 шт. LD1117S33TR http://www.megachip....?item_id=626273
Конденсаторы керамические 0.1/50V 0805 ~10 шт. http://www.megachip....?item_id=771076
Конденсаторы электролитические танталовые 10/10V "A" ~10 шт. http://www.megachip....?item_id=753120
Гнездо USB B 1 шт. ( +1 для FT232) http://www.megachip....?item_id=135150
Резисторы 0805 для JTAG 10-12к
Разъемы отламываем от этого http://www.megachip....?item_id=134140
Для наглядности 2 светодиода 0805 (цвет по вкусу :fie:
- 14я нога - RESET OUT - светится, если девайс работает, гаснет на время ресета (у меня пока без резистора).
- 50я нога - светодиод на пине P2.13 для срочных тестов :)
Текстолит 75х75мм. Односторонний.
Бусинок не нашел ;(

!!Шаг 0,5мм!!
Сделал на бумаге ломонд. Подправил тонким маркером. Где замазал поцарапал толстой иглой от шприца.
Тоненько залудил.
Залил ЛТИ-120, приложил, прижал, припаял 1 ногу, потом 1 напротив, прошелся сухим паяльником по ногам - пшшшш! И готово.
ВАЖНО! Нога номер 1 около круглой метки!!! Надпись LPC1768 будет повёрнута на 90о.
Прикрепленное изображение: testboard1.jpg Прикрепленное изображение: testboard2.jpg


2. ЧЕРЕЗ ЧТО ПРОШИТЬ (Программатор клепать не надо)
Для прошивки нужно будет собрать такую штуку:
http://easyelectronics.ru/preobrazovatel-u...di-ft232rl.html
(Проверяем зеркальность - сериальные выход и вход д.б. на ногах 1 и 5. см. даташит.
Точнее, с этого девайса надо начать. Шаг 0,65мм хорош для начала.
FT232RL http://www.megachip....?item_id=575701
2 смд кондёра 100n 1206
(светодиоды и резисторы не очень-то нужны, но если паять, то сначала их, а то потом не подлезть будет)
Цепляется на 3 контакта мк - 98,99 и землю.
Как-то так:Прикрепленное изображение: ft232.jpg

3. ЧЕМ ПРОШИТЬ
http://www.flashmagictool.com/

4. EXAMPLE
Фотки и прошиву залью чуть позже.
Цепляем к FT232, держмим кнопку INT0 (53я нога), жмём ресет (не на компе, конечно:lol:- стартует бутлоадер.
В это время прошиваем. Потом ресетим еще раз без INT0 или запускаем из прошивалки - код стартует.

Под линуксом компилятор собрался за полчаса с --target=arm-eabi по этой доке http://and-blog.live....com/11548.html.
Взял GCC4.5.1
FT232RL определяется слёту как /dev/ttyUSB0.
ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 и FlashMagic прерасно работает на 19200 под wine.

Подвендой скачал драйвер с http://www.ftdichip.com/FTDrivers.htm
Компилер и тулзы http://www.yagarto.de/

JTAGA пока нет, да, по идее, можно отлаживать, просто выводя инфу по ком-порту.
А можно и спаять :lol:

Ну и самое ценное - теперь можно собрать ёлочную гирлянду, работающую на частоте 100МГц! :lol:)


------------------------------------------------------------------------------------------- -----------------------------------
В общем, если кому интересно, вот сделаная на коленке цифровая задержка встроенными силами того самого LPC1768.
ADC(10bit)/DAC(12bit) на частоте 36кгц.
Прикрепленный файл  delay_lpc1768.mp3 (1,75МБ)
Количество загрузок:468
Не считая мудрёной инициализации, сам дилей это 6 строчек кода. :lol:

Сначала и в конце записи лёгкий рум, вроде бы, 25мс.
Максимально получилось в районе 400мс. Переключается пока кнопкой в одну сторону.

Используется программный буффер в 15000 семплов.
Задержанный сигнал смешивается с входящим и пишется в буффер по кругу.
Коэффициент затухания пока стабильный 1/3. Его тоже надо переключать.

Примочь - guvnor. писалось в линию. Из обработок только спикерсим V30.
Буффера на ОУ что-то кривоватые вышли. Но в некоторых положениях некоторых ручек всё работает :fie:
Шумит немного - можно сказать, что получилась симуляция плёночного :)

В следующей серии будет то же, но с цивильным кодеком ;)

Сообщение отредактировал Kurtz: 22 декабря 2010 - 09:37

...А конденсатор C1 мы вылепим из пластилина, потому что мой диплом всё-равно никто читать не будет!...
2

#68 Пользователь офлайн   Evtomax 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 10 января 2011 - 02:11

Офигенно! Зарождается новое направление в области кустарного примочкостроения! :crazy: Только порог вхождения существенно выше, чем у аналоговых примочек, зато сколько потенциала!
0

#69 Пользователь офлайн   paranoya 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 03 апреля 2012 - 09:54

Всем доброго времени! Вижу тут уже пошла жара со специализироваными чипами, и я в том числе присоединяюсь к общему ликованию, вызваному успехами мистера Kurtz) и остальных активистов этой темы!
Но зашол сюда за советом - дело вобщем такое, с МК и логикой высокой степени интеграции я не имею какого либо опыта работы, по этому всеже двинулся в сторону старой доброй дельтамодуляции+какаято память. Так вот какбы ЦАП (что главное) и АЦП я запустил и получилось даже не так ужасно как я предполагал. Но вот теперь возникла необходимость прикрутить ту самую какуето память. В совковых проектак от куда я и дернул ЦАП в качестве памяти использовали микры типа 565руХХ, их конечно можно на барахле добыть... но наличие 3х!! напряжений питания и какоето предчувствие, что в пристуре истерики они полетят в форточку как-то толкает поискать более практичный вариант. Ну и тут как бы вопрос - господа, друзья посоветуйте память под это дело! кто чем сможет.... ато вчера вечер просидел за этим делом в нете - бошка пухнет а инфы нихера толко не нашел, чтоб все точки на и розкидать.
Вобщем если кокретно:
1. Чтоже всетаки брать SRAM или DRAM??
2. Если есть ответ на первый вопрост, то где ее можна достать или откуда выдернуть??
3. Как лучше (проще, эргономичней) организовать адресацию, она то простая - на вход биты залетают и тупо змейкой на выход лезут..
4. Ооооочень желательно необходимость лиш одного напряжения питания...

Буду ОООЧЕНЬ благодарен за любые ответы!!
0

#70 Пользователь офлайн   Evilhead 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 06 апреля 2012 - 07:52

 paranoya (03 апреля 2012 - 09:54) писал:

Всем доброго времени! Вижу тут уже пошла жара со специализироваными чипами, и я в том числе присоединяюсь к общему ликованию, вызваному успехами мистера Kurtz) и остальных активистов этой темы!
Но зашол сюда за советом - дело вобщем такое, с МК и логикой высокой степени интеграции я не имею какого либо опыта работы, по этому всеже двинулся в сторону старой доброй дельтамодуляции+какаято память. Так вот какбы ЦАП (что главное) и АЦП я запустил и получилось даже не так ужасно как я предполагал. Но вот теперь возникла необходимость прикрутить ту самую какуето память. В совковых проектак от куда я и дернул ЦАП в качестве памяти использовали микры типа 565руХХ, их конечно можно на барахле добыть... но наличие 3х!! напряжений питания и какоето предчувствие, что в пристуре истерики они полетят в форточку как-то толкает поискать более практичный вариант. Ну и тут как бы вопрос - господа, друзья посоветуйте память под это дело! кто чем сможет.... ато вчера вечер просидел за этим делом в нете - бошка пухнет а инфы нихера толко не нашел, чтоб все точки на и розкидать.
Вобщем если кокретно:
1. Чтоже всетаки брать SRAM или DRAM??
2. Если есть ответ на первый вопрост, то где ее можна достать или откуда выдернуть??
3. Как лучше (проще, эргономичней) организовать адресацию, она то простая - на вход биты залетают и тупо змейкой на выход лезут..
4. Ооооочень желательно необходимость лиш одного напряжения питания...

Буду ОООЧЕНЬ благодарен за любые ответы!!


1. Бери Dram (больший объём памяти за меньшие деньги+ легче ими управлять) у них единственный минус- нужно обновлять память каждые 4-6мс.
2. http://promelspb.ru/....html#datatable там разные есть по объёму
3. почитай внимательно на страничке Chana, там кажется в таблице таймингов принцип адресации предельно ясен
4. ониж все от 5 вольт работают

а вообще память с ацп цапом и логикой это прям Дилэй/хорус от Лель, сам ковырялся в такой... легче на мк всёж управление сделать и возможностей больше
0

#71 Пользователь офлайн   paranoya 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 06 апреля 2012 - 14:50

благодарствую за ответ)
вотетож и напрягает, что драм надо обновлять постоянно... хотя с другой стороны в чем сложность управления срам ?
знаю, что на МК 100% будет легче и гибче.. но я в програмировании МК полный НОЛЬ :wall: ... а это обстоятельство полностью парализует какие либо маневры с проэктом.
Целесообразность этого всего конечно, тоже под вопросом, но я этим занимаюсь больше из субьективных побуждений, по этому как бы никого и не агитирую))
0

#72 Пользователь офлайн   Батя 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 06 апреля 2012 - 21:28

Kurtz, я тоже в програмировании "0". Только прошить смогу. Есть такая идея-пожелание. Можно же на этом Мк замутить вот такой эффект?
Что то мне подсказывает , что это возможно. Если скажем затухание сделать 1/1 и при этом сигнал есче и хорусом звучал( от этого же МК)типа синтезаторного сопровождения. А чтобы была непрерывность ноты (гаммы)и не задействовать много памяти , надо фрагмент запоминать короткий. Да и звучать будет ровней.
Офф: А то Денис(Графф) купил себе, млин абасцаться от зависти. "Я Вань такую жа хачуууу!!!" :cray:

Сообщение отредактировал Батя: 06 апреля 2012 - 21:29

Все , что невозможно, можно сделать возможным, если сделать невозможной возможность невозможности, и одну из этих возможностей дает нам интернет!
0

#73 Пользователь офлайн   KMG 

  • completely insane
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 06 апреля 2012 - 22:12

Сделать то не проблема, а вот написать програмку луповой склейки задача нетривиальная.
Потроха
Прикрепленное изображение: DSC_0584.JPG
Прикрепленное изображение: DSC_0588.JPG
Даташиты
DSP
http://www.freescale...p?code=DSP56374
http://www.freescale...et/DSP56374.pdf
Кодек
http://www.ti.com/li...nk/pcm3052a.pdf
Изображение
0

#74 Пользователь офлайн   Батя 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 06 апреля 2012 - 22:59

Подождем, что Kurtz скажет. Он вроде шарит в написании программ. А так ,еслибы твой прокт прошитых пресетов прикрутить с этим Фризем-лупером , получилось бы не слабо.
Все , что невозможно, можно сделать возможным, если сделать невозможной возможность невозможности, и одну из этих возможностей дает нам интернет!
0

#75 Пользователь офлайн   KMG 

  • completely insane
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 06 апреля 2012 - 23:10

Здесь есть некоторая специфика, неадекватная склейка увеличивает искажения.
Сам на этом нажегся, когда игрался с цифровым питч шифтом.
Даже просто склейка по переходу через 0 в ту же сторону может менять спектр в зависимости от кратности длины склейки периодам составляющих спектра исходного сигнала.
Изображение
0

#76 Пользователь офлайн   Батя 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 07 апреля 2012 - 19:11

Сегодня на работе весь день думал, какой алгоритм должен быть у этого эффекта. Повторюсь , в написании прог я не врубаюсь. Мне прошло на ум такое представление.
В момент нажатия на кнопку , в проц записывается нота(гамма)она будет эталонным сэмплом. Не важно какой длины (предположим 200 мс) Внутренним тактом(постоянно , не зависимо есть в памяти сэмпл или нет) , с периодичностью каждые 20 мс подаются команды "считывать" из памяти эталонный сэмпл . Но считывание назначить в 30 мс, после чего считывание каждой команды прекращается. Таким образом получится многократное воспроизведение коротких, в 30 мс, фрагментов, с периодичностью в 20 мс. Как бы эти отрезки накладываются по очереди на хвосты предыдущих отрезков. И так до того момента , пока не нажмешь опять на кнопку. Сбрасывается прежний эталон из памяти, и записывается новый. Двойное нажатие вообще все стирает из памяти. Короткие фрагменты будут точнее передавать ноту, а наложенные др на др исключать прерывание ,как в дилее, и сливаться в один бесконечный звук ноты. Как то так. Поправь если заблуждаюсь.
Кстати,На видеоролике видно, что на кнопку чел нажимает только после звукоизвлечения, когда зазвучит вся гамма аккорда.Для того , чтобы точнее записать ноту.Он даже извлекает аккорд более аккуратно.

Сообщение отредактировал Батя: 07 апреля 2012 - 20:26

Все , что невозможно, можно сделать возможным, если сделать невозможной возможность невозможности, и одну из этих возможностей дает нам интернет!
0

#77 Пользователь офлайн   KMG 

  • completely insane
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 08 апреля 2012 - 12:16

Я думаю там все гораздо проще алгоритмически, и гораздо сложнее математически.
Запись происходит постоянно, как в дилее.
В момент нажатия кнопки фиксируется конец и вычисляется в обратную сторону длина отрезка, обеспечивающего минимальные искажения.
В твоем, Батя, варианте получим сигнал с модуляцией 50Гц, еще хуже чем просто склеивание с фиксированной длиной.
Я думаю, они с помощью ДСП высчитывают длину отрезка, обеспечивающего минимальные искажения.
Простейший вариант, который могу предожить - во время записи фиксировать точки перехода через 0 с одинаковым наклоном (производной).
В момент нажатия фиксируется максимально близкая к "концу" и максимально далекая от нее.
Это даст возможность избавиться от щелчков с частотой повтора отрезка.
Изображение
0

#78 Пользователь офлайн   Батя 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 08 апреля 2012 - 17:38

Хм. Не пойму, зачем нам воспроизводить большой кусок записанного фрагмента? Сорри , я просто размышляю логически применительно к аналоговым делам. Понимаю , что цыфровая обработка гораздо сложный процесс , и здесь не все так просто , как это кажется. Не представляю, для чего надо привязываться к "переходу через 0"(и что это за понятие)? И откуда возмется модуляция в 50Гц? Мы ведь просто запрашиваем из эталонного сэмпла маленький кусок(фрагмент ноты) многократно(один и тот же,а не тот , который прошел модуляцию и возвращается на повтор), и не склеиваем их , а накладываем второй фрагмент на еще воспроизводимый первый(которому еще звучать 10мс). Откуда возмутся щелчки? Образно на пальцах это выглядит , как сдвинутая , размазанная колода карт по столу. Ну или скажем считывать из памяти фрагменты длиной в 30мс , а команды на считывание подавать каждые 15мс.
Ты уж не серчай, я делетант в этом. Но мне жутко интересно.

Сообщение отредактировал Батя: 08 апреля 2012 - 17:40

Все , что невозможно, можно сделать возможным, если сделать невозможной возможность невозможности, и одну из этих возможностей дает нам интернет!
0

#79 Пользователь офлайн   KMG 

  • completely insane
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 08 апреля 2012 - 18:28

Цитата

И откуда возмется модуляция в 50Гц?

Модуляция возникнет за счет наложения 30/20 мС.
AAA
__BBB
____CCC
______DDD

Средние 10мС из каждых 30мС ни с чем ни суммируются, провал амплитуды, и модуляция с периодом повтора.

Цитата

Не представляю, для чего надо привязываться к "переходу через 0"(и что это за понятие)?

Теперь смотрим на картинку, начало и конец кольца могут попадать на совершенно разные фазы (значения амплитуды), получается щелчек.
Прикрепленное изображение: 1.jpg
Если чуть "укоротить" сэмпл то щелчек пропадет, проще всего это как раз делать (математически) в точках перехода через 0 еще и потому что они есть в сигнале любой амплитуды.

Цитата

Не пойму, зачем нам воспроизводить большой кусок записанного фрагмента?

Под этим я имел ввиду, что мы ищем максимальный кусок из выбранного буфера 20мС (или другого), удовлетворяющий "склеиванию концов ленты"

Сообщение отредактировал KMG: 08 апреля 2012 - 19:14

Изображение
0

#80 Пользователь офлайн   Батя 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 08 апреля 2012 - 21:52

Вот теперь понятно. Получается , что вся трудность "научить" проц вычислять идеальный фрагмент (с обоёх сторон по нулям)из полученного сэмпла. И накладывать их не получится из за возникающей частоты модуляции, только склеивать? Или накладывать можно , но тоже в момент прохождения через "0". А как же тогда , если сэмпл взят из Аккорда, где "0" вычислить невозможно. Там же несколько частот?
Все , что невозможно, можно сделать возможным, если сделать невозможной возможность невозможности, и одну из этих возможностей дает нам интернет!
0

#81 Пользователь офлайн   KMG 

  • completely insane
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 08 апреля 2012 - 22:05

Сигнал то переменка, значит как минимум два раза за период самой нижней частоты он пересекает 0 линию.
Изображение
0

#82 Пользователь офлайн   Serzh_5 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 29 мая 2013 - 13:09

А какая нужна разрядность АЦП и ЦАП для хорошего делея?
0

#83 Пользователь офлайн   Lenivets 

  • Спроси -- подскажу
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 29 мая 2013 - 17:50

16 -- хорошо. Это качество СД.
12 - хуже, но еще терпимо
8 -- уже плохо, разве что с достаточным ослаблением и фильтрацией, чтобы сигнал маскировался основным.
Вся Электроника работает на Таинственном Синем Дыме. Ибо когда Дым из нее выходит, то Она работать перестает...
0

#84 Пользователь офлайн   Serzh_5 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 29 мая 2013 - 20:05

А вот интересно в РТ2399 какая разрядность? Нигде не могу найти.
0

#85 Пользователь офлайн   DiMaN 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 29 мая 2013 - 21:34

И не найдешь. Там "следящий" АЦП на основе дельта-модулятора. У него выходной код одноразрядный и передает не абсолютное значение сигнала, а лишь знак разности между "мгновенными" значениями входного сигнала и его восстановленной копией из цифровой последовательности. Типа больше или меньше , 0 или 1. Качество восстановления напрямую зависит от так называемой "дельты"(отсюда и название "дельта-модулятор"), которая чем меньше, тем лучше. А дельта зависит от тактовой частоты и емкости интегратора и в нашем случае можно лишь косвенно оценить "разрядность АЦП". В среднем около 10, на высокой тактовой чуть больше разрядов на низкой поменьше.Это все образно. Если интересно-Гугл в помощь. Поэтому все и слышат "цифровой шум" на больших задержках. Это из за плохого качества АЦП и ЦАП в РТ-шке.
0

#86 Пользователь офлайн   deluxe87 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 07 июня 2014 - 18:05

Друзья, а кто нибудь пробовал реализовывать эффекты на плате stm32vl discovery? У меня сейчас диплом по этой теме. На плате стоит STM32F100RB чип, который содержит два 12битных ацп и цапа, которые могут работать как 1 24битный соответственно. Я пытаюсь сделать несколько эффектов, но пока - что я смог просто пускать сигнал с ацп в цап, усиливая громкость, либо ослабляя. могу привести сишный код. (работаю в CooCox). Но я ещё не очень силен в программировании и не могу понять, как реализовать например тремоло

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"

void delay(void)
{
volatile uint32_t i;
for(i=1; i != 0xF000; i++);
}

int main(void) {

//GPIO_InitTypeDef PORT;
//Включаем порты А и С
RCC_APB2PeriphClockCmd((RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA) , ENABLE);
//Порт A настраивать смысла нет, все его ноги по умолчанию входы что нам и нужно
RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); //Включаем тактирование АЦП

/* Включаем порт А */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* Включаем ЦАП */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

/* Настраиваем ногу ЦАПа */
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);

ADC1->CR2 |= ADC_CR2_CAL; //Запуск калибровки АЦП
while (!(ADC1->CR2 & ADC_CR2_CAL)) ; //Ожидаем окончания калибровки
ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); //Задаем

ADC1->CR2 |= ADC_CR2_JEXTSEL; //Преобразование инжектированной группы

ADC1->CR2 |= ADC_CR2_JEXTTRIG; //Разрешаем внешний запуск инжектированной группы
ADC1->CR2 |= ADC_CR2_CONT; //Преобразования запускаются одно за другим
ADC1->CR1 |= ADC_CR1_JAUTO; //Разрешить преобразование инжектированной группы
//после регулярной. Не понятно зачем, но без этого не работает
ADC1->JSQR |= (1<<15); //Задаем номер канала (выбран ADC1)

ADC1->CR2 |= ADC_CR2_ADON;//Теперь включаем АЦП
ADC1->CR2 |= ADC_CR2_JSWSTART; //Запуск преобразований

/* Включить DAC1 */
DAC->CR |= DAC_CR_EN1;

while (!(ADC1->SR & ADC_SR_JEOC)); //ждем пока первое преобразование завершится

//Теперь можно читать результат из JDR1
//uint32_t adc_res; //Использовал переменную для отладки. Можно и без неё

while(1)
{
DAC->DHR12R1=ADC1->JDR1*4; //умножаем или делим на цифру для усиления или ослабления громкости
}
}

Собственно весь смысл программы в цикле while - из ацп прямиком в цап, умноженное на 4 для усиления сигнала. Понятно, что для тремоло эффекта нужно изменять число-множитель в последней строчке. Но как сделать так, чтоб оно менялось с небольшой частотой?

если в этот цикл вставить delay(30); - то звук будет похож на тот, что в приставках денди/сега :) - эдакий бит-крашер . А при изменении числа задержки - тембр будет меняться - довольно интересный звук - пробовал с бас гитарой, получается забавный фузз.

Сообщение отредактировал deluxe87: 07 июня 2014 - 18:01

0

#87 Пользователь офлайн   Маклауд 

  • Злой модер
  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 10 июня 2014 - 20:55

deluxe87, посмотри в сторону DDS. Алгоритм весьма простой.
Заводим переменную, которая называется аккумулятор фазы, например, uint16_t phac (phase accumulator). Каждую, например, миллисекунду, прибавляем к phac другую переменную — uint16_t speed. От её значения зависит скорость роста аккумулятора фазы, что видно по названию. Реально в ней будут использоваться бит 10-11, не больше. При достижении максимального значения phac обнулится, как механический счётчик в старом магнитофоне.
Затем берём старшие 8 байт от phac. Загоняем в переменную uint8_t addr.
А дальше берёшь значение (на которое надо умножить/поделить аудиосигнал) из массива размером 8bit?256 по адресу, лежащем в переменной addr. То есть в этом массиве записана форма огибающей. Либо вставляешь addr в какую-нибудь формулу. Сам по себе график изменения addr представляет собой пилу.

А прикол метода в том, что значение переменной speed может быть настолько маленьким, что addr будет возрастать на 1 раз в несколько (десятков, сотен) миллисекунд, а может быть настолько большим, что за одну миллисекунду addr будет возрастать на несколько единиц. И частота может настраиваться очень точно, вплоть до долей герца на всём диапазоне частот.

Получается, что нужно настроить один таймер так, чтобы он вызывал прерывания каждую миллисекунду, например, и в обработчик прерывания засунуть этот алгоритм.
"...Металлисты - это самый развитой и передовой класс, и никто не может отрицать, что это и есть передовой отряд всего пролетариата." (В.И. Ленин, "Полное Собрание Сочинений", том 24)
1

#88 Пользователь офлайн   deluxe87 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 13 июня 2014 - 19:38

Спасибо, попробую. Вот выложу ещё код, который срезает ВЧ - его надо вставить в цикл while

while(1)
{

static uint32_t Dacc = 0;
static uint32_t Dout = 0;
uint32_t Din = ADC1->JDR1;

Dacc = Dacc + Din - Dout;
Dout = Dacc/128; //значение делителя задает частоту среза, желательно ставить кратно 2

DAC->DHR12R1=Dout;
}
взято отсюда http://chipenable.ru...ovoy-filtr.html

Сообщение отредактировал deluxe87: 13 июня 2014 - 19:38

0

#89 Пользователь офлайн   WRD 

  • Вставить ник
  • Цитировать
  • Раскрыть информацию

Отправлено 11 ноября 2014 - 19:36

я не понял чем PIC контролеры хуже AVR и ARM? просто очень интересна данная тема и возможности разных МК.

просто большинство распространенных PIC уже имеют на борту ADC 10-12 бит, оперативу больше 512 байт и кучу расширений. этого достаточно для реализации одного, двух эффектов на одной МК? например банального дилея 20мс-2с? по моему всяко лучше PTхи?

Прикрепленный файл  PIC16F628A.pdf (1,38МБ)
Количество загрузок:657 http://ww1.microchip...eDoc/30289b.pdf

и вообще у кого-нибудь кроме Kurtz'а что-то вышло?
0

Поделиться темой:


  • 3 Страниц +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

5 человек читают эту тему
0 пользователей, 5 гостей, 0 скрытых пользователей

Спасибо админам и создателям форума, которые развивали ресурс вплоть до мая 2022 года: Kanistra, Nazarett, Satriani, Плохиш, Тяп !