BTCUとeMIOS[S32k358を使用]に関する機能的な質問があります。eMIOSを使用してBTCUトリガーを設定し、各PWM立ち上がりエッジのADC値をキャプチャしましたが、期待どおりに機能します。しかし、プログラム内で eMIOS 周波数を動的に変更すると、BTCU のトリガーが停止し、BTCU 通知機能が呼び出されません。BTCUトリガーADCの機能を維持しながら、eMIOS周波数を更新する方法はありますか?
これを達成するのを手伝ってもらえますか?BTCUの機能やコールバックを呼び出す機能に影響を与えずに、コード内のトリガーを動的に変更する必要があります。
Hi,
あなたがそれを走らせたのを見てよかったです。
さらにコメントするには、コードでチャネルを指定します
これはどうやらあなたがお持ちのeMIOS設定には対応していないようです。
BR, Petr
PWM_CHANNEL は 22 で、EMIOS は 0 です。PWMPeriod を 32767 に設定するか、既定値を含む他の値に設定するかに関係なく、変更すると BCTU のトリガーが停止することがわかりました。
根本的な原因はわかりませんが、LCU から供給される TRIGMUX を介して BCTU トリガーを追加することで回避策を実装しました。このトリガーは eMIOS 内部バス から供給され、デッド タイムが含まれているため、トリガーがシフトされます。この構成では、周波数が変化してもシステムは動作します。
ご意見をいただければ幸いです。しかし、私は主要な問題を完全にデバッグすることができませんでした。感謝!
Hi,
トリガーを停止したときのPWM_CHANNEL、PWM_BCTU、およびPWMPeriodの値は何ですか。
PWM_BUS_CHANNELが 22 であるとします。
関数によって返されたステータスを確認しましたか?
BR, Petr
はい、eMIOS PWMをテストしてパルスを確認しましたが、問題なく動作しています。ただし、次の設定に示すように、BCTU はトリガーされません。
重要な観察事項の 1 つは、内部バスを使用すると、すべてが正常に機能し、問題なく周期を更新できるということです。しかし、eMIOSでは位相シフトも必要ですが、これは内部バスでは不可能なため、この問題に直面しています。
私は以前にも同様のアプローチを使用して、バスを介してeMIOSの周波数を変更し、PWMでさまざまな周波数と位相シフトを生成しました。
Hi,
選択したカウンターバス、MCBモードで実行されているチャネルのEmios_Mcl_Ip_SetCounterBusPeriod設定期間、最も一般的です。チャネルAレジスタを書き込むだけです。期待値 (>1) の場合、新しい値は次の期間に更新されます。
これは問題を引き起こさないでしょう、このチャネルはおそらくBCTUをトリガーしません。別のチャネルが使用され、このカウンター バスから実行されている場合、そのデューティ サイクルは周期の値を超えないようにする必要があります。
OPWFMB/OPWFM で実行されているチャネルの設定期間Emios_Pwm_Ip_SetPeriod、グローバルまたはローカルのカウンター バスから実行されていないチャネルは、内部カウンタを使用します。
では、BCTUをトリガーするチャネルの更新時にPWMが生成されているのがわかりますか?トリガーされたコンバージョンを完了できるほど期間が長いですか?
BR, Petr
ここでeMIOSを更新しています。強調表示された行をコメントアウトすると、その行は機能し、BTCU関数に移行します。ただし、コメントを外して頻度を更新すると、機能しません。
Hi,
特定のコード スニペットと BCTU 設定は正常に見えますが、eMIOS がどのように構成され、チャネルの PWM 周波数/デューティ/トリガーが変更されたかについての情報は提供されません。
eMIOS チャネル フラグは BCTU トリガーのソースであるため、eMIOS チャネルでフラグが生成されている限り、BCTU がトリガーされます。
BR, Petr