EEPROM(93Cxx、59Cxx)アダプタの製作に挑戦!


 だじゃれとあそびのすきなFENG3が、PICライタ5号機の「最終バージョン」として製作した「100円ライタ」サイズのPICライタのあまった基板をおゆずりしたところ、「チョコ」さんから、完成したらさっそく93C57にかきこんでみるとのご返事。あわてました。電子工作初心者のFENG3としては、メモリへの対応など、まったく念頭にありませんでした。したがって、ZIPソケットを使用したPICライタ5号機では、JDMプログラマが標準で対応している24Cxxへの書きこみ(24C01Aをつかって書きこみテストをしましたが、オリジナルのJDMプログラマの回路ではどういうわけかWPが有効になるように設定されているので、書きこむことはできませんでした。オリジナルのJDMプログラマで24Cxxに書きこめるようにするためには、WPピンをGNDに接続する必要があります……2003年6月5日追加)もできません(PICライタ続編で紹介しているPICライタ5号機のICソケット版や、「100円ライタ」サイズのPICライタは、24Cxxに対応していますが、デバイスの手持ちがない関係でテストはしておりません)。そういう要望があるならば、こたえなければと、FENG3は「発奮」し、93Cxxに対応できるように挑戦することになりました。

 さっそく、データシートとにらめっこです。英語で書いてあるので、内容の半分も理解できません。ですが、93Cxxというメモリが、なぜ3線式とよばれているのかがわかりました。メモリにデータを書きこんだり、読みだしたりするのに必要な信号線が3本あるからです。電源をのぞけば、チップセレクトとクロックと、データの3本です(厳密にいうと、Microwire のEEPROMは、データ線が2本あるので、4線式と呼んでいるばあいもあるようです。通常、データ線はINとOUTを結合して使います……2003年5月24日)。これは、PICのプログラミングとおなじではないですか。ちがうのは、PICのプログラミング電源の電圧が13V前後なのにたいして、93Cxxの電圧はその半分以下だという点です(PICのプログラミングに必要な信号線は、3本のもあるようですが、たいていのデバイスはデータとクロックの2本です。その他に、電源が2本とプログラミング電圧が1本必要です……2003年5月16日)。それなら、電圧をさげればいいわけです。電圧をさげる、もっとも安くてかんたんな方法は、抵抗器をつかって分圧することではないかと考えました。考えるだけではだめです。そうおもうなら、実地に検証してみなければなりません

 

 ユニバーサル基板で製作したICソケット版のPICライタ5号機の配線をいじくって抵抗器を2本とりつけ、93LC46Bへの書きこみ・読みだし・消去の実験をおこないました。結果は、OKでした。

 アダプタの回路図です

 実験がうまくいったのなら、さっそく回路図です。ROCさんのホームページで紹介されている標準的なJDMプログラマで使用できるように、30分ほどかんがえて、描きました。18ピンのDILソケットでの製作を念頭におきました。それは、JDMプログラマの18ピンのPICの挿入位置にそのままセットすればいいからです。93Cxxの挿入位置は、回路図のとおりです。

 (注)公開を再開するにあたって、各種EEPROMのデータシートを参照した結果、以前の回路図では、ソケットの11番ピンと13番ピンを18番ピンと結合していたのですが、93C76等、PEピンのあるデバイスや、59Cxxへの対応も考慮して、13番ピンは結合しないように改めました。また、12番ピンはORGピンのあるデバイスの場合、あそばせていてもデバイスの内部でプルアップされているので、自動的にx16モードになるのですが、回路図では14番ピン(Vcc)と結合してx16モードにしています。デバイスをx8モードで使用する場合は、12番ピンを14番ピンではなくて、18番ピン(Vss)と結合します(5月24日)。

 なお、IC−Progの作者のホームページには、93Cxxと59Cxxに対応するアダプタの回路図が紹介されています。ツェナダイオード1本と抵抗器1本で構成します。FENG3が抵抗器をつかった分圧回路でアダプタをつくったわけは、そのうち、アダプタなしでも書きこめるようにPICライタを改造しようともくろんでいるからです(PICの「Vdd問題」で実験したように、Vppをそのまま他のピンに供給すると、プログラム書きこみができなくなります)。参考までに、IC−Progの作者のホームページで紹介されているアダプタを、JDMプログラマ用に18ピンのICソケットでつくる場合の回路図も紹介しておきます。

 アダプタの製作方法です

 これがいちばん難儀しました。自分でつくってつかう分には工作があらっぽくてもいいのですが、公開を前提につくるとなると、ていねいにつくらなければなりません。

 アダプタの製作に必要なパーツは、18ピンの丸ピンタイプのICソケットが1個と、1/4Wの小型のカーボン皮膜抵抗器が2本(10kΩ、15kΩ)だけです。配線には、細めのポリウレタン線(UEW)などをつかうとよいでしょうね。なお、FENG3は、アダプタの製作方法を解説するために、色つきのビニル線をつかいました。

 まず、ICソケットのピンを切断します。円で囲んだ7本のピン(5、6、7、8、11、12、13)を切断します。ふとい部分のさきのほそい部分だけ切断します。ニッパ等でピンを切断しますが、切断片が飛ぶことがありますので、保護めがね等を着用し、裸眼での作業はさけてください。また、ちかくに他の人、とくにお子さんがいないか、十分に気をつけてください。自分が怪我するのもよくないですが、子どもさんにたいしては、安全に配慮する義務があります(じつは、FENG3が二〇歳ぐらいのころのことです。うしろを振り向いたときに、鉄の棒が右眼につきささりました。めがねをしていたのですが、めがねのガラスはこなごなに割れて、ガラスの破片が血だらけの眼球にいくつも突き刺さりました。近くの医者で応急処置をしてもらい、そのあと、救急車で大きな病院にはこばれて、治療をうけました。さいわい、失明はまぬがれましたが、いまでも右眼が痛んだり、激しい頭痛に襲われます)。

 つぎに、抵抗器を2本を写真のようにY字形にはんだ付けしておきます。写真では、上の抵抗器が15kΩ、下の抵抗器が10kオームです。

 抵抗器をICソケットにとりつけます。写真では、左の4番ピンが15kΩ、右の2番ピンが10kオームの抵抗器です。はんだごてをながくあてすぎると、ICソケットのピンがゆがんだりソケットが熱で変形したりしますので、注意してください。

 ICソケットの5番ピンに2本の抵抗器ののこりのリード線をはんだ付けします。写真ではみにくいですが、ICソケットの裏側の配線はすべて、ピンの切断面ではなくて、側面にはんだ付けします。

  つぎに、4〜5cmの電線を3本、16、17、18番のピンにはんだ付けします。

 ICソケットの裏側に18番ピンからの電線(白色)をまわし、11番、13番ピンにはんだ付けします(注 11番ピンだけにします。13番ピンは、あそばせておきます……2003年5月23日)。

 12番ピンと14番ピンを短い電線(赤色)でつなぎ、はんだ付けします。

 16番ピンにはんだ付けした電線(緑色)をICソケットの裏側にまわし、6番ピンにはんだ付けします。

 17番ピンにはんだ付けした電線(青色)をICソケットの裏側にまわし、7、8番ピンにはんだ付けします。

 ビニルテープなどで、切断した7本のピンを覆い、絶縁しておきます。

 完成です。JDMプログラマの18ピンのPICの位置にアダプタを挿入すればOKです。

 動作テストは、93LC46Bと93LC56Bでおこないました。他のデバイスでテストされた方がいらっしゃいましたら、結果をおしらせくださると、うれしいです。書きこみができないばあいは、配線がまちがっていないか、よく点検したうえで、ICソケットの接触不良や絶縁不良を疑ってみてください。FENG3の試作した1つ目のアダプタは、太い電線をつかったので、ICソケット同士のはまりぐあいが浅くて、強くおしこまないと接触不良となって書きこみができないことがたびたびありました。また、現在のところ、このアダプタが対応しているのは、ROCさんのホームページで紹介されているシリアルポート接続PICライター(JDMプログラマ)と、FENG3のPICライタ続編のページで紹介しているPICライタ5号機のICソケット版や、「100円ライタ」サイズのPICライタだけです。ZIPソケット版のPICライタ5号機ではつかえません(別にアダプタを製作しなければなりませんが、ご要望があれば回路図はつくります)。

 アダプタを使用して93Cx6に書きこめない問題について

 FENG3の回路図でアダプタを製作され、「100円ライタ」サイズのPICライタを使用して93C66に書きこみをおこなったところ、チョコさんからエラーがでるというご報告がありました。FENG3は当初は、部品のつけ間違いとかを疑ったのですが、自分では93LC46Bと93LC56Bで書きこみテストをしただけで、93C66ではやっておりません。実地にやってみた方がいて、他のPICのデバイスでは書きこめるが、93C66ではエラーがでたというのが事実ですから、まず、FENG3も頭のなかで理屈をこねまわすのではなくて、実地にテストしてみるのがただしい方法です。

 というわけで、93LC66を入手して、書きこみのテストをしてみましたところ、結果はチョコさんの報告どおり、ベリファイエラーがでました。メモリの先頭アドレスのデータが「FFFF」におきかわってしまうのです。そこで、英語の辞書を片手に、各社の3線式のEEPROMのデータシートとにらめっこです。書きこみの命令のタイミングの問題をのぞいて、93LC66と他のデバイスとでは、とくにかわったところはなさそうでした。アダプタもいろいろいじくってみました。IC−Progのホームページで紹介されている、ツェナダイオードをつかったアダプタもつくってためしてみましたが、エラーがでるのはおなじでした。データのフォーマットや、チェックサムなどもしらべてみましたが、関係なさそうでした。

 2昼夜、試行錯誤した結果、どうやらIC−Progの書きこみ命令のタイミングがあやしいのではないかという疑いを濃厚にいだくようになりました。IC−Progの作者のホームページには、サポートしているデバイスと、JDMプログラマで書きこみに成功したデバイスリストに、たしかに93LC66は掲載されておりますが、それらは最新バージョンではなくて、古いバージョンのIC−Progのテスト結果である可能性もあるわけです。そこで、古いバージョンのIC−Progを入手して、ためしてみることにしましたが、作者のホームページからはもうダウンロードできません。それで、インターネットで検索をやりまくって、古いバージョンのIC−Progのソフトを保管しているポーランドのサイトをみつけだしました(http://www.republika.pl/secalukas/)。バージョンは、0.9eです(「灯台下暗し」です。IC−Progの日本語化パッチを提供されているROCさんのホームページから、かんたんにダウンロードできます。もちろん、日本語化パッチもあります…2003年5月24日)。

 この、古いバージョンのIC−Progをつかって、93LC66への書きこみテストをおこないました。動作速度は、最新バージョンの半分、いや、それよりもっと遅いです。しかし、93LC66への書きこみテストはうまくいきました。

 現在のところ、FENG3がこのアダプタを使用して書きこみテストをしたのは、93LC46B、93LC56B、93LC66ということになります。FENG3の財布のなかのお小遣いに余裕があれば、59Cxxなどでもテストしてみたいとおもいますが、アダプタを製作して他のデバイスでテストされた方がいらっしゃいましたら、結果をおしらせくださると、うれしいです。

 (注)公開を再開するにあたって、各種EEPROMのデータシートを参照した結果、以前の回路図では、ソケットの11番ピンと13番ピンを18番ピンと結合していたのですが、93C76等、PEピンのあるデバイスや、59Cxxへの対応も考慮して、13番ピンは結合しないように改めました。また、12番ピンはORGピンのあるデバイスの場合、あそばせていてもデバイスの内部でプルアップされているので、自動的にx16モードになるのですが、回路図では14番ピン(Vcc)と結合してx16モードにしています。デバイスをx8モードで使用する場合は、12番ピンを14番ピンではなくて、18番ピン(Vss)と結合します(5月24日)。

 注意事項:PICライタの製作にあたっては、自己責任でおこなってください。このページに記載されている情報をもとに製作された結果、ライタが動作しない、PICが破損した、パソコンが壊れた、家庭不和になった等の損害を被られても、FENG3はいっさい関知しません。

補足・訂正して再掲載(2003年5月24日)

掲載(2003年5月10日)