PIC In Circuit Debugger (ICD)




PIC ICD

製作のきっかけ

PIC16F87X には、デバッグモードがあります。コンフィグレーションフューズでデバッグを許可しておくと、RB7, RB6などのISP端子からコマンドを送ることにより、PICにブレークポイントを設定して動かしたり、ジャンプさせたり、レジスタの中を覗いたり変更したりできます。

そこで、この機能を使ってみようと思ったのですが、デバッグモードのコマンドは公開されていません。 デバッグモードを使うためには、市販されているPIC-ICDなどのデバッグツールを手に入れるしかないようです。

海外のPICメーリングリストでは、ICDを自作する人がいるということをPIC-MLで知りました。 どうやら、PIC-ICDのマニュアル(ダウンロード可)にある回路図とMP-LAB(これもダウンロード可)にある PIC用ファームウエアを使って作るようです。

情報収集

早速、PIC-ICDのマニュアルを見ると、確かに回路図が載っています。 また、MP-LABにもHEXファイルが付属しています。作るための情報が何のために公開されているのか わかりませんが、販売するわけでもなく個人で使うためなので、作ってみました。

代替部品選定と製作

マニュアルに載っている回路図は、海外の半導体部品を使っているため、入手が面倒です。 そこで、データシートをもとにして、適当に部品を置き換えました。

昇圧回路のコイルを駆動するトランジスタは、2SC2655、それ以外は2SC1815, 2SA1015としました。 ダイオードは、昇圧回路周りの部分に電力用を使い、ツェナーダイオードは5.6V、その他は1S1588を使いました。 また、PIC16F876をつかうようになっていましたが、持っていないのでPIC16F877を使いました。 877は876よりもI/Oピンが多いだけなので問題ないでしょう。

ターゲット基板とICDを接続するコネクタは、モジュラーを使うようになっていましたが、 好みでないので、もっと安くて簡単なコネクタにしました。

あとは、回路図通りに作りましした。ICD上に載っているPICは、パラレルポート接続のPICライターで書き込みました。

テスト

持っていたPIC16F877が載っている基板にICDのコネクタを付け、ICDを接続して試してみました。 1カ所の配線間違いを直すと、全く問題なく動きました。ブレークポイントを設定したり、再び動かしたりできます。

実機でジャンプさせたり、レジスタ値を変更したりできるので、便利につかえそうです。 しかし、プログラムを修正し、アセンブルし、新しいプログラムをPICに書き込むことになるのですが、 ICDを使ってPICにプログラムを書き込むと、とても時間がかかるのです。(大体3分くらいかかります) いつも使っているライターは、一部の修正なら数秒で書き換えができるので、この遅さはどうしても我慢できません。

そこで、パラレルポート接続のPICライターとICDを一緒につなぎ、書き込みはライターで行い、そのままICDで実行させてみました。読み書きをしていないときには、ISP端子をハイインピーダンスにして切り離すので、同時に書き込みなどを実行しなければ問題なく動作しました。 これで、快適に使えるようになりました。

回路の改良

オリジナルの回路は、5V程度の電源をターゲット基板から取り、簡単な昇圧回路で書き込み用の12.5Vを作るようになっています。今回は、その通りに作りましたが、部品数が多くなってしまうので、作るのは面倒です。パラレルポート接続のPICライターとICDを一緒に使うとなると、12.5Vの電源はPICライターの回路から供給してしまった方が簡単です。

また、ISP, ICD両方のコネクタを接続するのは面倒なので、両方まとめて一本にしてしまうと使いやすくなります。




(c) 1999 Ishijima Seiichiro
電子工作メニューへ

ホームページへ