0

有人可以指导我如何在 Atmega32 中使用 PWM 生成查找表以生成 50 hz 正弦波。

这是我到目前为止所做的,但对要做什么感到困惑。

50 Hz 正弦波,因此 20 ms 时间段 256 个样本(分割数)

我需要增加的步骤 = 20 ms/256 = 0.078125 ms(PWM 信号周期)

角度步进率 = 360/256 = 1.40625

正弦波的幅度应为 1。

4

1 回答 1

0

我认为你从错误的一端开始并因此而迷路。

忽略查找表,您能否使用显式调用生成 50 Hz PWM 信号sin()?好的。现在查找表为您节省了那些昂贵的sin调用。sin是一个周期函数,因此您只需要存储一个周期 (*)。多少点取决于您的数字输出频率,这将远远超过 50 Hz。还有多少定义了查找表中的点数。

要填写查找表,您不要将 PWM 函数的结果发送到数字输出,而是将其写入查找表。要使用查找表,您不需要调用昂贵的函数,而只需将表条目直接复制到输出中。

有一个常见的优化:一个since函数有很多重复。你不需要存储发送的一半,这只是前半部分的倒数,第二部分只是第一部分的镜像。

于 2014-05-03T14:22:41.560 回答