100msTask で Swt_Ip_Service を呼び出しますが、これはタイムアウト モードでは問題ありません。Windows の WDG モードを使用するには、swt 構成を次のように変更します。
ソフトウェアが期待どおりに動作しなかったため、ウォッチドッグがリセットされました。
設定に問題がありますか?どうすれば変更CANますか?
デバッグを試みましたが、Windows WDG モードでは CO レジスタが常に 0 であることがわかりました。
現在の時点からタイムアウトまでの時間を知るためのより良い方法はありますか?
同じ問題に直面して何か解決策を見つけましたか。
こんにちは@ Janeting123
SWTをオフにしないと、COレジスタの値を確認する方法はありません。
通常の犬モードで100msTaskの精度が検証されています。特定のサイクルで特別な状況が発生した場合は、デバッグする必要があります。
CR[WEN]=1のときのみ、SWTはウィンドウドッグモードになります。このとき、CO レジスタは常に 0 になります。適切なデバッグ方法が見つかりません。
こんにちは@ Janeting123
100 ミリ秒のタスク時間が完全に正確であるかどうか、または割り込みによって占有される可能性があるかどうかを確認する必要があります。
COレジスタの場合、まずSWを無効にしてから値を確認する必要があります。
SWTが無効(CR[WEN]が0)の場合、CNTは内部タイマーの値を表示します。SWTが有効(CR[WEN]が1)の場合、CNTに0を書き込みます。このフィールドの値は、内部タイマー値より最大 6 システム クロック サイクル + 8 カウンター クロック サイクル遅れる CAN があります。したがって、SWT を無効にした直後に読み取られる CNT 値は、内部タイマーの実際の値よりも高くなる可能性があります。
最初の文で説明したように、関数は 100msTask で呼び出されます。
この構成は、この 100 ミリ秒サイクル用に特別に用意されています。
SO、何が問題なのか分かりません。
さらに私を混乱させるのは、チップにウォッチドッグカウントを示すレジスタがないように見えることです。
こんにちは@ Janeting123
ウィンドウモードが有効になっている場合、サービスSWTは[タイムアウト期間 - ウィンドウ期間、タイムアウト期間]である必要があります。
例:
タイムアウト期間を150msに設定し、ウィンドウ期間を75msに設定しました
次にSWTを「0.15-0.075」でサービスする必要があります。〜「0.15」S は 75 ~ 150 ミリ秒の範囲です。