Страница 1 из 1
Звук по команде AVR
Добавлено: Пн авг 12, 2013 14:07:50
Dreenpeace
Доброго времени суток дорогие коты
Уже давно я столкнулся с такой проблемой:
В моём проекте необходимо сопровождать работу несложного устройства на Atmega8 звуковыми эффектами, таковых всего три и длинной один в 3 секунды, а оставшиеся два менее секунды. Пробовал я решить это различными путями (и через ЦАП и с флешки), но никак не получалось и в итоге я это проект забросил, но сейчас его нужно всё таки доделать.
Подскажите пожалуйста как можно реализовать воспроизведение этих трёх нужных мне звуков без всяческих функций паузы и т.п. желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём. Для начала чтобы по нажатию одной из трёх кнопок подключенных к avr'ке воспроизводился звук соответствующий этой кнопке.
Заранее огромное спасибо, очень надеюсь на вашу помощь.
Re: Звук по команде AVR
Добавлено: Пн авг 12, 2013 15:38:09
orinoko
А что собой представлять должен это звук? Он может быть разный и соответственно решения разные. Если однотонный звук (например разной частоты) это одно, если нужно слова проговаривать - другое. Кстати, для несложных звуков можно использовать AY-3-8912 (использовался как звуковой процессор на Спектруме). Легко программируется, не занимает почти процессорного времени, мелодия занимает мало места.
Re: Звук по команде AVR
Добавлено: Пн авг 12, 2013 15:50:13
Dreenpeace
orinoko писал(а):А что собой представлять должен это звук?
Звук представляет собой первый (который 3 секунды) что-то наподобие сирены, которая будет повторяться, оставшиеся два (те что покороче) тоже что-то наподобие сирены, но очень короткой и проигрывается только 1 раз (первый перед запуском основной сирены, а второй перед её отключением)
P.S. Делаю контрольную точку "пейнтбол-лазертаг"
Re: Звук по команде AVR
Добавлено: Пн авг 12, 2013 16:47:28
uk8amk
Сиреноподобные звуки легко организуются с помощью таймера.
Заводите таймер в режим CTC, чтоб выход таймера менял свое состояние при переполении(Toggle). На выходе будет прямоугольник.
В регистр сравнения кидаете значения, соответсвующие частоте звука в каждый момент.
Инкремент-декремент частоты можно делать как в прерывании, так и в программной задержке.
Re: Звук по команде AVR
Добавлено: Пн авг 12, 2013 19:04:58
АСУ
Dreenpeace писал(а):Подскажите пожалуйста как можно реализовать воспроизведение этих трёх нужных мне звуков без всяческих функций паузы и т.п. желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.
http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/
Re: Звук по команде AVR
Добавлено: Пн авг 12, 2013 20:10:29
zero648
Dreenpeace писал(а):... желательно не средствами atmega8 который выполняет основную программу, а каким либо другим путём.
Чем же занимается atmega8, что ей некогда звуки воспроизводить? Может Вы её недооцениваете, на звуки то нужно совсем немножко процессорного времени, ну конечно придется пожертвовать одним таймером с выходом OCn.
Re: Звук по команде AVR
Добавлено: Ср авг 14, 2013 22:12:41
Dreenpeace
Идея хорошая и удобная, НО когда собрал я сие на макетке, оно не заработало

завтра попробую заново и ещё хотелось бы немного переделать под себя, но исходник на "инопланетном", непонятном для меня языке
uk8amk писал(а):Сиреноподобные звуки легко организуются с помощью таймера.
Заводите таймер в режим CTC, чтоб выход таймера менял свое состояние при переполении(Toggle). На выходе будет прямоугольник.
В регистр сравнения кидаете значения, соответсвующие частоте звука в каждый момент.
Инкремент-декремент частоты можно делать как в прерывании, так и в программной задержке.
А можно пожалуйста по подробнее как это можно сделать в CodeVision, ато я с таймерами работать почти не умею, время отсчитывать по часовому кварцу с трудом смог
Одно дело когда зашёл на сайт, скопипастил оттуда код и радуешься если заработало, а другое когда разобрался что к чему и понял как делать
Re: Звук по команде AVR
Добавлено: Чт авг 15, 2013 18:18:53
АСУ
Dreenpeace писал(а):Идея хорошая и удобная, НО когда собрал я сие на макетке, оно не заработало

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


Язык Algorithm Builder (графический ассемблер). У меня работало без проблем.
Re: Звук по команде AVR
Добавлено: Чт авг 15, 2013 18:59:29
Dreenpeace
Собрал я сегодня заново, уже не на макетке, но всё равно не работает
АСУ писал(а):У меня работало без проблем.
Собирали всё также как и там? На SMD?
Я собрал всё ка и там и фюзы выставил как там, только всё не в SMD, конденсаторы на 100µ мне дали 25 вольтовые, такие подойдут?
Когда я всё это подключаю, светодиоды горят оба (причём независимо от того сидит контроллер в кроватке или нет) а из динамиков какое то шипение с писком противным.
на подключение флешки никак не реагирует

АСУ писал(а): 
Язык Algorithm Builder (графический ассемблер).
Скачал я этот Algorithm Builder, хрен пойми что, ничего не понятно (((
Re: Звук по команде AVR
Добавлено: Чт авг 15, 2013 22:34:35
uk8amk
А можно пожалуйста по подробнее как это можно сделать в CodeVision
С такими настройками при тактовой частоте 8МГц можете менять частоту выхода от 244Гц и выше.
Для смены частоты можете использовать прерывание того же таймера(нужно включить флажок Compare Match Interrupt).
Re: Звук по команде AVR
Добавлено: Пт авг 16, 2013 07:23:11
oleg110592
Если оцифровать звук 8 кГц 8 бит для 5 сек понадобиться 5*8000=40000 байт. Можно поставить микроконтроллер с 64К флэш - например мега64, мега644. Можно подключить к микроконтроллеру внешнюю память SPI - например AT25DF041 (в ней звук). Звук выводить через шим микроконтроллера с фильтрацией RC цепочкой - звук вполне получится приемлемый.
Re: Звук по команде AVR
Добавлено: Пт авг 16, 2013 07:51:04
pyzhman
Re: Звук по команде AVR
Добавлено: Пт авг 16, 2013 09:36:56
АСУ
Dreenpeace писал(а):Собирали всё также как и там? На SMD?
Проверял на макетке, элементы естественно выводные.
SD card подключается до подачи питания на МК. Подробности не помню… давно это было… но в статье всё подробно описано. Есть там ещё и форум.
Dreenpeace писал(а):Скачал я этот Algorithm Builder, хрен пойми что, ничего не понятно (((
Это естественно при изучении нового для себя «языка».

Re: Звук по команде AVR
Добавлено: Пт авг 16, 2013 20:55:28
стьюдент
О формирование звука с помощью МК неплохо написано в книге "Белов А.В. Создаем устройства на микроконтроллерах",2007. Главы называется Формирование звука и Музыкальная шкатулка.
Re: Звук по команде AVR
Добавлено: Сб дек 12, 2015 14:38:12
123LancerX
Нужна помощь. Есть
плеер который будет на меге8. Мне нужно чтоб кто то перевел ноты похоронного марша на код который будет понятен данному плееру. есть код с нокиа 3310.
Re: Звук по команде AVR
Добавлено: Сб дек 12, 2015 19:33:58
uk8amk
Обратите внимание на этот материал:
viewtopic.php?t=95076Там есть очень неплохой midi конвертер.
Re: Звук по команде AVR
Добавлено: Сб дек 12, 2015 20:34:17
Mishany
встречал звуковой информатор на тини2313А воспроизводит с флешки вавки
Re: Звук по команде AVR
Добавлено: Сб дек 12, 2015 21:02:54
123LancerX
uk8amk писал(а):Обратите внимание.
Это для меня сложно очень. Нужны ресурсы Т1 для другого.
Re: Звук по команде AVR
Добавлено: Вс дек 13, 2015 08:50:41
COKPOWEHEU
У ATmega8 аж 3 канала ШИМ. Неужели ни одного свободного нет. Это не говоря обо всяких извращениях вроде ШИМ через UART, SPI и прочие нестандартные интерфейсы. Правда вот они будут нехило тратить скорость.
Re: Звук по команде AVR
Добавлено: Вс дек 13, 2015 11:18:35
uk8amk
Вполне можно обойтись ресурсами одного таймера если частота дескретизации будет равна или кратной частоте ШИМ.
Но если сложно, то и ладно.
Там по вашей ссылке в комментариях предлагают прогу для создания мелодий. Осталось открыть интересующую midi-шку в музыкальном редакторе и срисовать ноты в конвертер.