Tolko chto
Napisal programmu, kotoraya tsiklicheski wywodit na port logicheskie nuli i edinitsy. Iz massiva.
Esli w sootwetstwuyushem meste napisat
.DB 2,4,5,1
, Budet tsiklicheski wywodit
ЦАП можно навертеть на резистивной матрице. Кроме того, чуть ли не все АВРки поддерживают аппаратный ШИМ. Можно модулировать сигнал ШИМом, на выходе ставить фильтр - получится аналог
_________________ Лучше быть первым в деревне, чем вторым в Риме
Даташит на какую микросхему? Multiplexer - это мультиплексор, как ни странно ШИМ - широтно-импульсная модуляция. то есть, при неизменной частоте меняется длительность импульсов, за счет чего изменяется действующее напряжение в сигнале. Проинтегрированный ШИМ дает аналоговый сигнал, эквивалентный (пропорциональный - Р.) длине импульсов
_________________ Лучше быть первым в деревне, чем вторым в Риме
ksp4, мож те лучше надыбать сэмплов разных и загнать в МК? дешево и сердито звук - это несущая частота + гармоники и обертоны. Шум - это частотнораспределенный сигнал, есть белый, розовый шум. А как ты собираешься синтезировать звук, состоящий из 5-7 основых сигналов с гармониками и пары десятков обертонов - я не знаю.
_________________ путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь
Кароч, насчет разрешения звука: наиболее приличное качество начинается с 6 бит. Меньше - и не пробуй - плеваться будешь. Частота выборки - порядка 6...8 кГц. Ну будем считать - 6 (6144 - для круглости счета). Имеем: 6*6144 - 36864 бит/с = 4,5 кБайт/с. Память среднестатистического контроллера - 8 кБ - меньше 2 секунд. То есть - полюбому, на лицо - необходимость внешней памяти. Если религия позволяет - можно написать какой-нибудь простенький кодек. Но ресурсов он будет жрать много, а толку с него, боюсь, будет мало. Хотя можно попробовать
Итак, пошагово: че и как делаем:
1. Ужимаем ВАВ до параметров 6бит 6144 Гц. Ужатие до 6 бит подразумевает уменьшение дин. диапазона сигнала с 48 (8-бит) до 36 дБ. При этом, создастся вав-файл, состоящий из 8-битных семплов, два старших бита каждого семпла всегда будут равны 0.
2. Пишем софтульку, которая откусит от ВАВ-файла шапку и пожмакает семплы таким образом, что лишних нулей не станет. Получится куча-мала, которую ни один виндозный проигрыватель уже играть не станет. Да и не надо 3. Пишем вторую софтульку, которая переведет бинарный файл в шестнадцатеричное текстовое представление вида 0х00...0хFF. То есть, на ее выходе мы должны поиметь то, что будет вставлено в текст программы контроллера как массив.
4. Вставляем то что поимели в текст программы, пишем читатель массива и плеватель прочитанного в порт. Вешаем на копыта 6 резисторов, включаем, прошиваем, слушаем
_________________ Лучше быть первым в деревне, чем вторым в Риме
Зарегистрирован: Чт янв 12, 2006 00:17:30 Сообщений: 186 Откуда: Новосибирск, ИФП СО РАН
Рейтинг сообщения:0
Serega писал(а):
4. Вставляем то что поимели в текст программы, пишем читатель массива и плеватель прочитанного в порт. Вешаем на копыта 6 резисторов, включаем, прошиваем, слушаем
Тогда лучше уж все же ШИМ пользовать, ибо ног меньше требуется, да и сильно хорошо резисторы согласовывать не надо.
a stoit otojti na 1 metr ot dinamika (melkij, ot plohogo dwuhkassetnika), tolko gromkoe kwakanie slyshno. Widimo eto swojstwo dinamika ne izluchat wysokie chastoty. (?)
Zdes mozhno chto-nibud pridumat?
A pro PWM: prochital statiyu na etom sajte, chto-to ponyal, no
W datasheet na mega88 napisano, chto chtoby ispolzowat sootwetstwuyushuyu nozhku kontrollera dlya wstroennoj
PWM, nuzhno (ili ne nuzhno? )
ustanowit signalnye bity
PVOE i POV.
A po kakomu adresu ih mozhno iskatx, ya nikak ne smog najti. Raz 5 perechitywal.
3. Пишем вторую софтульку, которая переведет бинарный файл в шестнадцатеричное текстовое представление вида 0х00...0хFF. То есть, на ее выходе мы должны поиметь то, что будет вставлено в текст программы контроллера как массив.
Можно поподробней,где найти такую програмку, сам написать н7е могу? есть ли готовое решение? Очень нужна) Тоже идея научить говорить свою Мегу. Хочу чтобы называл температуру голосом.
Делал так.
Оцифровать (или переконвертировать) звуки в формат WAV PCM 8бит.
Переименовать в *.bin и с помощью Пони залить полученный файл в 24С512. Можно предварительно отрезать WAV-хедер (первые 35 байт) в любом HEX-редакторе.
Цепляем 24С512 к любому контроллеру, имеющему аппаратный I2C.
В цикле читаем данные из памяти (можно побайтно) и тут же гоним их на ЦАП. Я использовал R-2R цепочку.
А вот если мне надо записать несколько сэмплов маленьких(например для каждой цифры) а потом уже смотря какое число проигрывать нужные сэмплы, как быть? Чтобы для числа 36 например проиграть сэмпл "3" а следом за ним "6". Ну а программку кто-нибудь подскажет для перевода?
У меня качество звука с ШИМ было очень плохим. Если трафег халявный, можете послушать чего у меня получилось http://depositfiles.com/files/6738932 (примерно 1,5 Мб). Там 2 файла, один оригинальный, другой с выхода ШИМ 22кГц по методу Roman Black http://www.romanblack.com/picsound.htm. В 128К память влазит примерно 53сек. звука. Запись делал на линейный вход звуковухи на 44кГц.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения