[quote="maxNTF"]
Сообщение от picavr
|
Подскажите програмку для сжатия звука, которая моглабы потом сохранить сжатый звук в бинарный файл, и его осталось бы тогда только залить в память.
|
Алгоритм АДИКМ в общем случае работает таким образом.
Компаратором сравнивается входной сигнал и обратной связи. Если входной больше то записываем в буфер "1" если меньше то записываем "0" и выдаём на ножку обратной связи.
После сдвига 8 бит в буфере получаем байт. Байт пишем в память.
При воспроизведениии просто выдвигаем бит в порт побитно.
Частота сравнения = 32 кгц для голоса. Увеличивая частоту улучшаем качество и увеличиваем расход памяти. и наоборот.
Схема. На неинвертирующий компаратора (можно внутрений МК) подключаешь делитель 1/2 питания и подаёш входной сигнал через ёмкость. Сигнал обратной связи (с вывода контроллера) интегрируется (через R=10 кОм и С=0,047-0,1 мкФ на корпус, для частоты дискретизаци 20-30 кГц) и подаётся на инвертирующий вход. Сравниваются входной сигнал и обратной связи. состояние выхода компаратора записываем в буфер складываем 8 бит.
Программа. Включаем компаратор. Один вывод программируем на выход - это обратная связь и выход звука.
Таймер запускаем 32 кгц. Примерно 31 МКСЕК
ЗАПИСЬ.
В прерывании считываеш с выхода компаратора результат сравнения и выдаёш на выход обратной связи. Так же запихиваеш и сдвигаеш в буфер, когда сдвинул 8 бит то получаеш байт для записи в EEPROM. Записываеш в БУФЕР для пересылки в EEPROM. Когда буфер заполнен, запускаеш запись в EPROM.
ВОСПРОИЗВЕДЕНИЕ.
Считывашь из EEPOM байт записываешь в буфер. Младший бит выдаёш на выход (через RC снимаем звук).
Сдвигаеш буфер 8 раз, затем считываеш новый байт.