Звук по команде AVR

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт июл 23, 2013 20:22:43

Сообщение Dreenpeace »

Доброго времени суток дорогие коты :)
Уже давно я столкнулся с такой проблемой:
В моём проекте необходимо сопровождать работу несложного устройства на Atmega8 звуковыми эффектами, таковых всего три и длинной один в 3 секунды, а оставшиеся два менее секунды. Пробовал я решить это различными путями (и через ЦАП и с флешки), но никак не получалось и в итоге я это проект забросил, но сейчас его нужно всё таки доделать.
Подскажите пожалуйста как можно реализовать воспроизведение этих трёх нужных мне звуков без всяческих функций паузы и т.п. желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём. Для начала чтобы по нажатию одной из трёх кнопок подключенных к avr'ке воспроизводился звук соответствующий этой кнопке.
Заранее огромное спасибо, очень надеюсь на вашу помощь.
Реклама
orinoko

Сообщение orinoko »

А что собой представлять должен это звук? Он может быть разный и соответственно решения разные. Если однотонный звук (например разной частоты) это одно, если нужно слова проговаривать - другое. Кстати, для несложных звуков можно использовать AY-3-8912 (использовался как звуковой процессор на Спектруме). Легко программируется, не занимает почти процессорного времени, мелодия занимает мало места.
Реклама
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт июл 23, 2013 20:22:43

Сообщение Dreenpeace »

orinoko писал(а):А что собой представлять должен это звук?
Звук представляет собой первый (который 3 секунды) что-то наподобие сирены, которая будет повторяться, оставшиеся два (те что покороче) тоже что-то наподобие сирены, но очень короткой и проигрывается только 1 раз (первый перед запуском основной сирены, а второй перед её отключением)

P.S. Делаю контрольную точку "пейнтбол-лазертаг"
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Сиреноподобные звуки легко организуются с помощью таймера.
Заводите таймер в режим CTC, чтоб выход таймера менял свое состояние при переполении(Toggle). На выходе будет прямоугольник.
В регистр сравнения кидаете значения, соответсвующие частоте звука в каждый момент.
Инкремент-декремент частоты можно делать как в прерывании, так и в программной задержке.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

Dreenpeace писал(а):Подскажите пожалуйста как можно реализовать воспроизведение этих трёх нужных мне звуков без всяческих функций паузы и т.п. желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.
http://www.getchip.net/posts/087-attiny ... ng-device/
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

Dreenpeace писал(а):... желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.
Чем же занимается atmega8, что ей некогда звуки воспроизводить? Может Вы её недооцениваете, на звуки то нужно совсем немножко процессорного времени, ну конечно придется пожертвовать одним таймером с выходом OCn.
Реклама
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт июл 23, 2013 20:22:43

Сообщение Dreenpeace »

АСУ писал(а):
Dreenpeace писал(а):Подскажите пожалуйста как можно реализовать воспроизведение этих трёх нужных мне звуков без всяческих функций паузы и т.п. желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.
http://www.getchip.net/posts/087-attiny ... ng-device/
Идея хорошая и удобная, НО когда собрал я сие на макетке, оно не заработало :( завтра попробую заново и ещё хотелось бы немного переделать под себя, но исходник на "инопланетном", непонятном для меня языке :(
uk8amk писал(а):Сиреноподобные звуки легко организуются с помощью таймера.
Заводите таймер в режим CTC, чтоб выход таймера менял свое состояние при переполении(Toggle). На выходе будет прямоугольник.
В регистр сравнения кидаете значения, соответсвующие частоте звука в каждый момент.
Инкремент-декремент частоты можно делать как в прерывании, так и в программной задержке.
А можно пожалуйста по подробнее как это можно сделать в CodeVision, ато я с таймерами работать почти не умею, время отсчитывать по часовому кварцу с трудом смог :(
Одно дело когда зашёл на сайт, скопипастил оттуда код и радуешься если заработало, а другое когда разобрался что к чему и понял как делать
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

Dreenpeace писал(а):Идея хорошая и удобная, НО когда собрал я сие на макетке, оно не заработало :( завтра попробую заново и ещё хотелось бы немного переделать под себя, но исходник на "инопланетном", непонятном для меня языке :(
:))) Язык Algorithm Builder (графический ассемблер). У меня работало без проблем.
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт июл 23, 2013 20:22:43

Сообщение Dreenpeace »

Собрал я сегодня заново, уже не на макетке, но всё равно не работает :(
АСУ писал(а):У меня работало без проблем.
Собирали всё также как и там? На SMD?
Я собрал всё ка и там и фюзы выставил как там, только всё не в SMD, конденсаторы на 100µ мне дали 25 вольтовые, такие подойдут?
Когда я всё это подключаю, светодиоды горят оба (причём независимо от того сидит контроллер в кроватке или нет) а из динамиков какое то шипение с писком противным.
на подключение флешки никак не реагирует :(
АСУ писал(а): :))) Язык Algorithm Builder (графический ассемблер).
Скачал я этот Algorithm Builder, хрен пойми что, ничего не понятно (((
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

А можно пожалуйста по подробнее как это можно сделать в CodeVision
С такими настройками при тактовой частоте 8МГц можете менять частоту выхода от 244Гц и выше.
Для смены частоты можете использовать прерывание того же таймера(нужно включить флажок Compare Match Interrupt).
Вложения
CTC_test.PNG
(14.16 КБ) 444 скачивания
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Если оцифровать звук 8 кГц 8 бит для 5 сек понадобиться 5*8000=40000 байт. Можно поставить микроконтроллер с 64К флэш - например мега64, мега644. Можно подключить к микроконтроллеру внешнюю память SPI - например AT25DF041 (в ней звук). Звук выводить через шим микроконтроллера с фильтрацией RC цепочкой - звук вполне получится приемлемый.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Есть еще вот такое - http://elm-chan.org/works/sd20p/report.html
Docendo discimus
Контактная информация:
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

Сообщение АСУ »

Dreenpeace писал(а):Собирали всё также как и там? На SMD?
Проверял на макетке, элементы естественно выводные.
SD card подключается до подачи питания на МК. Подробности не помню… давно это было… но в статье всё подробно описано. Есть там ещё и форум.
Dreenpeace писал(а):Скачал я этот Algorithm Builder, хрен пойми что, ничего не понятно (((
Это естественно при изучении нового для себя «языка». :))
Открыл глаза
Сообщения: 47
Зарегистрирован: Вт мар 20, 2012 07:16:43

Сообщение стьюдент »

О формирование звука с помощью МК неплохо написано в книге "Белов А.В. Создаем устройства на микроконтроллерах",2007. Главы называется Формирование звука и Музыкальная шкатулка.
Родился
Сообщения: 4
Зарегистрирован: Вт июл 09, 2013 17:22:56

Сообщение 123LancerX »

Нужна помощь. Есть плеер который будет на меге8. Мне нужно чтоб кто то перевел ноты похоронного марша на код который будет понятен данному плееру. есть код с нокиа 3310.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Обратите внимание на этот материал:
http://radiokot.ru/forum/viewtopic.php?t=95076
Там есть очень неплохой midi конвертер.
Электрический кот
Аватара пользователя
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

Сообщение Mishany »

встречал звуковой информатор на тини2313А воспроизводит с флешки вавки
Родился
Сообщения: 4
Зарегистрирован: Вт июл 09, 2013 17:22:56

Сообщение 123LancerX »

uk8amk писал(а):Обратите внимание.
Это для меня сложно очень. Нужны ресурсы Т1 для другого.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

У ATmega8 аж 3 канала ШИМ. Неужели ни одного свободного нет. Это не говоря обо всяких извращениях вроде ШИМ через UART, SPI и прочие нестандартные интерфейсы. Правда вот они будут нехило тратить скорость.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Вполне можно обойтись ресурсами одного таймера если частота дескретизации будет равна или кратной частоте ШИМ.
Но если сложно, то и ладно.
Там по вашей ссылке в комментариях предлагают прогу для создания мелодий. Осталось открыть интересующую midi-шку в музыкальном редакторе и срисовать ноты в конвертер.
Ответить

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