[H8-ML(2040)] Re: ウォッチドッグタイマ
From: hamayan <hamayan@xxxxxxxxxxxxxxx>
Date: 2002年07月09日(火)12時40分48秒
お世話になっています。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★★★★★★★

スレッド概略
[2039(R)](起点)
 └[表示中]
   └[2044(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]