воскресенье, 20 февраля 2011 г.

Музыка на микроконтроллерах AVR. Часть 1

Микроконтроллеры AVR завоевали популярность благодаря своей простоте, небольшой цене и универсальности.
На сайте-производителе этих контроллеров - Atmel можно бесплатно скачать программу для разработки программ - AVR Studio 4. С помощью этой же программы можно прошить контроллер, там же есть симулятор.
Неплохие обучающие материалы по AVR есть на сайтах http://radiokot.ru, http://www.123avr.com, http://nikolaew.org/avr_old/learn.htm
С помощью программы ISIS, которая входит в комплекс Proteus (ссылку на скачку легко найти, если вбить в поиск Proteus) можно соединить виртуальную копию любого микроконтроллера AVR с другими устройствами - с теми же контроллерами, моторчиками, диодами, кнопками, электронными компонентами и спикерами (звучание которых можно услышать, запустив симуляцию (при условии, что прошивка контроллера посылает туда сигналы) ). Программа (код в формате hex), скомпилированная в AVR Studio прекрасно запускается на виртуальном микроконтроллере AVR в Proteus ISIS.

Простая пищалка:
Вот текст моей программы-пищалки для микроконтроллера ATMEGA48 (компилируется в AVR):
.include "m48def.inc"
ldi r16,0xFF
out ddrb,r16
start:
ldi r17,5
loop2:
ldi r16,255
loop:
dec r16
brne loop
dec r17
brne loop2
com r15
out portb,r15
rjmp start
Волна получается square. Изменяя выделенные выше числа (значения от 0 до 255) можно добиваться разной частоты звука и таким образом проигрывать разные ноты. Сочетание 5 и 255 даёт 130Hz (похоже, это До).

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

7 комментариев:

nemeemsi комментирует...

Надо попробовать сделать.

Paladin666 комментирует...

Спасибо, познавательно

LaserJet комментирует...

Интересно, какие процы в открытках.

Человеческое имя комментирует...

Занятно.

Tonari комментирует...

С продвижением технологий музыкантом может называться любая бездарность.

sei комментирует...

в принципе довольно наивно...

pivovarov комментирует...

В своё время спаял сигнализацию из лазерной указки, солнечных батареек, выломанных из калькулятора, лампочки и нескольких транзисторов. Эх, жалко контроллеров тогда у меня не было. Иногда тянет сделать что-нибудь эдакое. Особенно вдохновляют ролики про роботов, типа этого http://www.youtube.com/watch?v=k-AGWq0k_Mo