MPLABX IDEシミュレータの使い方( Stimulus その5 )

関連

MPLABX IDEシミュレータの使い方( Stimulus その1 )
MPLABX IDEシミュレータの使い方( Stimulus その2 )
MPLABX IDEシミュレータの使い方( Stimulus その3 )
MPLABX IDEシミュレータの使い方( Stimulus その4 )

Stop Watch機能

シミュレータではなくてデバッグのカテゴリになるが、この流れでメモしておく。

debug_func01

この機能は、デバッグでステップ実行したり、ブレークポイントで停止したときの区間の時間(おそらくサイクル数から時間を算出しているはず)を計測する機能になる。

StopWatchを表示した状態で、目的の位置で停止して、ステップ実行すると、該当行の処理にかかる時間が表示される。

図中にざっくりした使い方を記載したが、使ったほうが早いと思う。

debug_func02

例えば、図中のadcvalに値をセットする処理をステップ実行してStopWatchで表示してみたところ。

debug_func03

変数に整数を代入したときは3、7usで、ADC変換して値を代入したときが54usになる。

StopWatchの注意点

ステップオーバーしたときは正確な時間が測定されない。ブレークを貼って、Continueで計測する必要がある。

debug_stopwatch01

プロジェクトのSimulator - Oscillator Options - Instruction Frequency(Fcyc)の値は、システムクロックから算出したFcyc値と同じにしないと、正確にカウントしない。

8bitのPICで4MHzクロックを設定した場合、その1/4の1MHzの値を設定しておく必要がある。

debug_stopwatch02

XC8コンパイラの場合、usとms指定のdelay関数がある。試しに下記の内容を実装して、StopWatchで測定してみる。

__delay_us(10);
__delay_us(100);
__delay_ms(1);
__delay_ms(10);

StopWatchで測定した結果、シミュレータ上では正しく測定していると思われる。

debug_stopwatch03