51966
SPRESENSE SDKでのPWM生成に関する質問です。

現在、examples/pwmを試しているのですが、PWMの最低周波数(動作周波数xカウンタ最大値?)で悩んでいます。50Hz周期のサーボモータを接続しようとしたところioctlでエラーとなってしまいました。125HzのPWMは正常に生成できました。

本内容に関する、SPRESENSEの仕様書やコード等、ご存知の方いらっしゃいますでしょうか。

```

    nsh> pwm -p /dev/pwm0 -f 125
    pwm_main: starting output with frequency: 125 duty: 00008000
    pwm_main: stopping output
    nsh> pwm -p /dev/pwm0 -f 50
    pwm_main: starting output with frequency: 50 duty: 00008000
    pwm_main: ioctl(PWMIOC_START) failed: 22
    
```

よろしくお願いいたします。
CC BY-SA 4.0
2019-01-10T04:37:14.127
51856
2020-03-16T01:38:06.067
question
spresense
Spresense SDKによるPWM出力周波数の下限について
お世話になっております。自己解決しました、ありがとうございます。

下記のifに捕まっていました。cxd56_get_pwm_baseclock(デフォルトではSCUと同じRCOSC)を基準として、16bit幅のカウンタを利用するため、最低125Hzということですね。理解しました。

  * ~/spresense/sdk/bsp/src/cxd56_pwm.c
```     static int convert_freq2period(...)

    {
      ...
      pwmfreq = cxd56_get_pwm_baseclock();
      ...
      if ((freq > ((pwmfreq + 1) >> 1)) || (freq < (pwmfreq >> 16)))
        {
          pwmerr("Frequency out of range. %d [Effective range:%d - %d]\n",
                    freq, pwmfreq >> 16, (pwmfreq + 1) >> 1);
          return -1;
    
```

今後ともよろしくお願いいたします。
CC BY-SA 4.0
2019-01-14T11:44:28.880
51966
2019-01-14T12:34:30.727
2019-01-14T12:34:30.727
19110
51856
answer
ソニーのSPRESENSEサポート担当です。

PWM出力周波数の下限についてですが、先週リリース致しました、  
SDK v1.5.1において1Hzからに対応いたしました。  
詳細については、[PWM
周波数とデューティー比について](https://developer.sony.com/develop/spresense/docs/sdk_tutorials_ja.html#_pwm_%E5%91%A8%E6%B3%A2%E6%95%B0%E3%81%A8%E3%83%87%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%BC%E6%AF%94%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)をご参照ください。

今後ともSPRESENSEをどうぞよろしくお願いいたします。

SPRESENSEサポートチーム
CC BY-SA 4.0
2020-03-16T01:38:06.067
63875
2020-03-16T01:38:06.067
29520
51856
answer