[MCXN947との連携]
SPCでは、低電力モードとアクティブモードの両方で、電圧検出割り込みを有効にしています(リセットは無効)。アクティブモードはリセットを無効にし、バンドギャップを有効にしています。
SPC0->ACTIVE_CFG: 3f101615
SPC0->LP_CFG: 3f221515
SPC0->VD_IO_CFG: 0000000a
SPC0->VD_SYS_CFG: 0000000a
SPC0->VD_CORE_CFG: 0000000a
WUUでSPCをウェイクアップソースとして有効にしました(WUU->MEビットが設定されています)。
SPC割り込みはアクティブモードで動作しますが、電源オフモードでは動作しません。つまり、プロセッサはSPC割り込みを処理するためにウェイクアウトしません。
おそらく動作しているとは思うが、アクティブモードとパワーダウンモードでは反応に大きな違いがある。アクティブモードでは、SPC割り込みはより迅速に応答し、繰り返し発生しますが、パワーダウンモードからは、割り込みが発生するまでに非常に時間がかかり、一度しか発生しません。
こんにちは、 @robert_hines さん。
電源オフモードからのウェイクアップレイテンシは、アクティブモードの割り込み応答時間よりも長くなると予想されます。電源オフモードでは、MCUの大部分が静的状態にあります。より深い低消費電力モードに入る際のトレードオフの一つは、そのモードの入り出時にレイテンシが増えることです。
割り込みが一度だけ発生する問題については、アプリケーションコードの処理に問題があるのではないかと疑っています。SDKに含まれるpower_mode_switch例を参照し、実装とあなたのコードを比較していただけますか?
それでも問題が解決しない場合は、FRDM-MCXN947ボード上で問題を再現できる簡単なプロジェクトを提供してください。喜んでさらに詳しく調査いたします。
よろしくお願いします。
BR
アリス
状況は以下のとおりです。
- FreeRTOSへの移植
- 低電力タイマーを使用して、PM_EnterLowPower()で電源オフモードに移行します。
- IRQHandlers は setFromISR() と portYIELD_FROM_ISR() を使用します
- 高優先度タスクがISRで設定されたイベントビットを待機している場合、xEventGroupWaitBits()
- 一部の割り込みはWUUを経由して電源オフモードで利用可能にしており、外部ピンの一部(正常に動作しているようです)や、SPCが遅い/応答しない点を除き、問題なく動作する内部モジュール(VBAT、LPTMR、TDET、SPC)も含まれます。
- SPC割り込みはIRQHandlerで無効化され、イベントビットの設定を待つ高優先度タスクで処理された後に再有効化されます。この待機タスクはイベント情報ビットのプロセッシング後に再び PM_EnterLowPower() を呼び出します。
問題は、SPC割り込みが他の割り込みと同じように応答しないことだ。プロセッサが起動しても再びスリープに戻り、再びトリガーされません。アクティブモードで電源が切れても、発火は続けます(PM_EnterLowPower()でプロセッサを再び電源オフモードに戻せません)。