有人可以指导我如何在Atmega32中使用PWM生成50 hz正弦波的查找表。
这是我到目前为止所做的,但对于该做什么感到困惑。
50 Hz正弦波所以20 ms时间段 256个样本(分区数)
步骤i需要增加= 20 ms / 256 = 0.078125 ms(PWM信号周期)
角度步长率= 360/256 = 1.40625
正弦波的幅度应为1.
答案 0 :(得分:0)
我认为你是从错误的一端开始并因此而迷失。
忽略查找表,是否可以生成50 Hz PWM信号,以便显式调用sin()
?好。现在,查找表为您节省了那些昂贵的sin
次呼叫。 sin
是一个周期函数,因此您只需要存储一个句点(*)。有多少点取决于您的数字输出频率,这将远远超过50 Hz。 如何更多地定义查找表中的点数。
要填充查找表,您不要将PWM功能的结果发送到数字输出,但要将其写入查找表。要使用查找表,您不需要调用昂贵的函数,而只需将表条目直接复制到输出中。
有一个常见的优化:A因为函数有很多重复。你不需要存储发送的一半,这只是上半部分的倒数,而第二季度只是镜像的第一季度。