FENG3がPICライタ5号機の改良版であるPICライタ5号機V2をつくるきっかけになったのは、インドのアマチュア無線団体の方からのメールです。ちょうどわたしは、40ピンのZIFソケット1個でいろいろなサイズのデバイスに書きこめるようにPICライタ5号機のソケットまわりの配線の見直しにとりかかっていたこともあって、このさい、VDDの遅延回路も組み込もうと考えたわけです。
VDDの遅延回路は、「えびめも」方式を採用しました。これは、PNPトランジスタ1個でVPPに連動してVDDのオンオフ制御ができますので、ライタの部品点数を少なくするにはうってつけの回路です。ところが、8ピンのPICではうまく読み書きできるのですが、18ピンをこえる大きなPICになると、プログラム書きこみでエラーがでたり、まったく読み書きできない場合があることが、わかったのです。
それで、しみっちさんに相談したところ、高速でスイッチングできるPチャンネルMOS-FETを使えば解決するのではないかという助言がありましたので、さっそくためしてみました。試作機を何台もこしらえてPICへのプログラム書きこみテストを繰り返した結果、5台目くらいでようやく満足のいくPICライタができあがりました。そして、できあがったPICライタ5号機V2の回路図と、海外のトランジスタやFETにおおいEBC配列のリード線にあわせたPCBをインドの友人のために提供しました。
ところが、あとで海外からの問い合わせのメールが何通も私宛にとどくようになりました。メールには、「PCBをチェックしてみると、VDDがGNDとショートしている。間違っているのではないか?」「回路図とPCBとでは、どちらが正しいのか?」というものでした。
あわてて回路図とPCBを点検してみると、なんと、PCBのほうではVDDがPチャンネルMOS-FETのソースとドレインをはさんでGNDにつながっているではありませんか。PCBにもとづいてつくったPICライタ本体を点検してみると、やはりVDDがおなじようにショートしています。
じつは、VDDの遅延回路を切りかえることなしに40ピンのPICにまで対応させようと試行錯誤していて、いちばんうまくライタが動作したのが、この方法だったのです。もともと、過負荷になってはいけないとおもって、VDDとGNDの間にはLEDをいれていたのですが、ただ1つ、PIC12F629ではうまく書きこめない場合があったので、このLEDをとりはずしたところ、12F629にもうまく書きこめるようになったのです。LEDをとりはずしたときに、VDDをGNDにつないでしまってショートさせてしまっているとは思いもよりませんでした。その後、PCBと実機にもとづいて回路図を作図したわけですが、作図の過程でVDDの遅延回路がもとのままだったのに気がつかなかったというしだいです。
この「ショート」の問題ですが、しみっちさんに計測してもらったところ、およそ8mAの電流が流れているそうです。RS232インターフェースは、パラレルポートとちがってショートにかなり強いので、この程度の電流では壊れることはないとおもいます(シリアルポートが壊れることが心配な方は、このライタを試さないでください)。それより問題なのは、このPICライタが、説明のつかない予想外の動作をしていることなのです(詳細については、現在、検証中なので省きます)。そのため、検証がすむまでは、回路図とPCBの部分的不一致は訂正しないでそのままにしてあります。
2004年12月4日までに、下記デバイスで書き込みテストをしてみました。VDDとGNDがショートしているライタと、そうでないライタの両方で試しました。2つのライタで試した結果に大差はありませんでした。わずかな違いは、下記の(3)を印したデバイスのうち、フラッシュメモリタイプのPICで、回路図どおりのライタを使ったときは、ライタに手をくわえなくても書き込める場合があったということだけです。このように実際に書き込みテストをしてみると、プログラミング仕様書に定められた、各デバイスをプログラム・ベリファイモードにする手法に反して、たいていのデバイスが「VPP before VDD」、あるいは「VPP-first」(マイクロチップ社も、内部MCLRとINTOSCのオプションを両方選択することができる一連の少ピンPICの公表にともない、改版されたPIC12F629/675のプログラミング仕様書でも、この用語を使いはじめました)の手法で書き込めることがわかります。
- PIC12C508,PIC12C509
- PIC12C508A,PIC12C509A
- PIC12CE518,PIC12CE519
- PIC12C671,PIC12C672,PIC12CE673,PIC12CE674
- PIC12F508(11),PIC12F509(11)
- PIC12F629,PIC12F635(1)(2),PIC12F675,PIC12F683(2)
- PIC16C505
- PIC16C61,PIC16C62A,16C62B(3),PIC16C63,PIC16C63A
- PIC16C64A,PIC16C65A,PIC16C65B,PIC16C66,PIC16C67
- PIC16C620,PIC16C620A,PIC16C621,PIC16C621A,PIC16C622,PIC16C622A
- PIC16CE623,PIC16CE624,PIC16C625
- PIC16F627,PIC16F628
- PIC16F627A(2),PIC16F628A,PIC16F648A
- PIC16F630,PIC16F636(2),PIC16F676,PIC16F684(2),PIC16F688(2)
- PIC16C710,PIC16C711(3),
PIC16C715(6)- PIC16C712,PIC16C716(3)
- PICPIC16C71,PIC16C72,PIC16C72A,PIC16C73A,PIC16C73B,PIC16C74A,PIC16C74B,PIC16C76,PIC16C77
- PIC16F72,PIC16F73,PIC16F74,PIC16F76,PIC16F77
- PIC16C745(3),PIC16C765(3)
- PIC16C717,PIC16C770,PIC16C771(7)
- PIC16C773,PIC16C774
- PIC16C781(7),PIC16C782
- PIC16C923,PIC16C924
- PIC16F818,PIC16F819
- PIC16F83
- PIC16C84
- PIC16F84(9)
- PIC16F84A(9)
- PIC16F87(2),PIC16F88(10)
- PIC16F870(8),PIC16F871(8),PIC16F872,PIC16F873,PIC16F874(4),PIC16F876(5),PIC16F877(5)
- PIC16F873A(5),PIC16F874A(5),PIC16F876A,PIC16F877A
- PIC18F1320,PIC18F2320,PIC18F4320
- PIC18F242,PIC18F252,PIC18F442,PIC18F452
- PIC18F248,PIC18F258,PIC18F448,PIC18F458(3)
- PIC18F4539(3)
(1) プログラム書き込みおよびベリファイは正常に終了しますが、プログラムを書き込んだ後、デバイスからの読み込みおよびベリファイができなくなる場合があります。安心してください。プログラムは正常に書き込まれています。また、デバイスの消去や再書き込みも正常におこなうことができます。
(2) IC−Progはまだこれらのデバイスをサポートしていません。WinPicを使用してください。
(3) これらのデバイスでは、ライタのプログラミング電圧が規定値を若干下回るので、PICをプログラムおよびベリファイモードにすることができません。MOS−FETのゲートとソースをテストリード等で接続するか、ゲートとGNDとの間にスイッチをとりつける、あるいはMOS−FETを一時的に取り外して、VDDを常時オンにすると、プログラム書き込みが正常におこなわれるようになります。
(4) これらのデバイスでは、WinPicを使用すると、プログラム書き込み・消去等で失敗するかもしれません。IC−Progで試してください。
(5) これらのデバイスでは、IC−Progを使用すると、プログラム書き込み・消去等で失敗するかもしれません。WinPicで試してください。
(6) PIC16C715は16ビット/ワードのプログラムメモリとコンフィグメモリをもつ特殊なデバイスです。WinPicおよびIC−Progではこのデバイスをサポート対象にふくめていますが、実際は書き込むことができません。また、書き込みを試みると、デバイスにコードプロテクトが設定され、ブランクのデバイスにコードプロテクトをかけてしまうことになります(私の高価なJWタイプのPIC16C715は、紫外線消去しても再書き込み不可能になってしまいました!)。
(7) これらの20ピンデバイスは、プログラミングに使用する端子の配置が他のデバイスとは異なっていますので、アダプタを使用するか、あるいはICSPの手法を試みてください。
(8) これらのデバイスでは、VDDを短絡させた回路ではプログラム書き込みはできますが、消去ができません。(3)の方法でデバイスを消去してください。
(9) WinPicでこれらの古いデバイスに書き込みで失敗する場合は、IC-Progを使用してください。「A」がつかないPIC16F84への書き込みで失敗する場合はIC−Prog1.05(A、C、Dのついていないバージョン)で試してください。
(10) WinPicでは、「Vddの上昇を50us待ってからVppを適用します」(raise Vdd before MCLR=Vpp)のオプションを有効にしてください。 PIC16F88への再書き込みで失敗する場合は、WinPicを再起動してください(または、IC−Prog1.05Dを使用してください)。
(11)IC−ProgもWinPicもこれらのデバイスに対応していませんが(2005年2月現在)、IC−Progを使用して書き込む方法はあります。ここを参照してください。
その他: 買ってきたばかりのフラッシュタイプのデバイスがいつもブランクだとはかぎりません。工場出荷時にテストプログラムが書き込まれていたり、コンフィグビットが不定な場合があります。買ってきたばかりのデバイスでプログラム書き込みに失敗する場合は、いちどデバイスの消去を実行してみてください。
灰色のデバイスは、私はこれらを持っていないので未テストです。
PICライタ5号機V2は、上記(3)のように、ワンタイム・プログラマブル(OTP)のPICに書き込む場合には、「ちょっとした工夫」が必要です。フラッシュタイプのPICが主流になっているとはいえ、すぐれた機能を搭載したOTPタイプのPICもまだまだあります。それで、「ちょっとした工夫」をスライドスイッチに置き換えました。また、PCBのパターン図も、もともとの回路図どおりにしました。そして、これを「PICライタ5号機V2改」として公開しました。PCBパターン図では、ジャンパ線の数を削減してそれらがZIFソケットの下にこないように配置し、スライドスイッチ1個を増設しました。それらを片面基板でPICライタ5号機V2のサイズを維持したまま実現するのに、1ヶ月も時間がかかりました。なお、このPICライタ5号機V2改をもちまして、PICライタ5号機シリーズの開発は終了します(FETを使わないバージョンをつくりました。英語版のホームページに回路図等を置いています。ただし、パターン図で使用しているトランジスタのピン配列は、「EBC」タイプのものです)。
ダウンロード
PICライタ5号機V2改
重要 2005年1月1日から1月20日15時の間に公開されたPCBパターン図には誤りがあり、18ピンのデバイスには書き込むことができません。基板の一部を修正することによって書き込めるようになります(詳細と修正方法)。お詫びして訂正します。すでにこのPCBパターン図を使ってライタを組み立てられた方は、ご面倒ですが、修正してくださるよう、お願いします。なお、現在ダウンロードできるPCBパターン図は修正済みです。
PICライタ5号機V2
PICライタ5号機V2の回路図は、Ham Radio India からダウンロードすることができます(PICライタ5号機V2改の回路図はこれにスイッチ2を取り付けただけです)。
注意! パターンを印刷するときは、「ページ処理」で「PDFのページサイズに合わせて用紙を選択」をチェックして有効にしてください(「ページの拡大/縮小」は「なし」を選択すること)。
デバイスの挿入位置
デバイスの挿入位置は、PICライタ5号機V2とPICライタ5号機V2改はおなじです。部品配置図も参照してください。デバイスの挿入位置およびスライドスイッチによるデバイスの選択が正しくないと、高電圧がMCLRピン以外の端子に加わり、デバイスが壊れることがあります。
デバイスの挿入位置
スライドスイッチを使用するPICに応じてあわせます。写真で説明しますと、8ピン-18ピンのPICは右側、28ピンと40ピンのPICは左側にスライドさせます。スイッチをまちがえると、最悪のばあい、PICが壊れることがありますので、注意してください。
VDDが先かVPPが先か? (PICライタ5号機V2改)
たいていのデバイスは、スライドスイッチ2で「VDD-first」、あるいは「VPP-first」のどちらを選択しても書き込むことができます。プログラム書き込みテスト済みのデバイス一覧で(3)の補足説明に該当する、メモリサイズの大きいOTPタイプのデバイスでは、「VDD-first」を選択します。おなじOTPタイプのデバイスでも、PIC12C509Aなどの内蔵オシレータと内部MCLRの両方のオプションを有効にしたプログラムを書き込む場合は、「VDD-first」を選択すると正しくプログラムが書き込まれていてもベリファイできなかったり読み込めない場合がありますので、「VPP-first」を選択するとよいでしょう。フラッシュタイプのデバイスで内蔵オシレータと内部MCLRの両方のオプションを有効にしたプログラムを書き込む場合は、「VPP-first」を選択します。これらのプログラミングのアルゴリズムの詳細については、各デバイスのプログラミング仕様書をお読みください。
トラブルシューティング (PICライタ5号機V2共通)
■PIC18F4450、PIC18F4455、PIC18F4550にプログラムを書き込めません。
対処法: データとクロックがRB7、RB6以外に流れないようにします。具体的には、つぎのようにします。まず、40ピンの平ピンのDIPタイプのICソケットを用意します。つぎに、そのICソケットの23番、24番、25番のピンを外側へ折り曲げるか根元から切断し、絶縁しておきます。そうしてこしらえた簡易アダプタにPICを挿入し、それらをPICライタ5号機のソケットに挿入してください。PIC18Fシリーズの他の機種でも書き込めないことがあれば、この方法をいちど試してください。(PICライタ5号機V2共通)
注意!
このライタの動作をFENG3は保証するものではありません。また、直接、間接にかかわらず、FENG3のホームページの情報にもとづいて製作された結果、生じた損害をFENG3は補償しません。製作はあくまで自己責任でおこなってください。また、趣味の電子工作であっても、鋭利な工具や高温になる道具を使用しますし、部品の切れ端や、感電や爆発などによって事故や怪我につながるばあいがあります。あなた自身が注意するだけでなく、あなたのちかくにあなたより小さな子どもがいるばあいは、あなたにはとくに安全に配慮する義務があります。
2006年7月16日更新
2004年4月13日作成