dsPIC33FJ128GP802を使用し、ロジックアナライザーを作成しました。dsPICを最高速の80MHzで動作させTimer1で定期的にロジック信号を取り込み内部RAMに収集していきます。PICkit2のロジックアナライザーと同等の機能をもっています。さらに、PICkit2のロジックアナライザーで不足を感じていた「FreeRun機能」を盛り込みました。
全てC言語 (XC16)でコーディングしたため、サンプルレートの最高は1μSecです。1回に1100サンプル読み込みます。dsPICはRAM容量が大きいため保存するサンプル数はこの10倍にすることも可能ですが、データ取得や結果の転送に時間がかかるため、1100サンプルにとどめています。また、現在使用している入力端子は、5vのロジックを直接接続できるRB6-RB9の4チャンネルです。さらに、 RB10、RB11を追加することは簡単な変更で可能ですが、PC側の操作パネルの見栄えの点から、現在必要としている4チャンネルだけにしています。 収集したデータはUSBでPCに送り表示させます。dsPICからはシリアル115200bpsで出力し、PIC16F1455の「シリアル - USB変換」でPCのCOMポートに接続しています。
このdsPICロジックアナライザーを操作するPCアプリケーションは 次ページで紹介します。
ポイントは以下の点です。
PCからのコマンドを解釈し、データの収集を開始すると、サンプル間隔毎にデータを保存したのちに、トリガ条件を満たしているか検査します。トリガポイント前後の処理シーケンスの流れを下図ステート処理に示しました。
XC16 C言語ソースリストは、[こちら]