Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

MPLAB X のSimulatorで実行時間を確認する

MPLAB XでPICのプログラムの実行経過のシミュレーションができ、必要な時間をシミュレートすることができる。

File>Project PropertiesとクリックしてProject Propertiesを開く(プロジェクト名を右クリックで出るリストからも可能)。
mplabxsimtime00
普段はPICKit3となっているところをSimulatorとする。
mplabxsimtime01

Option for SimulatorのOption CategoriesでOscillator Optionsを選択してクロックの周期を設定する。
Instruction Frequencyはクロックの4分の1らしい。
4クロックで1サイクルってんだっけかな?
mplabxsimtime02

行番号の左あたりをクリックして時間を計りたいところにBreak Pointを設定する。
mplabxsimtime03

Windows、Debugging、StopwatchでStopwatchの窓を開いておく。
mplabxsimtime04

Debuggingを開始し、Break Pointで止まったら実行ボタンを適宜クリックする。
mplabxsimtime05

この例ではこんな感じにBreak Pointでの時間が表示される。
mplabxsimtime06

割り込みから割り込みまでの時間をチェックするというのが一番の目的だと思うので、その際はvoid interruptのルーチンのしょっぱなにBreak Pointを設定するでいいかと思う。
mplabxsimtime07

区間の時間を知りたければ、これを押しておく。
こっちの方がわかりやすいな。
当然、毎回同じ時間で割り込みが生ずる。
mplabxsimtime08
この例では、クロックは11.776MHz、タイマーは7から数え、プリスケーラは256という設定なので、
11776000 ÷ 250 ÷ 256 ÷ 4 = 46
となって、タイマーのルーチンを46回繰り返せば1秒になる計算だ。
シミュレーションの値で同様に考えると、この区間の処理を、
1000 ÷ 21.745924 = 45.9856
繰り返せばいいということになって、ぴったり1秒にならずに計算値からずれてしまう。
実際に46回に設定してシミュレーションし直すと、
mplabxsimtime09
となり、0.041011秒長めになるらしい。
どの部分でこの微妙な誤差が出るのか、「割り込み」自体が良くわかってないんだな。

このエントリーをはてなブックマークに追加

Posted under: MPLAB X


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.