質問

BeagleBoneがBeagleBone Blackを使用しています。

PWMを出力しようとし、そのような高速な装置にいくつかのメガヘルツの潜在的な周波数を予想しようとしました。
100HzがSYSFSを介して設定できる正確な最大値であることがわかりました。
例についてオンラインで掘り始めましたが、それらは限界については言及していませんでしたが、100Hzよりも速く価値を示さなかった。

例:

root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 10000000 >  period_ns 
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 1000000 >  period_ns 
-sh: echo: write error: Invalid argument
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 200 >  period_freq 
-sh: echo: write error: Invalid argument
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 101 >  period_freq 
-sh: echo: write error: Invalid argument
root@beaglebone:/sys/class/pwm/ehrpwm.0:0# echo 100 >  period_freq 
root@beaglebone:/sys/class/pwm/ehrpwm.0:0#
.

任意の10分のAVRはそれより速いPWMを実行できます。
私が逃したいくつかのトリックはありますか?
私は100 Hzより速い頻度が速い場合は、GPIOのgpioによってカスタムPWMを作成する必要がありますか?

役に立ちましたか?

解決

私は実際に私の質問を開く直後に解決策を見つけました。
私はこれが実際に私が不思議に言うこと以上のものを引き起こすかもしれないと思います:)

PWM周波数はもちろん、1GHzのデバイス上では限られていないので、カーネルドライバは同じ方法で動作していないのと同じように機能していません。

DUTE_PERCENT値(1パーセントのような)を入力した場合、ドライバはその後のdut_ns値を計算し、その後パーセントを忘れるようです。
通常のユーザーは、彼が「パーセントモード」にあると思うでしょうが、実際にはパーセンテージファイルはhelpのためにラッパーにバインドされています。
周波数のカウント数!
これで頻度をより高い値に変更した場合、カーネルはDUTY_NSサイクル期間が新しい合計期間_nsに収まるかどうかを確認します。
実際にパーセンテージを設定することを無視します。

それでも、期間全体よりも大きいオン期間を持つことはできませんので失敗します。

ロングテキストショートサマリー:
常にquide_cycleをゼロに設定する前の値が新しい期間に収まらない場合、これはフラストレーションを避けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top