質問: SpresenseArduinoLibraryのanalogWrite()では490Hzの周期でPWM出力されるとなっていますが、 6.5MHzで動作させるにはどうすればよいのでしょうか?
回答: ソニーのSPRESENSEサポート担当です。 PWMの周波数の変更方法と、6.5MHzのPWMの出力方法の2点について回答をさせていただきます。 1. PWMの周波数変更方法について バージョン 1.1.1 にて、PWMの周波数を変更するAPIを追加いたしました。 ライブラリのアップデートは、Arduino IDE の「ボードマネージャ」で行ってください。 追加したAPIは、*analogWriteFreq* と、*analogWriteSetDefaultFreq* の2つです。 PWM周波数の変更は、*analogWriteFreq* を *analogWrite* の代わりに使用していただく方法か、*analogWrite* を使用する前に *analogWriteSetDefaultFreq* を使用し周波数を予め変更していただく方法のいずれかになります。 ### 使用例 1. *analogWriteFreq* を使用する場合 PIN_PWM_0に対して、Duty比 100/255※のPWMを周波数2000Hzで使用する ``` analogWriteFreq(PIN_PWM_0, 100, 2000); ``` 2. *analogWriteSetDefaultFreq* を使用する場合 PIN_PWM_0に対して、Duty比 100/255※のPWMを周波数2000Hzで使用する ``` analogWriteSetDefaultFreq(2000); analogWrite(PIN_PWM_0, 100); ``` (※)Duty比は255刻みになります。255 を設定した場合、Duty比は100%になります。 2. PWM の最大周波数について Spresense Arduino Library の PWM の最大周波数は、4.1MHzです。 最大周波数では、Duty比 50% 以外は設定できません。 6.5MHz のクロック出力は、Spresense SDK の構成を変更することによって行えます。 Spresense SDK のコンフィギュレーション設定を開いていただき、 CXD56xx Configuration ->Sensor Control Unit (SCU) ->SCU clock mode (RCOSC) で、「RCOSC」を「XOSC」へ変更してください。 6.5MHz は最大周波数ですので、Duty比 50% 以外は設定できません。 どうぞ、よろしくお願いいたします。