首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ATMega16的timer0进行声音生成

使用ATMega16的timer0进行声音生成
EN

Stack Overflow用户
提问于 2012-03-18 07:59:48
回答 1查看 948关注 0票数 0

我正在尝试利用ATMega16的timer0在一个基本的蜂鸣器上产生脉宽调制脉冲和输出声音。

但我正面临着一个问题,我想知道如何才能改变im创建的wave的频率(生成不同的音符)

我在数据表上看到,使用timer0,您可以使用ICR作为顶值,这样您就可以更改频率,而使用OCR,您就可以更改占空比。

在timer0或timer2上有没有类似的方法?

我已经在使用timer1控制其他东西了,所以我想知道我是否必须重新开始:(

提前谢谢你,

任何想法都值得欣赏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-19 02:21:10

通常,当计时器“用完”时,基于计时器中断的简单软件例程将使您走得很远。

例如,使用其中一个定时器比较中断,您可以轻松生成几乎所有频率:

在定时器比较中,ISR只需切换相应的输出引脚并(让定时器)重置为0即可。设置的比较值根据计时器频率的分数来确定生成的频率。

有许多更复杂的方法可以使用有限数量的可用计时器来同时执行大量计时器任务。它基本上都是基于经过深思熟虑使用的ISR。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9754871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档