【ソフトウェア全体構成】
オシロスコープもUSBフレームワークのCDCクラスをつかいましたので、
プログラム全体構成は下図のようになっています。
パソコン側はVisual Basic.netとCOMポート用Windows APIを使ってコマンドを送信し、
データを収集します。このコマンドに応じてPIC側が動作してデータ収集を行います。
【PICメイン部詳細】
PIC側のプログラムは、これまでの製作例と同じように、CDCクラスをベースにして、
main.cとio_cfg.hを書き替えるだけでできます。プログラム全体の流れは下図の
ようになっています。
メインの流れでは、まず最初にI/Oポート、タイマ1、CCP1、A/Dコンバータ、
USBの初期化を実行したあと、メインループに入ります。
メインループでは、USBのイベントポーリングをしたあと受信データの有無を
チェックし、受信データがある場合にはそのコマンド内容に従って各処理を行います。
CCP1の割り込みは一定間隔で発生しますが、その周期はパソコン側からコマンドの
パラメータとして送られてきますので、可変周期となっています。
この周期ごとの割り込みで指定されたチャネルのA/D変換を行い、8ビットのデータ
としてメモリに保存します。保存先のメモリは、通常のRAMエリアが448バイトと、
USB用RAMエリア512バイトの合計960バイトとなっています。
ここに計測したデータを順番に格納します。保存したデータはパソコンからの
送信要求で64バイトごとのパケットとして送信します。
【PIC側ソフトウェアデータ】
オシロスコープのPIC側ソフトウェアはMPLAB C18用のC言語プログラムとなっています。
下記をダウンロードして、各Cのソースをプロジェクトに登録してお使い下さい。
★★ USBオシロスコープのプログラム
【PC側ソフトウェア概要】
USBオシロスコープのパソコン側のプログラムを作ります。
Visual Basic.netとCOMポート用Windows APIを使って作ります。
基本的な機能は下図の基本フォームから実行されます。
まずUSB接続は、正常に接続ができたら波形を表示するためのフォームを開きます。
手動計測、自動計測、フリーランはいずれも同じような処理で、コマンドの値が異なるのと、
繰り返しのためのタイマ2の起動の有無がことなるだけです。
このコマンドの時に、チャネル指定、同期レベル、サンプル周期の設定値を読み取って
パラメータとして送信しています。
送信完了後、タイマ1を500msec周期で起動してPICデバイス側のデータ収集完了を
問い合わせます。
収集が完了していれば64バイトずつデータ送信を要求して受信し、配列に格納します。
全部で15回受信すれば960バイトのすべてのデータの受信が完了します。
手動計測以外の場合には、タイマ1と同時にタイマ2も起動して周期的に計測要求を出す
ようにします。
【PC側ソフトウェアデータ】
PC側のプログラムはVisual Basic.net2003用となっています。
下記をダウンロードしソリューションを開いて下さい。
BINフォルダの実行ファイルはそのまま実行可能です。
★★PC側プログラム ソース