2016-08-27 1 views
1

PWM 출력을 구동하기 위해 IoT 코어 윈도우가있는 번개 드라이버를 사용하고 있습니다. GPIO 핀에 스코프를 연결하고 PWM 듀티 사이클을 설정했습니다. 나는 이것을 무한 루프에서한다. 루프에 지연을 넣으면 출력 신호가 정상적으로 보입니다. 그러나 지연을 떨어 뜨리면 듀티 사이클 (범위에서 볼 수 있듯이)이 5와 10 % 사이에서 깜박이기 시작합니다. 아래 코드는 누구나 설명 할 수 있습니까?라즈베리 파이 번개 dma pwm flickery

 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

난 그냥 여기 추측하고있어,하지만 실제로는 PWM 카운터를 재설정 것 SetActiveDutyCyclePercentage 될 수있다, 그래서는 PWM에 엉망으로 현재의 사이클을거야. 당신이 그것을 반복적으로한다면, 지연을 두는 것보다 많은 사이클을 망칠 것입니다. PWM이 0에 도달 할 때 출력을 뒤집는 카운터라고 생각하십시오. SetActiveDutyCyclePercentage 호출로 카운터를 재설정하면 현재주기의 총 카운트 = 길이 (출력을 뒤집기 전에)가 왜곡됩니다.

+0

합리적인 제안처럼 들립니다. 불행히도 이것이 사실이라면 DMA가 거의 쓸모 없게 만듭니다. 다행히도 이것은 단지 버그 일 뿐이며 다음 릴리스에서 수정 될 것입니다. – Slicc

+0

RP2 pwm 드라이버 코드를 확인하면 도움이 될까요? https://github.com/ms-iot/bsp/tree/master/drivers/pwm/bcm2836 – Jackie

+0

왜 PWM 듀티 사이클을 급격하게 변화시켜야합니까 (잘못된 제안이 아니라 단지 궁금합니다)? – Haukman