Воспроизведение WAV без SD\MMC-карты

Обсуждаем контроллеры компании Atmel.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

oleg110592 писал(а):Чен из двух выходов 8 бит шима сделал 16-битный шим
Ну, я этого не вижу, если честно. Как оно задумывалось работать? Сложение 1 к 256?
ptr128 писал(а):Используейте Fast PWM и сможете до 4МГц получить.
у меги-8 максимальная частота 16 МГц. 8-разрядный ШИМ (Fast PWM) делит частоту на 256 (без предделителя, с — больше). Итого 62,6 кГц уже на 8 битах. Что тут ещё можно такого приготовить чтобы получить 4 МГц?
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Чего там ерундой заниматься, ставте тиньку от внутреннего генератора и MP3 плейер https://ru.aliexpress.com/item/Mini-MP3 ... 5cc243c7a8
за 70 руб. Ничего кодировать-декодировать не надо. Всё просто и сердито.
Описание здесь http://image.dfrobot.com/image/data/DFR ... 0Manul.pdf
Мною проверено, всё отлично работает.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Сообщение ptr128 »

у меги-8 максимальная частота 16 МГц. 8-разрядный ШИМ (Fast PWM) делит частоту на 256
В Phase correct PWM mode - да. В Fast PWM - можно делить на два, что я и написал. Просто управлять частотой нужно будет не только загружая регистр сравнения, то и меняя TOP таймера.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

B@R5uk писал(а):Как оно задумывалось работать? Сложение 1 к 256?
да
Изображение
http://web.archive.org/web/201107131312 ... pwmdac.php
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

oleg110592, крайне тяжело будет подогнать сопротивления, потому что точность должна быть бешеной. Либо придётся калибровать коэффициент подаваемых на младший ШИМ величин.
ptr128 писал(а):Просто управлять частотой нужно будет не только загружая регистр сравнения, то и меняя TOP таймера.
Ну, это, конечно, замечательная идея — увеличить густоту сетки не за счёт понижения частоты, а за счёт использования отношения двух небольших целых чисел. Однако, чтобы реализовать даже 12 бит какую же надо таблицу составить? Или есть какая-то замечаельная формула превратить число X из 12 бит в два числа N и M по 7-8 бит так, чтобы выполнялось соотношение

X / 2^12 ≈ M / N

с точностью не хуже 1/2^13?
Vov123 писал(а):...и MP3 плейер за 70 руб. Ничего кодировать-декодировать не надо...
Ничего вы не понимаете в суровой мужской радиотехническо-программисткой романтике.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

B@R5uk писал(а):крайне тяжело будет подогнать сопротивления, потому что точность должна быть бешеной. Либо придётся калибровать коэффициент подаваемых на младший ШИМ величин.
решаемо, раз на Марсе такой способ применяют: :) http://www.edn.com/design/analog/432936 ... 16-bit-DAC
для нормального звука, точность местный народ подбирает методом тыка (см. схему, резистор R16):
http://radiokot.ru/circuit/digital/game/32/
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2896
Зарегистрирован: Сб ноя 13, 2010 12:53:25
Откуда: приходит весна?

Сообщение B@R5uk »

oleg110592 писал(а):для нормального звука, точность местный народ подбирает методом тыка
Логично. Но вся прелесть ШИМа в том, что шикарная линейность достигается за счёт стабильности частоты. Никаких настроек не надо.

Между тем я тут покрутил формулы для рациональных отношений, чтобы увеличить точность ШИМа за счёт дополнительной регулировки периода, что предложил ptr128. Действительно, сетка уровней квантования становится гуще, но слишком неравномерно. В одних местах целые скопления новых уровней, в других — прорехи величиной в половину от максимально возможного. То бишь, в одних местах точность растёт на 1 бит, в других — чуть ли не в два раза.

Всё-таки сигма-дельта модуляция гораздо предпочтительней любого ШИМа. Не только точностью, но и отсутствием проблем с фильтрацией.
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

B@R5uk писал(а):
abc писал(а):чип SPI-FLASH объемом 8 МБайт стоит 30 рублей.
А можно пару примеров моделей таких чипов?
https://www.aliexpress.com/item/free-sh ... 60841.html
в общем, кодовое слово - 25Q64
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Сообщение fedyasolder »

Внешняя SPI-flash трямкает. Использовал MX25L1605. Флеш шил с помощью PROTOSSA. Для этого нужно прошить его ПО с поддержкой SPI-flash. Программа-прошивальщик флеш AsProgrammer и прошивка для PROTOSS тут. Поддержка прошивки AVR сохраняется, фьюзы не трогал. Флеш к PROTOSS для программирования подключается таким образом:
MOSI - DIO
RESET - CS
SCK - CLK
MISO - DO
WP и HOLD подтянуты к питанию.

Заливается во флеш тот же самый sound.raw как есть с нулевого адреса.
После прошивки флеш прошиваем наш МК программой. Исправьте частоту в BAS, я подключил внешний кварц 14.319МГц
Я подключал по сл схеме. WP и HOLD так и остались на питании для дальнейших опытов над крысами.

Изображение


Трямкает по нажатию кнопки. Звук пока грязненький, надо подключить к УНЧ и поиграться.Есть подозрение что работа SPI влияет на работу таймера ШИМ.
Вложения
схема.GIF
(8.3 КБ) 883 скачивания
ПО.rar
(2.24 КБ) 176 скачиваний
электропримат паяю даже лёжа...
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

Во, замечательный подход.
Теперь, если прям нужно будет, можно и с кодеками поиграться, не опасаясь, что что-то куда-то не влезет.
Я бы добавил заливку с ПК во флэш средствами самого МК по UART-у.
Если надо, могу поискать софтину для ПК, когда-то писал на дельфи.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Сообщение fedyasolder »

В инициализации нужно указать

Код: Выделить всё

MODE = 3
, тогда звук лучше становится. Таймеры использовать не стал. На ебее десяток Atmega8A-PU стоит дешевле десятка Tiny85 (которые в плеере Чана на SD-карте). Тем самым выигрываем по деньгам и ногам, и длине кода. А вывод можно попробовать ещё упростить без ШИМ - весь байт выборки выдавать в порт на резисторный ЦАП. Можно как есть в часы делать внедрёж.
===
Опыты делал на такой плате. Дополнительно разведена всякая всячина.
===
abc писал(а):Я бы добавил заливку с ПК во флэш средствами самого МК по UART-у.
Если надо, могу поискать софтину для ПК, когда-то писал на дельфи.
Это единственное чего не хватает. Нифига не смог придумать. Если просто транслировать на флешку протокол программатора, то мешает ресет.
Вложения
плата.rar
(48.8 КБ) 166 скачиваний
электропримат паяю даже лёжа...
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

Тогда стоит сначала придумать протокол общения, под него смогу адаптировать софт.
У меня было так, можно взять за основу :
параметры UART-а : 57600-8-N-1

Первый байт - 0xFE, второй - номер трека, затем данные в raw непрерывно льются без каких-либо проверок.
Весь поток разбивается на блоки по 4кБ (вроде) с небольшой паузой между ними, чтобы МК успевал писать сектор во флэш.
Окончание записи - просто по таймауту, когда ПК перестает слать данные.

Отдельная команда - стирание трека (0xFE,0xAA,0xCC и один байт с номером трека).
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Сообщение fedyasolder »

Проще нужно. Я сделал так: объединил все звуковые файлы в один, а в код вставил параметры треков (длина, страница начала трека, смещение трека от начала страницы). Думаю использовать eeprom МК для таблицы параметров треков заморочно (если это сам МК не делает).

Код: Выделить всё

'информация о файлах
Dim Slen(7) As Integer
Dim Spage(7) As Byte
Dim Soffset(7) As Byte

Slen(1) = 27550 : Spage(1) = 0 : Soffset(1) = 0
Slen(2) = 7483 : Spage (2) =  107 : Soffset (2) = 158
Slen(3) = 7728 : Spage (3) =  136 : Soffset (3) = 217
Slen(4) = 5859 : Spage (4) =  167 : Soffset (4) = 9
Slen(5) = 5331 : Spage (5) =  189 : Soffset (5) = 236
Slen(6) = 11557 : Spage (6) =  210 : Soffset (6) = 191
Slen(7) = 11833 : Spage (7) =  255 : Soffset (7) = 228
СпойлерИзображение
Считаю что достаточно чтобы программа умела отправлять в МК данные одним куском для начала.
Вложения
Сохраненное изображение 2016-10-18_21-40-41.437.png
(20.81 КБ) 586 скачиваний
данные.rar
(7.45 КБ) 175 скачиваний
электропримат паяю даже лёжа...
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

Т.е. в программе ничего не надо, кроме как выбрать файл и нажать кнопку "Загрузить" ?
Если так, то и ладно :) Прям срочно не обещаю, но завтра будет.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Сообщение fedyasolder »

Это не срочно. Но функция чтения не помешает на всякий случай.
Ближайшую поделку сделаю прямой прошивкой памяти. Файлы raw можно объединять в winhex через меню tools -> file tools -> concatenate. Программа предложить указать выходное имя файла и будет запрашивать файлы для объединения до тех пор пока не будет выбрано done. Удобнее чем копипастить.
===
Готовый код для последовательного воспроизведения файлов. Проверено на 25X80VSIG. Звук подшипливает, но не из-за ШИМ, а из-за 8 бит, в аудиоредакторе тоже подшипливает. Будем думать как улучшить. У меня конечно есть SPI-ЦАП... но это слишком просто. :)))
Vov123 писал(а):Чего там ерундой заниматься, ставте тиньку от внутреннего генератора и MP3 плейер https://ru.aliexpress.com/item/Mini-MP3 ... 5cc243c7a8
за 70 руб. Ничего кодировать-декодировать не надо. Всё просто и сердито.
Описание здесь http://image.dfrobot.com/image/data/DFR ... 0Manul.pdf
Мною проверено, всё отлично работает.
Ишь...барыгам на 70р гешефта... Нам бесплатно надо.
===
Sound Forge на выходе даёт raw без шума. Видимо Audacity автоматом делает дизеринг. Теперь норма.
Вложения
ПО.rar
(3.05 КБ) 171 скачивание
Последний раз редактировалось fedyasolder Ср окт 19, 2016 19:46:57, всего редактировалось 1 раз.
электропримат паяю даже лёжа...
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

Я не шибко большой программер, поэтому прочитать чип и собрать из нескольких файлов один - сделать можно, но это уже будет ооочень небыстро.
Пока только то, что есть.

При запуске программа выдает предупреждение о том, что ком-порт не найден, выставляем нужный руками.
Скорость жестко установлена в 115200.
Если память уже была прошита, то перед записью надо ее стереть, последовательность кодов на стирание - 0xFE, 0xAA, 0xCC, 0x00
При нажатии на Save первый байт - 0xFE, затем идет бинарник покетами по 256 байт, между которыми - небольшие паузы в 10 мс.
Вложения
SFl.rar
(179.26 КБ) 182 скачивания
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Сообщение fedyasolder »

Можно тогда добавить окошко для команд?
===
А по поводу сжатия... в запасе есть nand различного литража. Можно попробовать пихать данные в них.
электропримат паяю даже лёжа...
abc
Друг Кота
Аватара пользователя
Сообщения: 3687
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Сообщение abc »

Так они сейчас автоматом отправляются при нажатии соответствующей клавиши.
Это МК должен, получив ту или иную команду, либо стирать, либо писать в память.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2168
Зарегистрирован: Ср май 01, 2013 13:53:56
Откуда: с пальмы в Рио-Инженейро

Сообщение fedyasolder »

Сделал на Tiny13a, а он хренакс и на 4,800МГц работает вместо 9,6. То ли перемаркированный без "а" (васик ругается что не тот подсовываю), то ли не хочет от 3.1В на 9,6 работать. В итоге частота ШИМ ниже, звук дрянной выходит. Буду пробовать на mega8a с R-2R.
электропримат паяю даже лёжа...
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18678
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

фьюзы проверьте.

кстати, встроенный генератор можно "калибровать" - если верить даташиту, то можно увеличить частоту тактовую практически в 2 раза. так что есть шанс улучшить качество малой кровью :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Ответить

Вернуться в «AVR»