В итоге проблема была в излишне частом дрыгании ногами. МК у меня работал на частоте 8МГц, а между установкой и снятием напряжения с ноги я ставил всего 10-15 NOP-ов..
Когда я написал простую функцию задержки на 0xFF циклов и таким образом сильно снизил частоту ШИМ, динамик звонко запищал!
Получившийся код ниже
cmd_beep:
push temp
ldi temp, 0x01 ; длительность писка
cmd_beep_loop:
dec temp
push temp
ldi temp, 0xFF
cmd_beep_loop2:
SBI BUZZER_PORT, BUZZER_PIN
rcall delay
CBI BUZZER _PORT, BUZZER_PIN
rcall delay
dec temp
cpi temp, 0x00
brne cmd_beep_loop2
pop temp
cpi temp, 0x00
brne cmd_beep_loop
pop temp
ret
delay:
push temp
ldi temp, 0xFF
delay_loop:
dec temp
cpi temp, 0x00
brne delay_loop
pop temp
ret
Комментариев нет:
Отправить комментарий