树莓派闪电dma pwm flickery

时间:2016-08-27 14:11:50

标签: raspberry-pi windows-10-iot-core

我使用带有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);

1 个答案:

答案 0 :(得分:0)

我只是在这里猜测,但可能是SetActiveDutyCyclePercentage实际上会重置PWM计数器,所以它会扰乱PWM中的当前周期。如果你反复这样做,那么它会扰乱很多周期,而不是延迟。将PWM视为一个计数器,当输出达到0时翻转输出。如果重置计数器(使用SetActiveDutyCyclePercentage调用),则当前周期的计数总数=长度(在翻转输出之前)将会偏斜。