-2

任何人都可以帮助我了解CodeVisionAVR吗?我想为 ATMega16L 微控制器编写一个程序,以使用 CodeVisionAVR 中的定时器功能生成正弦波形,但我不知道如何将 OCR 与正弦波一起使用。

4

2 回答 2

1

输出比较 (OC) 定时器输出只能生成方波。然而,它们可用于脉冲宽度可以变化的脉冲宽度调制 (PWM);如果 PWM 波形输出经过低通滤波,则输出将是与 PWM 波形的标记空间比成比例的电压。通过以正弦方式修改脉冲宽度并使用适当的滤波,您可以生成正弦波输出。

因此,在每次定时器重新加载中断时,您都需要修改脉冲宽度。我建议您将脉冲宽度预先计算为一组值,并在每次重新加载中断时将它们循环提供给定时器。然而,在 PWM 频率、脉宽分辨率、模拟滤波和波形频率之间存在许多权衡,这会影响波形的准确性。您需要平衡这些变量以适应您对频率和带宽的要求。

于 2012-06-28T04:28:38.340 回答
0

您还可以使用定时器触发中断,将波形数据从其他 GPIO 引脚写入(使用梯形电阻器作为 DAC 或类似物),您可以将波形数据放在查找表中,并每次遍历该表中断触发。

或者,如果您有合适的 PWM 输出引脚,您可以使用定时器中断来减少/增加占空比值,以提供正弦波或任何其他波形输出。这确实需要 PWM 定时器的运行速度比所需的正弦波快得多,这样您就可以对其进行过滤,但这在一定程度上取决于您需要的准确度。

于 2012-06-28T15:30:26.833 回答