ArduinoのPWM周波数を変える Due編

ロボットを制御してくると変えたくなるのがPWM周波数。

ただ、Arduinoって変えづらいんですよ。

 

MEGAとDueをよく使うので、この2つを書こうと思うのですが、今回はDueのPWM周波数の変え方を書こうと思います。

Arduino使っていると他方から"Arduinoはスペック不足"とよく聞きます。僕自身スペック不足というより、使いづらいなーとは感じているので、PWM周波数変えなきゃいけないお年ごろになったらArduinoやめるのも手だと思っています。)

 

そんでもって、MEGAとDueですが、圧倒的にDueのほうが変えやすいです。IDEのファイルを書き換えるだけなので。

(それが一番楽ですが、検索する限り他にも方法はあります)

※MEGAはレジスタを書き換える必要があります。

 

先にに参考にしたリンクを貼っときます。

https://forums.adafruit.com/viewtopic.php?f=25&t=52859

 

では、めちゃくちゃ簡単に説明します。(インストール版IDEを例に説明します。)

1.C:Program Files (x86)Arduinohardwarearduinosamariantsarduino_due_x/variant.hを開く

 

2.以下のコードの”ここ”と書いてあるところが指定できる周波数なので、任意のものに変える。僕の場合、215行目からでした。

gistc35ab3d9a1668926d84dc06283ae08f0

 

3.このファイルは上書き禁止なので、名前をつけて保存を選択し、デスクトップ等に保存する。

 

4.もとのファイルを忘れない場所にバックアップしておく(省略可)

 

5.名前をつけて保存したファイルをvariant.hに上書きコピーする。

 

これで、IDE再起動してコンパイルすると、PWM周波数が変わっています!簡単すぎ!

 

プログラム上で変えられないのが欠点なんですが・・・

常に20kで動かしたいとかの場合なら問題ないでしょう。

 

もうすこし勉強したらMEGAの方も書きたいと思います。

 

4/8追記

2箇所変える必要があるんですけど、"TC"の方を変えない人がいるようです。

こちらも変えないと1kHzのままなので必ず2箇所変えるようにしてください。