2366505_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2366505_ja-JP

2366505_ja-JP

S32K3によるPWMデューティサイクルの測定(eMIOS ICU IPWM)はブロッキングなしで行われます

こんにちは、

参考までに -
私はeMIOS ICUのチャンネルを使用して、IPWMモードで変化するPWMデューティサイクルを測定しています。現在、私は「ブロッキング」方式でデューティサイクルを正常に測定できています。

私の入力信号は、デューティサイクル100%(実質的にPWMなし)から、私が測定する必要のある特定のデューティサイクルのPWM信号へと変化します。

私の.mex設定は以下のとおりです。

Hareesh_S_0-1778951748752.png

Hareesh_S_1-1778951764813.png

私のサンプルコードは以下のとおりです。

Hareesh_S_2-1778952311888.png

この方法でも動作しますが、信号測定を一度開始し、測定完了前に処理がブロックされるのを避けるため、Emios_Icu_Ip_StopSignalMeasurement() を呼び出すことなく、定期的に Emios_Icu_Ip_GetDutyCycleValues() を呼び出す方が望ましいです。あるいは、測定が完了するたびに割り込みが発生する仕組みでも構いません。

最初に Emios_Icu_Ip_StartSignalMeasurement() だけを呼び出し、定期的に (PWM 周波数が 1kHz の間、1 秒ごとに) Emios_Icu_Ip_GetDutyCycleValues() を呼び出すようにしてみましたが、データが不正確です。

私の理解では、SAICは可変PWM信号(私の用途に合致すると考えています)に適していると思いますが、遅延測定を伴うIPWMも使用できると考えています。デューティサイクルの急激な変化は想定しておらず、周波数も一定であるため、返される結果が数ミリ秒程度遅れたり、古くなったりしても問題ありません。

IPWMを使ってこれを実現する方法、あるいはSAICでしか実現できない方法を明確に説明していただけると大変助かります。

ありがとう

Re: S32K3 measuring PWM duty cycle (eMIOS ICU IPWM) without blocking

こんにちは、

発生している問題は、S32K3におけるeMIOS ICU IPWMモードの既知の制限事項です。
IPWMは本質的に「測定ウィンドウベース」であり、連続的ではないため、測定を再開/終了せずに定期的に読み取ると、古い値や部分的にしか更新されていない値が得られます。

IPWMは非同期の定期ポーリング向けには設計されていません。
次のいずれかを選択する必要があります。

  • 割り込み通知を使用するか、
  • 読み取り前に測定を再開するか、
  • 真のノンブロッキング連続測定にはSAICに切り替える

よろしくお願いいたします。

ピーター

Tags (1)
No ratings
Version history
Last update:
a week ago
Updated by: