« ラズピコのPWM。やっぱしanalogWriteは捨てちゃえ #2 | トップページ | 海に降る → 静かな自裁 → すごいぞ!「しんかい6500」 »

2023年2月24日 (金)

ラズピコ analogWriteの誤差

ラズピコのanalogWriteで 1/255 ~ 254/255と
デューティ比を変えた時、出力されるH/Lパルス幅から
実測したデューティ比の差を示したのがこのグラフ。
設定値を1変化させた時の測定クロック数の差を書き
加えました。
Cap112

16MHzのクロック数で128(8μs)が続いた後、、
13あるいは14カウントごと96(6μs)
出現しています。

この13と14がどこから来るのか・・・
その推測です。

ピコのクロックは125MHz
analogWriteの周波数は500Hz。
PWMの分解能が255
  で、125e6 ÷ 500 ÷ 255 = 980.392

RP2040のPWM分周回路、最大が 1/255.9375。
  m・n/16で設定できます。

980.392は256を越えるので1/256すると 3.82966
整数部が 3 で 小数部が 0.82966
小数部は 1/16 単位なので
  0.82966 × 16 = 13.2745

「13」と「14」の間
こんな数字が出てきました。

元クロック周波数とPWM周波数、そして分解能から
求める分周比、そして最終的なパルス幅設定値の計算に
浮動小数点を使っているからかと推測できます。

ラズピコのPWM。やっぱしanalogWriteは捨てちゃえ #2
これ↑の手法、PWMの分解能とH/Lパルス数は整数と整数の
乗数で設定するので実パルスとの誤差は生じません。
その代わり、主クロックからPWMの周波数を計算するところで
誤差が生じます。

PWMでDACするなら(analogWriteを名乗るなら)、デューティ比
に誤差が出るのはあきません。

 

|

« ラズピコのPWM。やっぱしanalogWriteは捨てちゃえ #2 | トップページ | 海に降る → 静かな自裁 → すごいぞ!「しんかい6500」 »

ラズパイ・ピコ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« ラズピコのPWM。やっぱしanalogWriteは捨てちゃえ #2 | トップページ | 海に降る → 静かな自裁 → すごいぞ!「しんかい6500」 »