■PICについて
・便利なPICというワンチップマイコン
PICというワンチップマイコンは、非常に安価でRAMやROMも内蔵するためほとんど外付け部品なしで動作する。専用のアセンブラなどがチップメーカーからも無料で配布されているため、一般の者でも使いやすい。いろいろなことに使用できる便利なワンチップマイコンで、何年も前からトランジスタ技術などのエレクトロニクス雑誌には製作記事として登場している。
よく使われるPICには12C509、16F84などがあり、12C509にいたっては秋葉原の秋月電子では\120ほどで入手できる。プレステでバックアップしたCD-ROMでも動作するように改造するときに使われる”MODチップ”もこのチップにプログラムを書き込んだものだ。
PICにプログラムを書き込む手順は次の通り。まずアセンブラなどでプログラミングしてHEXファイルとして出力する。出力されたHEXファイルはPICライターを使ってPICに内蔵されているROMに書き込こむ。
・PIC用のライター
PIC専用ライターは、高価な市販の完成品をはじめ、比較的安価なキット、そして雑誌やWEB上でもいろいろな回路のものが公開されていて、自作して使われている場合も多い。
比較的簡単な回路で安価に作れるパラレルポート接続のもの発表されているが、接続ケーブルが長いと動作が不安定のことも多く、後にトランジスタ技術で改善された回路も公表されたようだ。
キットとしては、秋葉原の秋月電子通商(通販および代引きも可能)から販売されているAKI-PICプログラマーが安定して使える。ただし次の欠点がある(\5700で販売されていた旧版AKI-PICプログラマーについて)。PICには動作を決めるためのコンフィグレーション・ワードと呼ばれる設定があり、これをPICに書き込むためのHEXファイルに含むことができる。このHEXファイルに含まれているコンフィグレーション・ワードを無視するという欠点があるため、いちいち指定しなおす必要があるので面倒なのだ。(このライター用の制御ソフトでHEXファイルをセーブすれば一応コンフィグレーション・ワードは保存されるが・・・)
※ 秋月電子から新型のPICライターキット(AKI-PICプログラマーVer3)が\6700で発売されている。これはゼロプレッシャーソケットが2個付いて12C509などの8ピンのものでも別にソケットを用意する必要がなく、基板も頑丈なガラスエポキシの専用プリント基板に変更になった。ソフトもWindows版が付属している(これは単体でAKI-プログラマーWIN用プログラムとして\500で入手できる)。旧版PICライターユーザーは、アップグレード版とでも言うべきIC以外の部品が付いた「お引っ越しセット」(ICは前のバージョンから移植する)が限定1000で発売されていたが、現在は販売されていないもよう。操作性やその他の詳細は不明。
他に安価で簡単に作れてコンフィグレーション・ワードを読み込んでくれるPICライターはないのか・・・・・・
■\1000以下で作れるシリアルポート接続PICライター
次の海外のサイトに以下のような特徴のPICライター製作コンテンツを発見。これは JDMプログラマ と呼ばれるPICライターで、簡単な回路で安価に作れ、ここで配布されている書き込みソフトを使えばHEXファイルに含まれているコンフィグワードも読み込んで書き込んでくれるし、まさに私が探し求めていた究極のPICライターだった。
http://www.jdm.homepage.dk/newpics.htm
アクセスLED、電源LEDの追加
このシリアルポート接続PICライターに、読み書き時に点灯する”アクセスLED”と、電源が入っていることを示す”電源LED”を簡単に追加できます。LEDがあると動作がわかって便利で安心です。
PICライターがシリアルポートから電源を作っている関係で、あまり電流を流すのが心配です。LEDと直列に接続している抵抗は2.2kΩで大丈夫でしたが、もう大きい値(10kΩ程度)にしたほうがいいかもしれません。動作環境によっては、LEDを取り付けているために電圧が低下して動作が不安定になる場合があるようです。
|
特徴は次の通り
◎対応しているPIC
12C508、12C509、12C509A、16C84、16F84、16F84A
JDMのサイトによれば、PIC12C5XX, 12C67X,
24CXX, 16C55X, 16C61, 16C62X, 16C71, 16C71X,
16C8X, 16F8X
→Windows用ソフト IC-Prog を使い、
JDMプログラマの回路を工夫すれば、各種PICに対応可能。
◎シリアルポートに接続
専用のインターフェースが不要で、ノートパソコンでも使用できる。
→シリアルポートがないPCの場合、USB/シリアル変換アダプタを用意して、
Windows用ソフト IC-Progを使えば使用できる場合がある。
ただし、アダプタのシリアルポートのレベルが低い場合、書き込み不可能。
※注意:変換アダプタは直接I/Oポートを制御することができないため IC-Prog
の設定で、「 Windows API 」 にするのと同時に、変換アダプタに割り当てられている
COMポート番号を指定する必要あり。
●FENG3さんがUSB/シリアル変換アダプタで書き込む工夫をされているのでぜひご覧ください。
◎簡単な回路で安価に製作
一般的な部品を使った簡単な回路のため、部品代は\1000もあれば作れる。
◎電源不要
シリアルポートから動作に必要な電圧を作り出しているため電源が不要。
◎書き込みソフトの特徴(JDMプログラマのHPからダウンロードできるもの)
・PICの動作設定が不要
PICアセンブラで吐き出されたHEXファイルに含まれている動作設定であるコンフィグワード、
これを読み込んで書き込んでくれる。
逆にHEXファイルにコンフィグワードが含まれていない場合(そういう場合もあった)、
うまく書き込みができないのが欠点にもなる。
→Windows用ソフト IC-Prog を使えば解消
・DOS上のコマンドラインで動作
AT互換機用のDOS専用。WindowsのDOSプロンプトでも問題なく動作。
コマンドラインからいちいちコマンド名やファイル名、さらにポート番号を
入力しなければならないのが面倒。
→Windows用ソフト IC-Prog を使えば解消
なお、DOSプログラムは直接ハードウェアを制御しているため、ハードウェアの異なる
NECのPC9801シリーズでは動作しない(PC98NXシリーズは動作OK)。
→PC98x1用ソフトを使えば解消
■PICライターの製作
・使用部品について
さっそく製作に入るために部品を集めるが、特殊な部品はほとんどないので近くのパーツ店に行けばすぐに集まる物ばかりだ。
私の場合は、手持ち部品を積極的に活用した。ツェナダイオード(8.2Vと5.1V)は手持ちにさすがになかったので購入した(名古屋のタケイムセンで1個\20)。ソケットは個人では頻繁に書き込むことはないのでゼロプレッシャのものを使わなくても普通の安物で十分だ(ソケットの下に線を挟んでPICを差し込む、後で線を引っぱれば簡単にPICが抜ける)。トランジスタやダイオードは、日本の同等に使えるものに置き換えればよく、2SC1815など汎用小電力トランジスタ、ジャンク箱に入っていた型番不明の汎用スイッチングダイオードを使った。他の部品もジャンク箱に入っているものばかりだったので部品代は\500もかからなかったが、地方の電子パーツ屋で買ったとしても\1000でおつりが来るだろう。
部品名 |
|
数量 |
コメント |
ツェナダイオード |
8.2V |
1 |
小電力用のもの。数十円 |
|
5.1V |
1 |
小電力用のもの。数十円 |
トランジスタ |
2SC1815等 |
2 |
原典はBC547B。汎用小電力用ならなんでもよい。数十円 |
ダイオード |
1S1588等 |
4 |
原典は1N4148。汎用小電力スイッチング用ならなんでもよい。数十円 |
抵抗 |
1.5kΩ |
1 |
普通の小型のカラー抵抗。10円程度 |
|
10kΩ |
1 |
普通の小型のカラー抵抗。10円程度 |
コンデンサ |
100uF 50V |
1 |
電解コンデンサで耐圧は35Vでも可。容量は手持ちの220uFを使用した。数十円 |
|
22uF 16V |
1 |
電解コンデンサ。数十円 |
D-SUBコネクタ |
25ピン メス |
1 |
D-SUB 9ピン メスに変更すればPCのシリアルポートにケーブルなしで直結もできる。高くて200円程度 |
ICソケット |
18ピン |
1 |
数十円の安物I。高価なゼロプレッシャーソケットでなくてよい。 |
ユニバーサル基板 |
|
1 |
小さいものでよく、必要に応じてカットして使う。100円程度 |
配線用線材 |
|
若干 |
|
接続ケーブル |
|
1 |
手持ちのモデム用のシリアルケーブルなど |
・製作について
部品が集まれば製作だ。D-SUBコネクタの半田付け側端子はユニバーサル基板に挟み込むようにして半田付けすれば頑丈に取り付けられる。そのためにはユニバーサル基板の余白を切り取って、基板のランドがD-SUBコネクタに接触するようにする。配線ではジャンパー線を飛ばすのが嫌いで、なるべく部品の足やスズメッキ線で配線していくように心がけている。そのためには実際に部品を並べながらできるだけジャンパー線が無いように配置を考えていく。簡単な回路だが意外と作りにくかった。以下がその完成品。
|
|
基板表 |
基板裏 |
1つ作ってみて具合がよかったので2つも作ってしまった。上の写真はその2号機だ(1号機は部品の配置が少し汚くてもう少し大きめ)。
・製作キットについて
半田付けに自信がない人は、本製作回路をキットとしてみずたま☆メイドさん.NETのシリアルポート接続PICライタのページからプリント基板や部品が一式入手できるので(接続ケーブルは別途必要)利用されるといいだろう。
ただし、基板は穴が開いていないのでピンバイス等を使って穴あけが必要だ。儲けなしで個人的に配布されているようなので、あまり無理は言わないようにしてほしい。
他にも、JDMプログラマおよびその亜種の完成品(不当に高額で販売しているところが一部あるので注意!)やキット、さらに基板配布をしているところはいくつかあるので、Googleで検索して欲しい。
最近アクセス記録から分かった情報で、最近ご無沙汰している名古屋大須の第2アメ横にある電子部品ショップの「タケイムセン」には「PIC Sirial Writer キット」が¥780で販売されているらしい。JDMプログラマに回路を追加して12Fxxxにも対応した回路が使われているらしい(ソース1、ソース2)。ソフトは「インターネットでダウンロードして」ということでIC-Progを指定しており、日本語パッチは本ページのURLが書かれているようだ。この値段は安いので、安価に製作したい人には一番のおすすめかもしれない。
・製作ミスについて
製作ミスとして一番多いと思われるのが、部品の極性やピン番号を間違っている場合である。
・トランジスタの極性チェック。E、C、Bは間違ってないか。(上図を参照)
・ダイオードの極性チェック。逆向きになっていないか。(上図を参照)
・使用しているダイオードを混同していないか。ツェナダイオードには8.2Vと5.1Vがあり、スイッチングダイオードは形状がほとんど同じなため、混同しやすいので注意。
・ICソケットのピン番号を間違っていないか。(上図を参照)
・D-SUBコネクタのピン番号を間違っていないか。(上図を参照)
■PICライターソフトの使い方
・使用するソフトについて
このPICライターのハードウェアで使用できるプログラミングソフトは、次の3種類がある。
NEC PC9801シリーズDOS用は、次のところで公開されている。
Windows 用書き込みソフト”IC-Prog”は、次のようなもの。このPCライター用の実質上の標準ソフトとも言えるものである。
Windows用書き込みソフト"IC-Prog"
|
このシリアルポート接続PICライターのハードそのままで、Win95/98/ME/NT/2000/XP上で使えるソフトがあります。”IC-Prog”という英語版のソフトです。(日本語化パッチを作成しているのでご利用ください)
IC-Progはバージョンアップしてだいぶん使いやすくなりました。ライターのハードウェアに対応しているPICの表示、ソケットのどの位置デバイスを装着するかの図、PICの詳細な情報など示されるようになりフレンドリになりました。コンフィグレーションワードは、HEXファイルに含まれているものを読み込むことができ、手動で設定することも可能です。
これからはJDMプログラマのHPで公開されているDOS版ソフトより、この IC-Prog を使用するほうが良いでしょう。
IC-Prog Prototype Programmerというノルウェイ(?)のページから、IC-Prog本体(バージョン1.05D)とヘルプファイル(ただし英語)の2つをダウンロードして、同じディレクトリに入れます。OSがWindows
NT/2000 の場合は専用ドライバもダウンロードして、IC-Prog本体と同じディレクトリに入れてください。IC-Progで
12C5xx のアセンブラ表示を行う場合は、IC-Prog.DLL (12C5xx逆アセンブラ)もダウンロードして、IC-Prog本体と同じディレクトリに入れます。.
このソフトではいろいろな公開されているPICライターのハードをサポートしていますので、起動したら最初にここで紹介しているPICライターのハードウェアに設定します。
Setting(設定) > Hardware(ハードウェア)を選んで次の設定を行います。
-
-
- ・Programmer:JDM Programmer選択
・Ports :接続しているCOMポート指定
・Interface :Direct I/O選択(処理高速)もしくは
Windows API(処理低速)の選択
- 旧IC-ProgはNT/2000/XPはWindows
APIを選択したが、
- 現バージョンはDirect
I/Oでも使用できるドライバが組み込まれている。
- ※NEC PC98では使用できない模様
-
- NT/2000/XPで、Direct I/O で使用する場合は、Setting(設定) > Options(オプション)
> Misc(各種) の中にあるEnable NT/2000/XP Driver にチェックを入れること。
- 以上の設定とOSとの関係をまとめると次のようになる。
-
|
NT/2000/XPドライバ |
処理速度 |
使用しない |
使用する |
Interface |
Direct I/O |
95/98/Me |
NT/2000/XP |
高速 |
Windows API |
ドライバ不要で、すべてのWindows 対応 |
低速 |
- ※IC-Prog を Windows XP 上で使用するためには、互換モードにして、さらにIC-Progの設定でNT/2000/XP用ドライバを有効にしておく必要があるとIC-Progのページ(http://www.ic-prog.com/main.html )ではなっているようですが、上記の表のように大丈夫のようです(バージョン1.05で対応したのか?)。万が一互換モードで動作させるには次のようにしてください。
1. ブラウザを開いて、ファイルic-prog.exeを選択
2. マウスの右ボタンを押す
3. プロパティを選ぶ
4. 互換性メニューを選ぶ
5. Windows 2000 もしくは Windows 98 / Windows
ME の互換モードにセット
6. 適用ボタンを押す
7. OKボタンを押す
IC-Prog の日本語化パッチ
英語ではわかりにくいので、IC-Prog を日本語化してみました。
以下のものをダウンロードして、IC-Progを入れているディレクトリに入れて実行させてください。日本語化した
icprog.exe が作成され、今までのものは icprog.OLD
というファイル名でバックアップされます。
IC-Prog 1.05D (2004年12月22日付け)
IC-Progの最新バージョンです。
日本語化パッチ(第2版) 30KB
日本語化パッチ(第1版) 29KB
IC-Prog 1.05C (2003年7月11日付け)
日本語化パッチ(第1版) 30KB
IC-Prog 1.05A (2002年11月9日付け)
日本語化パッチ(第1版) 30KB
IC-Prog 1.05 (2002年8月21日付け)
以前のバージョン0.9eのものより日本語化されて用語も若干見直しています。
日本語化パッチ(第2版) 30KB さらに日本語化(日本語しなくてもいい部分も??)
日本語化パッチ(第1版) 29KB
IC-Prog 0.9e (2000年8月15日付け)
既に過去のバージョンです。現在はオリジナル本体がダウンロードできませんので、ここに置いています。
日本語化パッチ 29KB
本体 344KB
※動作は十分に確認していませんので、不具合があればお知らせ下さい。
|
Window/Linux用書き込みソフト”PonyProg"は、次のようなもの。
Window/Linux用書き込みソフト"PonyProg"
|
Windows版だけでなくLinux版もある"PonyProg"です。IC-Prog
のように、JDMプログラマなど各種ライターのハードウェア、およびPIC以外にAVRなど多数のチップにも対応しています。また、各国の言語にも対応していますが、現在のところ日本語版はありません(日本語化のための言語ファイルはサイトに存在しているものの、それを元に実行ファイルが作成されていないのです)。
私の方では、十分動作確認していませんが、IC-Prog
ではうまく書き込みできない場合、この PonyProg
では成功したという例もあるようです。
詳しく以下のサイトをご覧ください。
http://www.lancos.com/prog.html
|
JDMプログラマ専用のオリジナルソフトは、AT互換機のDOS版(WindowsのDOSプロンプト)で使うプログラムである。
JDMプログラマ専用オリジナルソフト |
以下のものをダウンロードしてくる。製作したPICライターのハードウェア動作チェックにも使えるために最初は使ってみることをすすめる。PICライターのハードウェアチェックができれば、PC9801用やWindows用ソフトを使用すればよいだろう。以下JDMプログラマのオリジナルソフトについて説明していく。
12C508/508用はhttp://www.jdm.homepage.dk/newpics.htmから次の最新バージョンがダウンロードできる。
p50xv21.zip
上のプログラムでも動作すると思われるが、私が動作確認しているのはhttp://www.jdm.homepage.dk/files/に納められている旧バージョンのp50xv19.zip
もしくは p50xv20.zipである。
16C84/16F84用のプログラムは要注意。PGM84V29.ZIP〜PGM84V33.ZIP
ではうまく書き込みができないことが判明。現在の最新バージョンであるPGM84V34.ZIPでも動作しない可能性がある。http://www.jdm.homepage.dk/files/に納められている旧バージョンの中から、書き込みが確認できている次のバージョンの使用をすすめる。
pgm84v28.zip
16F84の書き込みソフトのエラーについて
Gioさんからメールをいただき、エラーが生じる原因を解明していただきました。
この書き込みソフトでは、書き込んだプログラムの部分だけでなく、全体をベリファイするようになっているそうです。そのため一度書き込んだ16F84を消去せずに使った場合、前回よりも短いプログラムを書き込むとベリファイエラーが生じてしまうというものです。
これを回避するには、ソケットにPICを差し込まない状態で読み込み、それを書き込んでおけばデータを消去した状態になるために、短いプログラムを書き込んでもベリファイエラーは生じないということです。
実際にはどのバージョンの書き込みソフトでもベリファイエラーが生じていても問題なく書き込みができるらしいので、私の方でも近日中に確認してみます。
|
さて解凍してみるとたくさん入っているが、必要なのはEXEやBATファイルで、PASという拡張子はソースなので不要だ。適当なディレクトリを作って入れておく。DOS用プログラムなのだが、Win95やWin98のDOSプロンプトで問題なく動作する。実際にはどのように動かすのか多少迷ったり、コマンドラインで使用するので少々不安だったが、VERIFYなどのチェックやエラーメッセージはちゃんと出してPICにうまく読み書きできたことを知らせてくれるようになっている。
・PICから読み込み、ファイルに落とす
*ファイル名は、PICから読み出してHEXファイルとして保存するのに使用するもの
*COMポート番号は 1 か 2 の数字
・例 READ508 test.hex 2
READ509 abcd.hex 1
PICREAD xyz1.hex 2
・読み込んだときの表示例(PICREAD 84.hex 2)
Reading PIC16C84 at COM2 to '84.hex'
・ファイルから読み込み、PICへ書き込む
*ファイル名は、PICに書き込むために使用するHEXファイル
*COMポート番号は 1 か 2 の数字
・例 PROG508 test.hex 2
PROG509 abcd.hex 1
PICPROG xyz1.hex 2
・書き込んだときの表示例(PICPROG 84.hex 2)
Reading file '84.HEX'
Programming PIC16C84 at COM2
Verify TRUE
Programming configuration word
Verify TRUE
・不幸にもうまく動作しないとき
うまく動作しないときエラーメッセージを出して止まるが、このときのメッセージをよく見ておいてほしい。多くのエラーメッセージがあるようだが、主だったものだけ紹介する。
Programmer not found
パソコンとPICライターとのやりとりがうまくできていないため、PICライターの存在が確認できない。PICライターがしっかり接続できているか確認する。PICライターがうまく製作できていない可能性があるので配線ミスや部品の取り付け間違いがないかよくチェックする。接続ケーブルがうまく接続できていないか、接続されていてもケーブル自身にも異常ないかも合わせてチェックしたほうがよい。
Comport not found
存在しないシリアルポートを指定している。実際にハードウェア上存在するはずなのにこのようなメッセージが出る場合は、Windows自体にもうまく認識されていないはず。マザーボードのBIOSの設定やWindowsの設定でうまく認識されるようにしておく。
モデムのポートを指定した場合、Modem
found というエラーメッセージが出るかもしれない。
File not found
存在しないファイルを指定している。正しいファイル名を入れてやる。
|
■普通のICソケットで簡単に抜き差しするには
今回製作したPICライターで使ったICソケットは、ゼロプレッシャーではなく、普通のソケットを使っている。抜き差しの方法は上記で簡単には説明したが、具体的に写真入りで解説する。
PICをソケットに差し込む前に、PICの足は広がっているのでソケットに合わせて狭めておく。適当に手で狭めればいい。静電気を気にする人もあるが、私のところで今までいろいろなICで壊れた経験はまったくないので神経質にならなくていい。
PICを差し込むときに、適当な線(ビニルのヒモでもなんでもいい)をソケットに潜り込ませておから行う。PICはあんまり深くまで差し込むと抜きにくいので適当に刺さっていればいい。
線をあらかじめソケットに入れて(赤い線)、PICを差し込む。書き込んでから、この線の両端を引っ張ればPICは簡単に抜ける
そして書き込み、先ほどの線の両端を手で引っ張れば簡単に抜ける。PICの足をソケットの左右同じように抜いていくのがコツで、注意しないと足が曲がってしまう。線を潜り込ませておいてもあんまり深く差し込みすぎると抜きにくく、その場合は小さなマイナスドライバーでこじて取らなければならなくなる。何回か使っているとソケットもだいぶん緩んでくるので抜きやすくはなってくるが・・・・・
■各種PICに対応するには
FENG3さんが8ピンから40ピンまでの各種PICに対応するため、JDMプログラマに工夫を施した回路を発表されています。詳しくはFENG3さんのホームページ(http://osaka.cool.ne.jp/feng3/)をご覧ください。
海外にもJDMプログラマの回路を修正して、16F873、16F874、16F877などのPICに対応させる方法が次のURLに記載されています。(掲示板で”とあるバイク乗り”さん、教えていただきありがとう)
http://www.ucapps.de/mbhp_jdm.html (説明)
http://www.ucapps.de/mbhp/mbhp_jdm_v2_sm.gif (回路図)
・ツェナダイオード8.2Vを8.7Vに変更。IC-Progの設定でI/O
Deley(遅延)を最大にすれば8.2Vのままでも使えることもある。
(16F8XXの規定の電圧にするため)
・RB3を10kΩの抵抗でプルダウン。
・ソケットを28ピンに変更し、合わせて配線。(物理的に差し込めるようにする)
以下、”とあるバイク乗り”さんにより掲示板に書き込んでいただいた内容からの抜粋です。
JDMプログラマの改造の件ですが、こちらのHPを参考にしました。
改造、といっても28pinのソケットを付けて配線しただけなんですけどね(笑)
http://www.ucapps.de/howtoprog.html
http://www.ucapps.de/mbhp/mbhp_jdm_v2_sm.gif (回路図)
キモはRB3をグラウンドに落とすことらしいです。
それとツェナーに8.2Vを使った場合、Ic-ProgのIO遅延を最大にしないとダメみたいです。
(図中では8.7Vになっています)
0000h!になる件ですが、僕も初めそうなって困っていました。
で、よく調べたらVss-Vdd、Vss-MCLR間がいずれも規定電圧(5V,13V)に全然足りてませんでした。
?と思い試しにLEDを二つとも外してみたら規定電圧が出力されました。
抵抗値が悪かったのか、LEDが良くなかったのか…
というわけで上手くいかない方はIc-Progのハードウェアテストで端子間電圧を測ってみると良いと思います。
電圧があるのに上手くいかない場合はIO遅延を最大にするのが効果があるかもしれません。
(F873の時効果があったので)
16F873の場合、Ic-ProgのLVPモード(低電圧プログラミング)のチェックBOXをオフにしないといけないようです。
JDMプログラマはLVPにバグがあるような記載が下のHPにあった気がします… |
|