Мелодия на attiny13. Возможно ли?
- Сообщения: 364
- Зарегистрирован: Сб май 25, 2013 11:52:14
У ШИМ есть побочный эффект при подключении моторов. Они начинают "петь". А можно ли заставить петь мотор какую-то несложную мелодию?
- Реклама
Можно, но мотор - это не динамик, некоторые частоты могут звучать очень тихо.
only pure true norwegian blackx 
- Сообщения: 364
- Зарегистрирован: Сб май 25, 2013 11:52:14
А в какую сторону хоть копать? Может пример кода на ассемблере?
В сторону генерации частоты.
Docendo discimus
- Сообщения: 364
- Зарегистрирован: Сб май 25, 2013 11:52:14
- Реклама
Можно и шимом, в режиме таймера "Clear Timer On Compare", например 
Поищите готовые примеры создания звуков на AVR, я не раз натыкался в интернете на что-то такое.
Поищите готовые примеры создания звуков на AVR, я не раз натыкался в интернете на что-то такое.
only pure true norwegian blackx 
- Сообщения: 364
- Зарегистрирован: Сб май 25, 2013 11:52:14
Пока только один пример нашел. Но там трехголосая полифония. Я там не разобрался
Музыка на флоппи дисководах
http://www.youtube.com/watch?v=lo93usctWYU
Музыка формул chip tune
http://hackaday.com/2011/10/03/avr-chip ... nto-music/
http://www.youtube.com/watch?v=lo93usctWYU
Музыка формул chip tune
http://hackaday.com/2011/10/03/avr-chip ... nto-music/
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
У меня на другом компе есть имперский марш и тема из mortal kombat специально для воспроизведения с помощью AVR по нотам в таблицах вида
частота - длительность
пауза - длительность
частота - длительность
пауза - длительность
и т.д.
А так же прошивка на asm для меги48 которая это играет на флопи дисководе, правда код очень запутанный и плохо коментированный.
Впринципе, можно вместо флопа повесить и моторчик и динамик (но тогда получится что код избыточен, т.к. он на каждой ноте считает в какую сторону лучше начать двигать каретку дисковода чтобы не стукнуться в край и осталось побольше места для следующих нот). Прошивка весит 824 байта, так что для музыки места останется немного, если пихать все в тиньку. Но можно сильно урезать имперский марш, думаю поместится.
Если интересует могу выложить файлы позже.
частота - длительность
пауза - длительность
частота - длительность
пауза - длительность
и т.д.
А так же прошивка на asm для меги48 которая это играет на флопи дисководе, правда код очень запутанный и плохо коментированный.
Впринципе, можно вместо флопа повесить и моторчик и динамик (но тогда получится что код избыточен, т.к. он на каждой ноте считает в какую сторону лучше начать двигать каретку дисковода чтобы не стукнуться в край и осталось побольше места для следующих нот). Прошивка весит 824 байта, так что для музыки места останется немного, если пихать все в тиньку. Но можно сильно урезать имперский марш, думаю поместится.
Если интересует могу выложить файлы позже.
- Сообщения: 364
- Зарегистрирован: Сб май 25, 2013 11:52:14
Ну вот собственно файлы проекта, если будете пытаться разобраться в исходнике - обращайтесь.
Если переделывать под тини, то нужно будет вместо PortD использовать PortB, тогда моторчик подключается к PB1, а на PB2 можно повесить светодиод - он будет мигать под музыку
.
Но будет проблема с таймером, т.к. используется 16-битный таймер, а в даташите на тини13 сказано что там есть только 8-битный. Ну тут можно в принципе выкрутиться - завести какой-нибудь 16-битный счетчик в памяти и щелкать его по таймеру, а в программе вместо таймера обращаться к этому счетчику. Как-то так.
Если переделывать под тини, то нужно будет вместо PortD использовать PortB, тогда моторчик подключается к PB1, а на PB2 можно повесить светодиод - он будет мигать под музыку
Но будет проблема с таймером, т.к. используется 16-битный таймер, а в даташите на тини13 сказано что там есть только 8-битный. Ну тут можно в принципе выкрутиться - завести какой-нибудь 16-битный счетчик в памяти и щелкать его по таймеру, а в программе вместо таймера обращаться к этому счетчику. Как-то так.
- Вложения
-
- Mortal_Kombat.asm
- Тема из Mortal Kombat
- (9.06 КБ) 388 скачиваний
-
- Imperial_March.asm
- Имперский марш (в ммелодии очень много кусков, которые повторяются, так что думаю, если подредактировать то можно впихнуть будет даже в тиньку)
- (6.76 КБ) 725 скачиваний
-
- math.asm
- Это будущая библиотека мат. функций на асме, пока здесь только деление :). Оно же и используется в проекте
- (959 байт) 481 скачивание
-
- stdmacro.asm
- Файл с макросами, которые я часто использую. Из них здесь используются stack, outi и incram
- (1.13 КБ) 581 скачивание
-
- Floppy.asm
- Главный исходник (файлы с мелодиями подключаются комментированием строк в самом конце файла)
- (5.8 КБ) 594 скачивания
- Сообщения: 238
- Зарегистрирован: Сб янв 29, 2011 20:26:48
Мелодию на Attiny13 можно записать любую в пределах его ёмкости Flash. Я недавно скопировал музыку с настоящей автосигнализации "Мейджи кар". Посмотрел какая мелодия (нота) на какой частоте звучит. Ну и такой же выход частоты с контроллера, добился с помощью обычного генератора (применил макросы_delay_ms/us) которую часто используем чтобы светодиод поморгал на ножке микроконтроллера. Только ( _delay_ms/us) выбираем по минимому подбираем под нужную частоту ноты. Всё это запихивается в цикл for(...) кстати это получается длительность определённой "ноты" частоты. Шим не применял, хотя на нём легче сделать наверное. Времени не было. И потом звук получается не так как мы привыкли слушать не синусоидальный, а "электронный" это все го лишь импульсы! Но для автосигнализации это годится.


