![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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で
時間を確認することができますでしょうか?
処理最初のブレークポイントまでは、どのように実行位置をもっていくのでしょうか?
長くなりましたが、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
>nsecオーダーの時間計測などを行う場合、どのような方法をとるのでしょうか?
そんな高精度測定は専用機を使うしかないでしょう。
というか「計測しながら処理」は現状のハイエンドPCでも不可能と思っていいです。
No.1
- 回答日時:
(1)
Cの場合、同じコードでもどのようにアセンブラコードに展開されるかはコンパイラ設定次第ですから、ソースコードから直接というのは不可能と言っていいでしょう。
ただ、どのように設定しても「アセンブラに変換する」という過程が必ず入ります。
ですから「変換後のアセンブラコードから予測する」というのが正しい方法です。
(2)
「PIC」というだけでは判断しづらいですが、数MHz程度のマイコンだと秒間20万回の割り込み処理(5us毎=200kHz)をさばくのはまず不可能でしょう。
タイマー割り込み処理が終わる前に次の割り込みが入っていていつまでも割り込みから抜けられない、という可能性が高いと思いますよ。
(3)
フリーランタイマーがあれば開始時と終了時のタイマー値を取ってその差から実行時間を見るでもいいのではありませんか?
もう少し実行時間が長ければポート出力とオシロスコープという手もありますが。
ご回答ありがとうございます。
大変参考になりました。
尚、(2)でPICは20MHzを用いています。
今作っている実験機ではないのですが、今後、2種類の信号時間差(伝播差)を
測定する実験機を作成予定なのですが、その伝播差が数nsec~10μsec程度の
ため、どのようにこの伝播差を計測したらよいか考えています。
当初はPIC、20MHzでTimer割り込みで、随時2種類の信号変化をみようと思
っていたのですが、Timer割り込み5μsecでも処理が追いつかないということな
ので、別の方法を検討しないといけないと思っています。
(クロックの最大はPICデータシート上20MHzと記載があったので、それ以上
クロック周波数をあげるのは難しいそうです。)
nsecオーダーの時間計測などを行う場合、どのような方法をとるのでしょうか?
そのような専用IC、そのような測定の際の回路設計が必要??
ご存じでしたら、教えて頂ければ幸いです。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelVBAの複数指定範囲の構文 2 2022/05/26 22:39
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
Data読出時のOSとのインタロック
-
電車で待機列の割り込みについ...
-
電車乗車時、並んでいるのに割...
-
割り込みのカウントの仕方
-
割り込み中に例外異常
-
CPU負荷率の安全な上限と計...
-
アセンブラのタイマー割り込み
-
これて逆じゃないですか?
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
英語を原型で表示するプログラ...
-
VBSの処理中一旦処理を止めて再...
-
Excelでのセル内容の高速消去方法
-
プロセスIDからウィンドウハ...
-
C# シリアル通信でデータ受信...
-
バックグラウンドのプロセスの...
-
メッセージボックスのボタン名変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
このレジの並び方は間違ってま...
-
電車で待機列の割り込みについ...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
CPUの処理量を減らすコーデ...
-
一定時間操作がなかったら、と...
-
CPU負荷率の安全な上限と計...
-
pic 複数の割り込み関数 切り分...
-
Amazonfireタブレットにわから...
-
【組込み】割り込み中のstatic...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
駅のトイレでナイチンに邪魔さ...
-
インバウンドで迷惑している人...
-
PICのSleepからの復帰に関して
-
PICでのプログラムによるチャタ...
-
実行した後、どうしてもフリー...
-
PICで内部タイマーを使わずカウ...
-
SH2のタイマ出力
-
割り込み中に例外異常
おすすめ情報