電子書籍の厳選無料作品が豊富!

PICマイコンにつきましておしえてください。

初心者です、以下3点につきまして教えてください。

(1)
PICマイコンを用いて、実験機を作成しているのですが、プログラム上の
ある関数の処理時間がどのくらいが予測したいと思っています。
アセンブラの場合、クロック周期の4倍が1サイクルで、各処理毎に○サイクル
というのが、データシート上に記載されていることから、ざっくり処理時間を
予測することができるのですが、C言語の場合、予測することはできないでしょうか?
加算、減算、ポート出力制御、if文、AD、、、等の1命令毎の処理時間がどのくらいか、
予測することができますでしょうか?

(2)
実験機にはLCDをmain関数で表示させており、またTimer割り込み(5μsec)毎に簡単
な処理をおこなわせているのですが、動作させてみると、
LCDが表示せず(文字なしで高速で切り替えを繰り返しているような感じです。)
これは、割り込み間隔が早すぎて、main関数に入る前に随時5μsec割り込みが入って
main関数の表示ができていないということなのでしょうか?
割り込み間隔を50μsecにしたところ、うまく表示されましたので。。
(そういったことから(1)の質問をしました。)

(3)
MPLAB IDC2はデバッグシミュレータがあり、予測が難しい場合、ストップウォッチで、
確認しようと思っています。ブレークポイントを処理最初と最後に設定して、RUNで
時間を確認することができますでしょうか?

処理最初のブレークポイントまでは、どのように実行位置をもっていくのでしょうか?

長くなりましたが、よろしくお願いいたします。

A 回答 (2件)

>nsecオーダーの時間計測などを行う場合、どのような方法をとるのでしょうか?



そんな高精度測定は専用機を使うしかないでしょう。
というか「計測しながら処理」は現状のハイエンドPCでも不可能と思っていいです。
    • good
    • 0

(1)


Cの場合、同じコードでもどのようにアセンブラコードに展開されるかはコンパイラ設定次第ですから、ソースコードから直接というのは不可能と言っていいでしょう。
ただ、どのように設定しても「アセンブラに変換する」という過程が必ず入ります。
ですから「変換後のアセンブラコードから予測する」というのが正しい方法です。

(2)
「PIC」というだけでは判断しづらいですが、数MHz程度のマイコンだと秒間20万回の割り込み処理(5us毎=200kHz)をさばくのはまず不可能でしょう。
タイマー割り込み処理が終わる前に次の割り込みが入っていていつまでも割り込みから抜けられない、という可能性が高いと思いますよ。

(3)
フリーランタイマーがあれば開始時と終了時のタイマー値を取ってその差から実行時間を見るでもいいのではありませんか?
もう少し実行時間が長ければポート出力とオシロスコープという手もありますが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
大変参考になりました。

尚、(2)でPICは20MHzを用いています。
今作っている実験機ではないのですが、今後、2種類の信号時間差(伝播差)を
測定する実験機を作成予定なのですが、その伝播差が数nsec~10μsec程度の
ため、どのようにこの伝播差を計測したらよいか考えています。

当初はPIC、20MHzでTimer割り込みで、随時2種類の信号変化をみようと思
っていたのですが、Timer割り込み5μsecでも処理が追いつかないということな
ので、別の方法を検討しないといけないと思っています。
(クロックの最大はPICデータシート上20MHzと記載があったので、それ以上
 クロック周波数をあげるのは難しいそうです。)

nsecオーダーの時間計測などを行う場合、どのような方法をとるのでしょうか?
そのような専用IC、そのような測定の際の回路設計が必要??

ご存じでしたら、教えて頂ければ幸いです。

よろしくお願いいたします。

お礼日時:2011/03/02 19:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!