我使用带有Windows IoT核心的闪电驱动程序来驱动PWM输出。我已将示波器连接到GPIO引脚,并设置PWM占空比。我在无限循环中这样做。如果我在循环中放置延迟,那么输出信号看起来很好。但是,如果我放弃延迟,占空比(如示波器所示)开始闪烁5到10%之间。下面的代码,任何人都可以解释一下吗?
var controllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider());
var pwmController = controllers[1];
pwmController.SetDesiredFrequency(50);
var motor1 = pwmController.OpenPin(5);
motor1.Start();
do
{
motor1.SetActiveDutyCyclePercentage(0.05);
Task.Delay(1000).Wait();
} while (true);
答案 0 :(得分:0)
我只是在这里猜测,但可能是SetActiveDutyCyclePercentage实际上会重置PWM计数器,所以它会扰乱PWM中的当前周期。如果你反复这样做,那么它会扰乱很多周期,而不是延迟。将PWM视为一个计数器,当输出达到0时翻转输出。如果重置计数器(使用SetActiveDutyCyclePercentage调用),则当前周期的计数总数=长度(在翻转输出之前)将会偏斜。