2387876_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2387876_ja-JP

2387876_ja-JP

KE1 WDOGプリスケーラのLPOクロックにおける不正確さ

タイムアウトを20msに設定してWDOGを実行しようとしています。

WDOG_CSをLPOクロックソース(128kHz)に設定し、PRES = 1、WDOG_TOVAL = 0x000Aとしました。

それは 10/(128,000/256) = 10/500 = 0.02秒になるはずです。

しかし、いくつかの矛盾に気づき始め、SWで20msを超えているのではないかと思うようになりましたが、WDOGはリセットしてくれませんでした。次に、GPIOピンを設定/クリアするコードを組み込み、WDOGを更新するまでにどれくらいの時間が経過しているかを確認したところ、更新間隔は20.67msでした。

WDOGのタイムアウトが実際にどれくらい設定されているのか気になったので、WDOGをリフレッシュした直後にダミーディレイを追加して、WDOGがリセットされるまで待つようにしました。オスコープの表示では、更新からタイムアウトまで24ミリ秒でした。

次に、CLKOUTピンを使用して、LPOクロックが実際に128kHzで動作していることを確認しました。

イライラした私はクロックソースをSIRCにスイッチし、TOVAL = 625(625/[8MHz/256] = 625/31250 = 0.02s)を調整しました。以前と同じテストを実行したところ、ちょうど20ミリ秒という結果が得られました。

混乱したのでLPOクロックに戻しましたが、プリスケーラは外しました。低周波が何らかのエラーを引き起こしているのではないかと心配していました。プリスケーラなしのLPOクロックに戻し、TOVAL = 2560 (2560/128000 = 0.02秒) に設定したところ、WDOGから20msのタイムアウトが発生し始めました。

私の質問は、LPOクロックでプリスケーラを使用した場合に、なぜこれほど大きな精度低下が見られたのかということです。プリスケーラを使用したSIRCでは、精度低下は見られませんでした。この設定に関して、既知の不具合はありますか?周波数が低すぎる?

とても混乱しています。

Re: KE1 WDOG Prescaler Inaccuracies with LPO Clock

こんにちは、 @sean_dvorscak さん。

あなたの理論計算は正しいです。128 kHzのLPOクロックとWDOG_CS[PRES] = 1の場合、WDOGクロックは500 Hzになります。したがって、TOVAL = 10 の場合、理論上のタイムアウトは 20 ms です。

しかし、この構成では、カウンタティックは 2 ms であり、 TOVAL = 10 は非常に小さなカウント値です。したがって、内部同期、設定更新、リフレッシュパスのレイテンシはミリ秒単位のタイミング差に拡大されます。したがって、正確な20ミリ秒のウォッチドッグタイムアウトを実装するために、LPO + ÷256をこのような小さなTOVAL値で使用することはお勧めしません。

20 ms のタイムアウトが必要な場合は、プリスケーラなしで LPO を使用し、TOVAL = 2560 に設定するか、÷256 で 8 MHz SIRC を使用し、TOVAL = 625 に設定することをお勧めします

ソフトウェアのリフレッシュ間隔が20.67msに達する場合は、十分なデザインマージンを確保するためにウォッチドッグタイムアウトを延長することも推奨します。

お役に立てば幸いです。

 

よろしくお願いします。

 

BR

アリス

Re: KE1 WDOG Prescaler Inaccuracies with LPO Clock

ご説明ありがとうございます。低周波に関係しているような気がした。TOVAL値が低いことも問題の一因となっているというのは興味深いですね。

ご提案いただいたとおり、プリスケーラとTOVALを2560に設定せずにLPOクロックを使用するように既に修正しました。また、WDOGのタイムアウトを超過していたこの一時的な延長処理中に、WDOGの更新処理を1回追加しました。

タグ(1)
評価なし
バージョン履歴
最終更新日:
2 週間前
更新者: