Отправляет email-рассылки с помощью сервиса Sendsay
Открытая группа
12292 участника
←  Предыдущая тема Все темы Следующая тема →
пишет:

Генерация звука на ассемблере и ATtiny2313

Помимо дисплеев, светодиодов и прочих средств вывода информации воспринимаемой глазами, микроконтроллеры также способны управлять устройствами вывода звука. Полноценный mp3 плеер сделать на таком простом микроконтроллере как ATtiny2313 будет не просто т.к. он имеет не много памяти (2кб flash памяти) для хранения звуковой информации. Для решения данной проблемы могут быть использованы дополнительные микросхемы памяти связанные с микроконтроллером по интерфейсу например SPI но при этом программисту придется заняться алгоритмами декодирования звука формата mp3 в импульсы на пинах микроконтроллера для вывода звука. Самый простой способ сделать звук используя микроконтроллер - это подключить к его пину маломощный пьезодинамик и подавать на этот пин прямоугольные импульсы. Звуки, при этом, будут обогащены высшими гармониками и простое добавление фильтра не решит проблему полностью т.к. звуки могут быть разных частот и также могут сильно отличаться друг от друга частотами. Однако простые сигналы или простые мелодии, как например в старых часах или игрушках, таким способом генерировать можно. Так можно сделать например сирену для радиоуправляемой игрушки. Ещё звуки в таком формате не занимают много места в памяти. Чтобы генерировать звук определенной частоты, на микроконтроллере, лучше использовать аппаратный таймер т.к. используя его проще рассчитать результат. В ATtiny3213 есть 8ми битный таймер и 16ти битный. Используя второй, без предделителя, можно создавать импульсы с частотой от примерно 7 Гц до примерно 500кГц. 7 Гц - это уже частота инфразвука который человеческая слуховая система не воспринимает а 500кГц - это частота которая намного больше верхнего порога слышимости, поэтому данный диапазон частот подходит и следовательно второй таймер подходит для генерации звука. Если используется таймер то с ним лучше использовать какое нибудь прерывание (т.к. с флагами в основном цикле работать не очень удобно). Можно использовать например прерывание по совпадению или прерывание по переполнению. В первом случае, таймер считает до определенного числа после чего происходит прерывание. Во втором случае таймеру устанавливается определенное число от которого он считает до переполнения после чего происходит прерывание по переполнению. В обработчике прерывания происходит установка нового (или опять старого) числа а также изменение напряжения на пине. Большой разницы в том какой способ использовать нет. Выберем второй т.к. он уже ранее рассматривался. 

Чтобы генерировать звуки можно например использовать массив в котором будут Читать далее....

Это интересно
+1

02.12.2021
Пожаловаться Просмотров: 408  
←  Предыдущая тема Все темы Следующая тема →


Комментарии временно отключены