PICの「Vdd問題」


 シリアルポート接続のPICライタの5号機を製作していて、回路図とパターン図の製図も終了し、プリント基板のエッチングにかかろうかという段階で、ZIPソケットに挿入するPICのうち、28ピンのPICの正規のVdd端子にまったく電源を配線していないことに気がつきました。ZIPソケット1個で8ピン〜40ピンのPICに対応するために、「しろうと」なりに苦心して配線したつもりだったのですが、異なる信号線がかさなることを回避するためにとった措置で、見落としがあったのです。「でも、せっかくだから、エッチングして組み立ててみよう」とおもい、できあがった基板に部品をはんだ付けし、ケースに組み込むまえにPICの書きこみテストをおこなってみると、28ピンのPICにも正常に書きこみができたのです。電子工作初心者にとっては、摩訶不思議な出来事でしたが、「結果オーライ」で、公開することになったわけです。ですが、いまひとつ納得できません。なぜ、PICのVdd端子に電源を供給しなくても、プログラミングが可能だったのでしょうか。こういう問題は、マイクロチップ・テクノロジー社のホームページをみても、回答がでてきそうにもありません。そこで、FENG3はこう推測しました。推測その1は、もともとPICのプログラミングには電源が必要ない、というものです。推測その2は、PICのVdd端子に電源を供給しなくても、他の端子が電源につながっておれば、プログラミングが可能である、というものです。この疑問と推測を伝言板(掲示板)に掲載したところ、Gioさんから、「どうやらPICはVddを接続しなくてもIOポートから回り込む電流によって駆動できてしまうことがあるようです」という、MODチップでの経験を教えていただきました。そうなれば、実地にためしてみなくてはいけません。空理空論は、なんの役にもたちません。

 というわけで、FENG3の推測を、実験してみました。実験には、PICライタ5号機を使用しました。

PICライタ5号機

 PICライタ5号機のZIPソケットの32番ピンは、28ピンのPICの20番ピンにあたるので、本来はVddを結線しなければならないのですが、なにも接続されておりません。かわりに、11番ピンがVddに接続されています。正直いいますと、FENG3は、40ピンのPICのVdd端子と28ピンのPICのVdd端子がはじめはまったくおなじ位置にあるとおもいこんでいたのです。18ピンのPICの11番ピンが28ピンのPICのVdd端子である20番ピンとぶつかるので、反対側の11番ピンをVddに接続すればいいとおもったのです。しかし、40ピンのPICには両側にVdd端子がありますが、28ピンのPICには片側にしかありません。しかも、28ピンのPICの11番ピンは、RC0というI/Oピンです。エッチングもおわった時点でこの点に気づいたのですが、組み立ててみると、なんの問題もなくPICへの書きこみができました。

 推測その1の実験です。

 実験には、PIC16F84Aを使用しました。まず、PICにVddを接続しなくてもプログラミングできるのかどうかを実験するために、Vddのピンを切断しました。実際には、PICのピンを切断すると、もったいないので、18ピンのICソケットのほうのピンを切断しました。

実験につかったPIC16F84A

 ピンを切断するときには、このつぎから保護めがねを着用したほうがよさそうです。切れ端が飛んで、眼にささるおそれがあるからです。「安全第一」です。

 このPIC16F84AをPICライタ5号機にセットし、プログラムの書きこみテストをおこないました。ライタソフトはIC−Prog1.05A(日本語化パッチ適用)を使用しました。

 まず、「すべて消去」を実行しました。「デバイスは消去済み」と表示されました。つぎに、「ブランクのチェック」を実行しました。「デバイスはブランク」と表示されました。じつは、実験に使用したPIC16F84Aには、あらかじめプログラムを書きこんでおきました。じっさいには、「すべて消去」を実行しても、プログラムは消去されていませんでしたが、「デバイスは消去済み」と表示されたのです。また、ブランクでもないのに、「デバイスはブランク」と表示されたのです。Vddが供給されるように、PIC16F84AをICソケットからはずしてPICライタ5号機に直接、装着してセットしなおし、再度ブランクチェックを実行すると、やはり「次アドレスはブランクでありません 0000h!」という表示がでました。このままの状態で、「すべて消去」を実行し、「ブランクのチェック」を実行しました。これでほんとうにブランクになったわけです。

 つぎに、ブランクになったPIC16F84AをVdd端子を切断したICソケットに装着しなおし、PICライタ5号機にセットして、プログラムの書きこみテストをおこないました。「次のアドレスで照合に失敗 0000h!」という結果になりました。つまり、PICにVddがまったく供給されていない状態では、プログラムの読み書きはまったくできないということです。

 推測その2の実験です。

 こんども、PIC16F84AをVdd端子を切断したICソケットに装着して実験しました。こんどは、ジャンパ線をつかって、Vddの供給されているZIPソケットのコンタクトから、PICのVdd、Vss、MCLR、RB7、RB6の5つをのぞいた他の端子にVddを接続してみました。

Vddを他のピンに接続

 実験をまねされる場合は、自己責任でおこなってください。各信号線がどの位置にあるのか、よく確認することが必要です。PICが破損したり、ライタが壊れたり、パソコンが発火して壊れることがあるかもしれません。

 プログラムの書きこみはうまくいきました。

IC−Progの画面

 書きこみテストに使用したプログラムは、玄関ドアのコードロックのプログラムです。

 この実験の結果から、Vdd端子ではなくて、MCLR、Vss、RB7、RB6をのぞく、Vdd端子以外の端子に電源が供給されておれば、PICへのプログラミングは可能だとおもわれます。ただし、正規のVdd端子以外の端子に電源を供給することがPICに与える悪影響については、検証しておりません。ですが、これで、PICライタ5号機で悪戦苦闘したZIPソケットまわりの配線の問題の解決に光明がさしてきたわけです。本家のJDMプログラマの回路図をみても、Vddが本来の端子以外の端子にも接続されているなぞが、すこしは解けてきたわけです。

 この実験の結果をとりいれて、PICライタ5号機の「廉価版」(ICソケット版)のソケットまわりの配線をおこないました。つまり、「Vdd問題」とは、わたしにとっては、プログラミングのさいに未使用となるピンのあつかいの問題なのです。機会があれば、わたしがさいしょにつくったPICライタ5号機(ZIPソケット版)の回路の見直しもおこないましたので、回路図とパターン図もそのうち公開したいとおもっていますが、まずPICライタ6号機を完成させることを優先したいとおもいます。

 付録の実験

 Vddの問題は、自分なりに納得しました。ところで、Vppではどうでしょうか? Vppの場合は、PICのセレクタスイッチをなくせないものかと考えて実験したものですが、Vppを本来のVpp端子以外の端子にも供給すると、LEDランプはすべて暗くなり、PICにプログラムを書きこむことはできませんでした。

(2003年4月15日)