我正在尝试利用ATMega16的timer0来产生PWM脉冲并在基本蜂鸣器上输出声音。
但我正面临一个问题,即如何能够改变我创造的波浪的频率(以产生不同的音符)
我在数据表上看到,使用timer0可以将ICR用于TOP值,这样你就可以改变频率,通过OCR,你就可以改变占空比..
有没有类似的方法,但在timer0或timer2上?
我已经在使用timer1来控制别的东西,所以我想知道我是否必须重新开始:(
提前致谢,
赞赏任何想法
答案 0 :(得分:1)
通常,当“耗尽”定时器时,基于定时器中断的简单软件程序将带你走得很远。
例如,使用其中一个定时器比较中断,您可以轻松生成几乎所有频率:
在定时器比较中,ISR只是切换相应的输出引脚和(让定时器)复位为0.设置的比较值根据定时器频率的分数确定生成的频率。
有许多更精细的方法可以使用有限数量的可用计时器同时执行大量计时器任务。它基本上都是基于经过深思熟虑的ISR。