So-net無料ブログ作成
検索選択

MPLAB-XでStopWatchを使ってみた [MPLABXとXC8]

(2015.04.18)
PIC16F1705を使ったアプリケーションの開発を続けています。10mSインターバルで行う処理の中でlongデータの乗除算を行うのですが、その演算処理時間が気になり、MPLAB-XのStopWatch(シミュレータの機能)を使って確認することにしました。
2015_0419_001.pngStopWatchウィンドウを開く
ところが、最初のディレイ処理で変なことに気づきました。1msのディレイ・ループの処理時間が2msと表示されるのです。
2015_0419_002.png1msのディレイに2ms掛かっている
???

調べてみると、シミュレータのプロパティにInstruction Frequency(1MHzになっていた)があり、プログラムで設定したOSCCONレジスタの値(2MHzになる筈)はシミュレーションクロックに反映されないらしいのです。
2015_0419_003.pngInstruction Frequencyが1MHzになっていた

Instruction Frequencyを実機に合わせれば、正しい処理時間を計測出来る筈ですが、プロパティを変更する方法が直ぐには判りませんでした。orz

暫くジタバタして、ようやく”unlockボタンをクリックすれば設定変更が可能になる”ということに気づきました。
2015_0419_004.pngunlockボタンをクリックすると設定変更できる

ヤレヤレ
===================================
ちなみに、PIC16F1705の演算処理時間はこんな感じでした。
(Instruction Frequencyが1MHzの場合)

unsigned int ix,iy;
unsigned long lx,ly;
__delay_ms(1); // 2.024ms
ix = 0x100;
iy = 0x0ff;
ix *= iy; // 192us
ix /= iy; // 352us
lx = 0x7fff;
ly = 0x7fff;
lx *= ly; // 511us
lx /= ly; // 968us

実機のInstruction Frequencyは2MHzですが、longの乗除算は多用しない方が良さそうです。
制御方式の見直しが必要だなぁ

にほんブログ村 IT技術ブログへ
にほんブログ村 ネットブログ コミュニティサイトへ
にほんブログ村 IT技術ブログ オープンソースへ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。