roboforum.ru

Технический форум по робототехнике.

ЦАП в AVR через ШИМ и вывод звука .WAV

ЦАП в AVR через ШИМ и вывод звука .WAV

sansher » 07 ноя 2008, 13:55

Хочу замутить "пищадку" вав файлов на АВРке. Собсна вавки будут лежать на флешке, а звук выводиться через ШИМ (качество не критично :o ).
Никто не видел подобных проектов. Как .wav выводить через ШИМ ?

АпНоут AVR335 ATMEL - цифровой диктофон - есть там http://avr123.nm.ru/07.htm - в низу странички.

Можно в PROTEUS выводить звук из симулируемого устройства на аудиокарту ПК !

Генерация ШИМ - http://avr123.nm.ru/z8.htm Фильтрация сигналов - http://avr123.nm.ru/z09b.htm

Re: ВАВ через ШИМ

=DeaD= » 07 ноя 2008, 14:02

А в чем проблема? Как выдать на ШИМ нужную скважность или что?

Добавлено спустя 1 минуту 48 секунд:
Допустим у вас дискретизация 8 бит, 44КГц, 44000 раз в секунду ставите прерывание и в нём берете очередной байт и выставляете в него скважность ШИМ. Готово.

Или как из ШИМа сделать аналоговый выход? RC-фильтр ставьте.

Re: ВАВ через ШИМ

EdGull » 07 ноя 2008, 14:19

так уважаемый Blindman уже давано все сделал и выложил, а я спаял и проверил...

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

sansher » 07 ноя 2008, 15:29

:shock: А где? Я видел, но там через ковокс вроде... куча ног съедается...

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

EdGull » 07 ноя 2008, 15:33

да, там на ковоксе. но тогда не надо фильтры активые строить.
всё равно ног немеряно.

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

Duhas » 07 ноя 2008, 18:54

если качество не столь важно, то и после шима хватит РЦ цепочки..

а после этого ковокса тоге бы не помешала РЦ ....

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

blindman » 07 ноя 2008, 19:24

Duhas писал(а):если качество не столь важно

Я бы сказал, если качество не столь важно - юзаем covox, если совсем не важно - сойдет и ШИМ.

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

sansher » 07 ноя 2008, 20:22

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

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

blindman » 07 ноя 2008, 20:41

Флэша хватит, если постараться. У меня была проблема с ОЗУ - 1KiB было маловато для буферов. Но для воспроизведения с низким качеством (но все же лучше чем с ШИМ) думаю будет достаточно

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

sansher » 07 ноя 2008, 20:45

А вы делали на Меге8? Можно исходники?

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

blindman » 07 ноя 2008, 20:46

Да, еще забыл - у меня программа написана в расчете на тактовую частоту 8 МГц. Если будет 16 МГц - читать с карты можно будет быстрее, соответственно и качество выше.

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

sansher » 07 ноя 2008, 20:49

Будет 16. У меня от 5в питается все.
http://eldigi.ru/site/house/18.php Поразбираюсь с этим. Написано проша занимает 5,2кб памяти :good: Нужно прикрутить I2C и впуть!

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

blindman » 07 ноя 2008, 20:53

Я тестировал на меге16, потом переписал на мегу32 - ЭдГулл запускал на ней. Но как я уже говорил, можно ужаться в мегу8. Исходники ищи в теме про звуковую карту для минибота. Возможности для оптимизации там есть - например использовать только моно, подключить ковокс к одному порту, а не раскидывать по нескольким, как у нас. И нужно будет удалить из библиотеки FAT неиспользуемые функции.

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

Trol » 30 май 2009, 01:50

Можно уложиться и в мегу8, причем, для воспроизведение с флеш-карты, отформатированной под FAT16/FAT32 wav-фрагментов будет достаточно и половины flash-памяти меги8. Пример: http://trol.nm.ru/sch/zvonokmmc/

Re: ЦАП в AVR через ШИМ и вывод звука .WAV

MiBBiM » 30 май 2009, 07:35

бейсик:
Код: Выделить всёРазвернуть
Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare B Pwm = Clear Down
Dim B As Byte
[...]

Open "1.wav" For Binary As #1

Do
   Do
      Waitus 50                                             'проигрывание 8кгц
      Get #1 , B
      Pwm1b = B
   Loop Until Eof(#1) <> 0
   Pwm1b = 1
   Wait 1
   Seek #1 , Pwm1b
Loop

это чтение вавки 8бит, 8кГц (для каждой частоты просто подбираем задержку)


Rambler\'s Top100 Mail.ru counter