我正在尝试利用ATMega16的timer0在一个基本的蜂鸣器上产生脉宽调制脉冲和输出声音。
但我正面临着一个问题,我想知道如何才能改变im创建的wave的频率(生成不同的音符)
我在数据表上看到,使用timer0,您可以使用ICR作为顶值,这样您就可以更改频率,而使用OCR,您就可以更改占空比。
在timer0或timer2上有没有类似的方法?
我已经在使用timer1控制其他东西了,所以我想知道我是否必须重新开始:(
提前谢谢你,
任何想法都值得欣赏。
发布于 2012-05-19 02:21:10
通常,当计时器“用完”时,基于计时器中断的简单软件例程将使您走得很远。
例如,使用其中一个定时器比较中断,您可以轻松生成几乎所有频率:
在定时器比较中,ISR只需切换相应的输出引脚并(让定时器)重置为0即可。设置的比较值根据计时器频率的分数来确定生成的频率。
有许多更复杂的方法可以使用有限数量的可用计时器来同时执行大量计时器任务。它基本上都是基于经过深思熟虑使用的ISR。
https://stackoverflow.com/questions/9754871
复制相似问题