255-голосный звуковой генератор PCM на микроконтроллере ATtiny861 |
![]() |
Добавил(а) microsin |
Этот простой звуковой генератор основан на SD аудиоплеере [2], и построен с использованием микроконтроллера ATtiny861 компании Atmel и карты памяти microSD. Микроконтроллер ATtiny861 имеет на борту выходы аппаратного формирования fast PWM (быстрый ШИМ), так что он, как и ATtiny85, может генерировать более чистый звук по сравнению с другими чипами AVR. В 20-выводном корпусе DIP20 чипа ATtiny861 имеется больше портов ввода/вывода GPIO, что позволяет управлять звуковым генератором внешними сигналами. Поскольку управление генератором очень простое, он может быть использован как звуковой модуль для игрушек, тональных звонков, развлекательных машин и гаджетов. [Hardware] В качестве носителя данных для звука использовалась карта microSD, однако с таким же успехом можно применить стандартные SD и miniSD с соответствующим сокетом. Аудиосигнал, выводимый с помощью PWM (ШИМ), может быть подключен напрямую к громкоговорителю (т. е. динамик можно напрямую подключить к выходу PWM микроконтроллера). Такая нагрузка может оказаться слишком большой для порта микроконтроллера, однако максимально допустимый ток никогда не превышает установленного предела при напряжении питания 3.3 V, даже если выходной порт замкнуть на шины питания. При такой схеме подключения звук получается не очень громким, однако он хорошо слышен, если подключить настольные высокоэффективные колонки. Если Вы хотите подключить выход плеера к усилителю, то высокочастотная составляющая ШИМ должна быть отфильтрована фильтром низких частот (ФНЧ, Low Pass Filter, LPF). Не подключайте ШИМ-сигнал напрямую к аналоговому усилителю, потому что это может повредить усилитель или динамики. Выходная схема может быть собрана по трем вариантам, см. рисунок. Каждый вариант схемы организации вывода звука (Mono-OCL/Stereo/Mono-HR) исключает использование других вариантов, и для каждого варианта написана отдельная модификация программы firmware. Таким образом, каждой конфигурации Mono-OCL/Stereo/Mono-HR соответствует свой HEX-файл (sdsg_mo.hex/sdsg_st.hex/sdsg_hr.hex). Значения фьюзов скомбинированы с HEX-файлами (встроены в них), однако некоторые программаторы AVR могут не поддерживать такой формат HEX. В этом случае просто удалите последние 3 строки их HEX-файла. Необходимые значения фьюзов можно найти в файле main.c. [Firmware] Программа firmware, написанная для микроконтроллера ATtiny861, поддерживает только формат RIFF/WAVE LPCM, 8/16bit, mono/stereo, sample rate 8..48 кГц. Звуковые файлы должны называться NNN.wav. Сочетание NNN соответствует диапазону чисел от 001 до 255. Звуковые файлы должны находиться в корневом каталоге карты памяти (root directory). Команда на проигрывание соответствующего файла выдается через двоичный код, подаваемый на 8 контактов SW1..SW8. Например, SW1 соответствует файлу 001.wav, SW4 соответствует файлу 008.wav, и SW1+SW5 соответствуют файлу 017.wav. Имеется 4 режима работы, определяющие поведение звукового генератора при подаче команд управления, эти режимы конфигурируются с помощью файла 000.txt. Пример такого файла, который задает режим 3: 3 # Trigger mode (0..3) Каждый из режимов работает следующим образом: Mode 0 : Level trigger - двойное мигание - I/O error (ошибка аппаратуры или файловой системы). [Ссылки] 1. 255-Voice PCM Sound Generator site:elm-chan.org - оригинал статьи на английском языке. |