【问题标题】:Using ATMega16's timer0 for sound generation使用 ATMega16 的 timer0 进行声音生成
【发布时间】:2012-03-17 23:59:47
【问题描述】:

我正在尝试利用 ATMega16 的 timer0 来生成 PWM 脉冲并在基本蜂鸣器上输出声音..

但我面临一个问题,我无法弄清楚我如何能够改变我所创造的波浪的频率(以产生不同的音符)

我在数据表上看到,使用 timer0,您可以将 ICR 用于 TOP 值,这样您就可以更改频率,而使用 OCR,您将能够更改占空比。

是否有类似的方法,但在 timer0 或 timer2 上?

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

提前致谢,

感谢任何想法

【问题讨论】:

  • 您能编辑并澄清您的问题吗?您是在建议您可以在 timer0 上“将 ICR 用于 TOP”并询问如何在 timer0 上执行此操作?

标签: audio timer avr atmega16


【解决方案1】:

一般来说,当“用完”定时器时,基于定时器中断的简单软件例程会让你走得很远。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2014-02-06
    • 2011-09-14
    相关资源
    最近更新 更多