|
|
|
|
Звук появился, это я в программе нахомутал Как я понял, для того, чтобы звук был сразу, нужно дописать команду: Mainloop_label ;Основной цикл goto Melody0 Но теперь, оно проходит 1 цикл и виснит (загораются все светодиоды). Выходит из этого состояния эмуляцией нажатия на кнопку (отключаю подтягивающий от 1го вывода). А можно как то програмно отключить кнопу? После моих попыток, результат был ввиде монтонного пииииии.... |
|
|
Такс, пришел увидел победил! Сегодня все вышло. Мелодия звучит по кругу, в паузах я оставил один эффект. Теперь приступил к 10 часовой задержке... как оказалось не все так просто. Сначала я столкнулся с нехваткой места ПЗУ микроконтроллера. Я был удивлен! Пришлось чуть укоротить последнюю мелодию. Запустил код и... вот тут у меня начались расхождения теории с практикой. (Тут я заметил свою первую ошибку 1 цикл - это 1Е-6 секунды.) Как я понимаю, первый цикл будет иметь длительность 255*3=765мкс Второй цикл - 255*5=1275 мкс Третий цикл - 255*7=1785 мкс ... итого, перемножив 3 числа и разделив на 1Е6, получаю 1741 секунды. А на макете регистр (для визуализации, использовал порт В) опустошается за 50 сек. Где может быть ошибка в расчетах? Кварц на 4МГц. ;**************** VAL1 equ 20h VAL2 equ 21h VAL3 equ PORTB VAL4 equ 23h LongPause ;--- Длинная пауза! movlw 10h movwf VAL1 ; movlw 1h movwf VAL2 ; movlw 1h movwf VAL3 movlw 2h movwf VAL4 decfsz VAL1,1 goto $-1 decfsz VAL2,1 goto $-3 decfsz VAL3,1 ; Опустошается за 50 сек goto $-5 decfsz VAL4,1 goto $-7 return ;--- Длинная пауза! |
|
|
А! Все понял! 1й цикл 9*255=2295мкс (9- это в новой программе, см. ниже) остальные - просто *255 В результате, 2295мкс*255*255=149 секунд, что соответствует опыту (на стенде - 150 секунд). Вот последний вариант. По моим расчетам, такой цикл будет иметь длительность примерно 10 часов 37 минут. К сожаленью, проверить время у меня не выйдет. По нажатию на кнопку, длительность укорачивается до 150 секунд. Вот сам код: LongPause ;--- Длинная пауза! movlw 0FFh movwf VAL1 movwf VAL2 movwf VAL3 movlw 0FFh movwf VAL4 zzzzz nop nop nop movlw 1h btfss BUTTON movwf VAL4 decfsz VAL1,1 goto zzzzz decfsz VAL2,1 goto zzzzz decfsz VAL3,1 ;**** 50 сек goto zzzzz decfsz VAL4,1 goto zzzzz return ;--- Длинная пауза! И еще момент, потребляемый стендом ток (когда горят все светодиоды) составляет примерно 20мА (замерял). Стоит ли отавить индикацию на порту В (для контроля ночью, то схема не повисла?). Или это вызовет быстрый разряд элементов питания и индикацию лучше отключить? Батарейки самые обычные (не дорогие, но и не самый дешевые. Новые). Ваш вердикт? |
|
|
Можно 1 светодиод оставить. |
|
|
Выпаивать не охота, поэтому и получается, что или все или "ноль". На парах нашел еще один глюк переделаной мной прошивки. После того как все мелодии проходят по кругу, начинаеться бегущий огонь и не заканчивается... Причину пока не нашел. |
|
|
Сергей К: или все или "ноль" Это просто. Не менять состояние 7 бит из 8 - и всё. Будет только 1 светодиод загораться. movf ADDRESS,W ;Адрес ячейки с требуемыми на данном шаге данными movwf FSR ;заносим в FSR (косвенная адресация) movf INDF,W ;Переносим данные из ячейки с указанным адресом в W andlw B'00000001' movwf PORTB ;И выдаем результат на выводы PORTB |
|
|
Все упирается в то, что память программ ПИКа заполнена на 100% и добавить даже 1 новую команду нет возможности (нет уже времени на поиски того, что можно "закоментировать"). Оставил как есть. На порт В вывел содержимое последнего (самого медленого) регистра. Надеюсь батарейки новые батарейки протянут 10,5 часов, тем более, что через 1/8 этого времени будет гаснуть 1 светодиод. |
|
|
Удачи! |
|
|
picmaniac, спасибо! Эффект был 100%. Устройство, вместе с подарком было спрятано в серой коробочке под кроватью. Через 20 минут поиска (а внешний светодиод я не успел припаять) устройство не было обнаружено (благодаря паузе между мелодиями)! То что я на парах принял за ошибку в коде (когда после проигрывания всех мелодий не было перехода на начало) оказалась просто продолжительная пауза (на слух), после чего все пошло по кругу! picmaniac, еще раз спасибо за отлаженную музыкальную программу! |
|
|
no problem Присоединяйтесь к "ликбезу 2", а то там совсем тихо стало. |
|
|
|
|