2016-08-27 14 views
1

私はPWM出力を駆動するためにウィンドウIoTコアを備えた雷ドライバを使用しています。 GPIOピンにスコープを接続し、PWMデューティ・サイクルを設定しました。私は無限ループでこれを行います。もし私がループに遅れを入れたら、出力信号はうまく見えます。しかし、私が遅れを落とすと、デューティサイクル(範囲で見られるように)が5~10%の間でちらつき始めます。以下のコードは、誰でもこれを説明できますか?ラズベリーパイ雷DMAのPWMフリッカー

 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

私はちょうどここに推測しているが、それはSetActiveDutyCyclePercentageが実際にPWMカウンタがリセットされますので、それはPWMで台無し現在のサイクルをよということである可能性があります。あなたがそれを繰り返し行うならば、遅れをとるのとは異なり、多くのサイクルを混乱させるでしょう。 PWMが0になると出力を反転させるカウンタと考えてください。SetActiveDutyCyclePercentage呼び出しでカウンタをリセットすると、現在のサイクルの総カウント数=長さ(出力を反転する前)が歪んでしまいます。

+0

これは合理的な提案のように思えます。残念なことに、それが本当であれば、DMAのpwmは私にとってかなり役に立たなくなります。うまくいけば、これは単なるバグであり、次のリリースで修正される予定です。 – Slicc

+0

RP2のpwmドライバコードをチェックすると役立つでしょうか? https://github.com/ms-iot/bsp/tree/master/drivers/pwm/bcm2836 – Jackie

+0

なぜPWMデューティサイクルを急激に変えなければならないのですか(間違った提案ではなく、私は興味があります)。 – Haukman