お世話になっています。hamayan です。 正にRTOSを使いたくなる様な事例ではないでしょうか。 "Hirashita"> 現在、H8/3067(20MHz)を使用しております。 "Hirashita"> ウォッチドッグタイマを使用したいのですが、最長でも約50msに一度、 "Hirashita"> タイマのクリアが必要になります。(ですよね?) "Hirashita"> さて、ここで浮動小数点演算を行う場合なのですが、現在使用しているコンパイラの "Hirashita"> 吐き出すコードではasin()などの関数の処理時間が200ms程度かかっています。 "Hirashita"> このような場合、私の思いつく解決方法は "Hirashita"> 質問1 "Hirashita"> ここで2の割り込みで叩く場合、コードやベクタは最終的には "Hirashita"> ROMに書かれる事になるでしょうから、暴走した場合にも "Hirashita"> 割り込みだけは平然と動き続ける、というケースを心配しているのですが、 "Hirashita"> そのようなケースは現実にあり得るのでしょうか? 考えられる全ての可能性を否定できないので、つまり暴走中も割込みだけは動 いている状況、割込みはお勧めできません。何よりもどんな状況に陥っているか 判らないのが暴走ですから。 "Hirashita"> 質問2 "Hirashita"> 上記とは別に、μITRON系のRTOSを使用したとします。 "Hirashita"> この中で周期起動ハンドラでウォッチドッグを叩くとした場合、 "Hirashita"> これは確実に暴走を検出できるのでしょうか? WDTのリセットの場合正確な周期は必要無いと思われるのでITRONの周期起動 ハンドラでなくても優先順位の低いTASKを作ってそこでWDTをリセットする方 法が良いのではないのでしょうか。dly_tskを使って簡易的に周期を生成します。 50msなら25ms程度が適当かと。 この程度なら数十から100byte程度のコンテキスト領域を用意すれば実装できる でしょう。 但し懸案の三角関数の実行時間の方がWDTリセットの周期より長いのでこの場合 は三角関数のTASKよりWDTリセットのTASKの方を優先度をちょっとだけ上にして 下さい。基本的に優先度の決め方は実行時間の短い順です。勿論例外は多いと 思いますが。 同様にデバック時の良くやる手は最も優先順位の低いTASKでポートをバタバタ させてそれをオシロでモニターします。CPU負荷とリアルタイム性を検証する簡 単な手段として使っています。 ------------------------------------------------------------ )^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^()^o^( ☆☆☆☆☆☆☆☆☆☆☆☆designed by hamayan☆☆☆☆☆☆☆☆☆ from はまやん アドレスは hamayan@xxxxxxxxxxxxxxxx FILEを添付される場合は hamayan@xxxxxxxxxxxxxxx ★★★★★★★★★end of message and thank you★★★★★★★