MDenis2 (27.11.2006 03:01, просмотров: 1) ответил AVR на Тебе не формула красивая нужна, а другое решение - иначе будешь слышать сплошную лажу, а не чистые тона. Объясни толком, что тебе нужно получить, и почему ты таблицу делителей во флеш толкаешь
Да все просто... Мелодию записываю парами байт. Где первый байт длительность, а второй байт номер ноты. А по номеру ноты из таблицы беру двухбайтовый делитель, который гружу в регистр сравнения 16-ти битного таймера-счетчика работающего в режиме CTC. Выход сравнения выдаю на порт, настроенный в режим "togle on compare". А с порта уже снимаю меандр нужной мне частоты.
Кстати, вылезла непонятка:
После окончания длительности ноты останавливаю таймер. И соответсвенно в 50% случаемв получаю на выходе 1. Совершенно логично записываю в порт 0 для того что бы выдать на выход 0.
Никакого эффекта.
Даже если отключить выход сравнения от порта - тоже никакого эфекта.
Более того, сделал так:
clr temp ;
out TCCR1A,temp ; Отключаем выход
out TCCR1B,temp ; Останавливаем таймер
PortB5Off:
sbi DDRB,5
cbi PortB,5
sbic PinB,5
rjmp PortB5Off
Все равно на выходе в 50% случаев единица....
Хоть кондер ставь между затвором и выходом порта...
Что делать-то?