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

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

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

Сообщение Dreenpeace »

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

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

Сообщение orinoko »

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

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

Сообщение Dreenpeace »

orinoko писал(а):А что собой представлять должен это звук?


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

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

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

Сообщение uk8amk »

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

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

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

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

http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

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

Сообщение zero648 »

Dreenpeace писал(а):... желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.

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

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

Сообщение Dreenpeace »

АСУ писал(а):
Dreenpeace писал(а):Подскажите пожалуйста как можно реализовать воспроизведение этих трёх нужных мне звуков без всяческих функций паузы и т.п. желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.

http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/

Идея хорошая и удобная, НО когда собрал я сие на макетке, оно не заработало :( завтра попробую заново и ещё хотелось бы немного переделать под себя, но исходник на "инопланетном", непонятном для меня языке :(

uk8amk писал(а):Сиреноподобные звуки легко организуются с помощью таймера.
Заводите таймер в режим CTC, чтоб выход таймера менял свое состояние при переполении(Toggle). На выходе будет прямоугольник.
В регистр сравнения кидаете значения, соответсвующие частоте звука в каждый момент.
Инкремент-декремент частоты можно делать как в прерывании, так и в программной задержке.

А можно пожалуйста по подробнее как это можно сделать в CodeVision, ато я с таймерами работать почти не умею, время отсчитывать по часовому кварцу с трудом смог :(
Одно дело когда зашёл на сайт, скопипастил оттуда код и радуешься если заработало, а другое когда разобрался что к чему и понял как делать
АСУ
Друг Кота
Сообщения: 3342
Зарегистрирован: Ср янв 02, 2013 08:37:35

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

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

Dreenpeace писал(а):Идея хорошая и удобная, НО когда собрал я сие на макетке, оно не заработало :( завтра попробую заново и ещё хотелось бы немного переделать под себя, но исходник на "инопланетном", непонятном для меня языке :(

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

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

Сообщение Dreenpeace »

Собрал я сегодня заново, уже не на макетке, но всё равно не работает :(

АСУ писал(а):У меня работало без проблем.

Собирали всё также как и там? На SMD?
Я собрал всё ка и там и фюзы выставил как там, только всё не в SMD, конденсаторы на 100µ мне дали 25 вольтовые, такие подойдут?
Когда я всё это подключаю, светодиоды горят оба (причём независимо от того сидит контроллер в кроватке или нет) а из динамиков какое то шипение с писком противным.
на подключение флешки никак не реагирует :(

АСУ писал(а): :))) Язык Algorithm Builder (графический ассемблер).

Скачал я этот Algorithm Builder, хрен пойми что, ничего не понятно (((
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

А можно пожалуйста по подробнее как это можно сделать в CodeVision

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

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

Сообщение oleg110592 »

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

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

Сообщение pyzhman »

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

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

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

Dreenpeace писал(а):Собирали всё также как и там? На SMD?

Проверял на макетке, элементы естественно выводные.
SD card подключается до подачи питания на МК. Подробности не помню… давно это было… но в статье всё подробно описано. Есть там ещё и форум.
Dreenpeace писал(а):Скачал я этот Algorithm Builder, хрен пойми что, ничего не понятно (((

Это естественно при изучении нового для себя «языка». :))
стьюдент
Открыл глаза
Сообщения: 47
Зарегистрирован: Вт мар 20, 2012 07:16:43

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

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

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

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

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

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

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

Сообщение uk8amk »

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

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

Сообщение Mishany »

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

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

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

uk8amk писал(а):Обратите внимание.

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

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

Сообщение COKPOWEHEU »

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

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

Сообщение uk8amk »

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

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