cheap-pic-programmer の変更点

AVRライタのページは[[%%%ここ(シリアル接続)%%%>avr-writer]]と[[%%%ここ(USB接続)%%%>hidaspx]]
(このページで取り扱っている)[[&color(Blue){&size(14){RCDライタのユニバーサル基板版};};>rcd-writer]]なら[[&size(18){&color(Blue){%%%''ここ''%%%};};>rcd-writer]]←冒頭に今一番お薦めのPICerFTへのリンクがあります。
(このページで取り扱っている)[[&color(Blue){&size(14){RCDライタのユニバーサル基板版};};>rcd-writer]]なら[[&size(18){&color(Blue){%%%''ここ''%%%};};>rcd-writer]]←冒頭に今一番お薦めのPICライタ、PICerFTへのリンクがあります。
----
TITLE: 僅か一、二度ファームウェアを書き換えたいだけなのに、わざわざ四、五千円するPICライタを買いたくないという人の為にお薦めしたい、ブレッドボード上に作る格安PICライタ
RIGHT:初出 2011-12-3
RIGHT:最終更新 2012-2-5
LEFT:
本ページ設置の基本的な趣旨は、PICライタがないとファームウェアの書き換え(Hexファイルの書き込み)がおこなえないタイプの(普通の)マイコン、PIC18F2420のファームウェア(プログラム)の書き換えを、相当程度安く、相当程度簡単におこなう方法を紹介することです。殆どの内容は8ビットPIC全般あるいはPIC18Fシリーズ全般に通用しますが、一点だけPIC18F2420に特化した内容があります。
#br
''必要な環境''
残念ながら(安い代わりに)少し環境を選びます。写真を見れば一目瞭然ですが、RS232C(シリアル)ポートがついたパソコンが必要です。シリアルポートのないパソコンにUSBシリアル変換ケーブルを接続して使用することは(絶対に出来ないというわけではないですが)基本的に出来ないと考えて下さい。またOSはMacやLinuxでは駄目で95以降の何らかのWindowsが必要です。
#br
[[&ref(cheap-pic-programmer_1_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=cheap-pic-programmer_1_b.jpg&refer=cheap-pic-programmer]]
&size(7){クリックすると大きな画像で表示されます。}; 説明付きの図は[[%%%''こちら''%%%:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=cheap-pic-programmer_2_b.jpg&refer=cheap-pic-programmer]]です。
#br
#contents
#br
* ハード側の製作 [#a4797c75]
** RCDライタ [#ga97c38e]
ここで紹介するPICライタはほぼ「[[%%%RCDライタ%%%:http://feng3.nobody.jp/rcd/]]」という種類のライタそのものです。ただ[[RCDライタ:http://feng3.nobody.jp/rcd/]]に関する殆どの情報はPIC12Fシリーズ、PIC16Fシリーズに関するもので、PIC18Fシリーズについてのものは非常に少ないので、ここにページを設ける必要があると感じた次第です。
#br
RCDライタはシリアルポートのピンのうち、合計5ピンを使用します。上でUSBシリアル変換ケーブルを接続して使用することは基本的に出来ないと書いた理由はここにあります。シリアルポートの2,3,5ピンだけを使用するタイプのライタなら基本的にどんな種類のUSBシリアル変換ケーブルででも利用できます。
#br
&color(Blue){RCDライタ(ていうかJDMライタ)にはdsPICに書き込みが出来るという特徴もあります(私自身は未確認)。};
&color(Green){(2014-1-27追記)[[&color(Green){''ユニバーサル基板上にメッキ線のみで配線したRCDライタ(別ページ)''};>rcd-writer]]を作りました。};

** 部品以外に必要なもの [#bb644a80]
簡単だと期待させて申し訳ありませんが、部品以外に必要なものは半田ごてと半田です。ブレッドボードを使うので殆ど半田付けは必要ないのですが、D-SUB 9ピンメスコネクタと(ブレッドボード用の)ジャンプワイヤーをつなぐ為にはどうしても(多分ほぼ絶対に)半田づけが必要です。多少細かい作業ですが100円ショップ・ダイソーの420円の半田こてでもなんとかなると思います。コネクタの9ピンのうちの5つのピンとジャンプワイヤーとを半田づけする必要があります。
#br
''※本ページの作例ではD-SUB 9ピンコネクタとブレッドボードとをつなぐのに普通のリード線を用いていて、そのブレッドボードと接続するところでピンヘッダを間に挟んでそこに半田付けしていますが、ここにジャンプワイヤーを用いればブレッドボード側については半田づけは不要ですし、ワイヤーストリッパーも不要です。''
&color(Blue){(2012-2-5追記)この部分について、もっと便利なものがありました。''秋月の'' [[&color(Blue){''%%%DSUBコネクタDIP化キット(メス)%%%''};:http://akizukidenshi.com/catalog/g/gK-05406/]] です。残念ながらキットなのでやはり半田づけは必要ですが、かなり作業が簡単になるのは間違いありません。これを使う場合は以下の部品表や部品配置の説明等も適宜読み替えて下さい。};
#br
あともちろんシリアル(RS232C)ケーブルが必要です。(一般的な)ストレートケーブルが必要です。(電子工作ファンの常識だと思いますが)ネジの規格はミリでもインチのどちらでも構いません。秋月のケーブルはパソコンショップで売っているものと規格が違っていてパソコン用途ではねじが閉まらないんですが、安いのでみんな昔から気にせず買っています。

** 部品表 [#tca8b3d9]
基本的には[[%%%RCDライタのバージョン 2.5%%%:http://feng3.nobody.jp/rcd/#v25sch]]に準拠して作成しています。※印は本ページ独自の部分です
|CENTER:部品名|CENTER:備考|CENTER:数量|CENTER:大凡の合計価格|h
|カーボン抵抗 220Ω||CENTER:1||
|カーボン抵抗 1kΩ||3(R2の予備も含めて) ※||
|カーボン抵抗 2.2kΩ ※|[[%%%バージョン2.5回路図%%%:http://feng3.nobody.jp/rcd/#v25sch]]の1kΩから変更|CENTER:1||
|カーボン抵抗 10k||CENTER:1||
|ツェナーダイオード 5.1V 1/2W||CENTER:1||
|ツェナーダイオード 13V 1/2W||CENTER:1||
|小信号シリコンダイオード|小信号ダイオードとか小信号高速スイッチングダイオードとか呼び方様々&br;型番は1N4148とか1S2076Aとか何でもよし ※|CENTER:5||
|積層セラミックコンデンサ 0.1μF|積層でないタイプのセラミックコンデンサとかポリエステルコンデンサでも可 ※|CENTER:1||
|電解コンデンサ 470μF 16V||CENTER:1||
|可変抵抗(VR) 10kΩ||CENTER:1||
|D-SUB 9ピン(RS232C)・メス・コネクタ|基板用ではない(安い)タイプ|CENTER:1||
|赤色LED||CENTER:1||
|ブレッドボード ※|ある程度の大きさが必要|CENTER:1||
|ブレッドボード用ジャンプワイヤーセット ※|ブレッドボード購入時に付属している場合は不要です|CENTER:1||
|(R2の予備)カーボン抵抗 1.5kΩ ※||CENTER:1||
作例のブレッドボードは[[%%%これ%%%:http://akizukidenshi.com/catalog/g/gP-00285/]]です。必要な分のジャンプワイヤーもセットになっていてお得なセットです。上で説明したように(作例とは異なり)D-SUB 9ピンコネクタとブレッドボードとの接続にもジャンプワイヤーと用いたとしても、ジャンプワイヤーは大幅に余ります。
これら部品の合計価格は送料を除いて(お得なブレッドボードを選べば)1500円程度に収まると思います。特殊な部品はありませんので通信販売に頼らなくても地元の電子部品屋で全て揃うと思います。

** 部品配置の説明付きの写真(主にこちらを頼りにして組んで下さい)。回路図は[[%%%''こちら''%%%:http://feng3.nobody.jp/rcd/#v25sch]]です。 [#oa038429]
[[&ref(cheap-pic-programmer_2_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=cheap-pic-programmer_2_b.jpg&refer=cheap-pic-programmer]]
&size(7){クリックすると大きな画像で表示されます};
-写真の出来が悪くてすみません。下の写真でもまだわずかに確認しずらいので文字にしておきますが、D5は電解コンデンサの負極側(白いラインのある側の極)につながっています。つまり茶色のジャンプワイヤーと同じラインに差し込まれています。
-[[%%%ここ%%%>#bb644a80]]で既に触れましたが、この作例ではD-SUB 9ピン(RS232C)メスコネクタ側からは普通のリード線を伸ばしてきていて、その線とブレッドボードの接続箇所は、中間にピンヘッダを挟んでそこに半田づけする形式をとっています(未使用ピンも含んだ9ピン全て揃っていて番号が確認しやすいという長所があります)。しかしリード線の代わりにブレッドボード用の''ジャンプワイヤーを使えばこの部分での半田づけを省略することができます''。半田づけはD-SUB 9ピンコネクタとジャンプワイヤーとの接続に関しておこなうだけで済むことになります。
-見てのとおり、D-SUB 9ピンコネクタの9ピンのうち、3,4,5,7,8ピンの計5ピンとだけ接続すれば済みます。
-''PIC18F2420を対象とする場合は、R2の抵抗値を2.2kΩあたりへと変更する必要があります。''ただし、ここは環境(パソコンのシリアル(RS232C)ポートの細かな仕様、PICの型番・リビジョン)に依存する部分ですから、あなたの環境では2.2kΩは不適切である可能性があります。''場合によっては2.2kΩの代わりに1.5kΩや1kΩが試せるように部品表には予備を追加しています。''
-もちろんICSPも可能な筈ですが、ICSPケーブルを作るのも面倒ですから、ここではマイコン単体に書きこむ手法を紹介しています。
-PIC18F452にも書き込みを試みてみました。PIC18F452の場合はR2の値が1kΩ, 1.5kΩ, 2.2kΩのいずれの場合でも正常に完了しました。
-またPIC18F2420, PIC18F452ともにR1の値が1kΩ, 1.5kΩのいずれの場合でも正常に完了しました。つまり、ここまでバージョン2.5準拠(R2の抵抗値を除けばバージョン2.5と同じ)で作成すると書いてきましたが、バージョン2.3準拠(R2の抵抗値を除けばバージョン2.3と同じ)で作成しても構わないということになります。
-VR(可変抵抗)は私がPIC18F2420とPIC18F452で試した限りは0~10kΩのほぼどんな値に設定しても正常に書き込みが完了しました。ただし環境によっては可変抵抗ならではの調整能力が必要な場合もあるのでしょう。

#br
[[&ref(cheap-pic-programmer_3_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=cheap-pic-programmer_3_b.jpg&refer=cheap-pic-programmer]]
&size(7){クリックすると大きな画像で表示されます};
上の説明付きの写真では確認しずらいところをこちらで確認して下さい。

** (もちろん)PIC12Fシリーズ、PIC16Fシリーズに対しても使用できます [#xfe11961]
たとえばPIC12F683に書きこむときは↑上の写真の状態まで組んだ上にさらにこの写真のように5本のジャンプワイヤーを加えます。
[[&ref(cheap-pic-programmer_6_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=cheap-pic-programmer_6_b.jpg&refer=cheap-pic-programmer]]
&size(7){クリックすると大きな画像で表示されます};
上で記したように本ページの作例ではPIC18F2420に合わせてR2の抵抗値をカスタマイズしていますが、私が確認した限りでは、R2の抵抗値がカスタマイズしたままの2.2kΩの状態で(1kΩや1.5kΩに戻さなくても)、PIC12F683に対して正常に書き込みがおこなえました。ただし、万が一あなたの環境で正常に書き込みがおこなえない場合は、R2を予備に用意した(筈の)1kΩや1.5kΩに差し替えて再度試してみて下さい。

* ソフトウェア側 [#e5c0e31e]
** 必要なソフト(必要なのは書き込みソフトとデバイス定義ファイル) [#f020a773]
使用する書き込みソフトは[[%%%''WinPic日本語版''%%%:http://feng3.nobody.jp/winpic/]]です。無料です。私が書き込み確認をおこなった際のリビジョンは「''WinPic日本語版(2006年11月15日にコンパイル)''」です。
#br
解凍してインストーラーを起動すればインストール自体はすぐに済むと思います。&size(18){''ただし''};たとえばPIC18F2420に書き込みをおこなう為には、[[''Microchip社'':http://www.microchip.com/]]から「''PIC18F2420.dev''」という「''デバイス名.dev''」形式のファイル名を持つ「''デバイス定義ファイル''」を取得して、書き込みソフトが読み込める、所定のフォルダ内に置いておかなければなりません。
#br
書きこみソフトが各種マイコン(デバイス)に対して正しく書き込みをおこなう為には、書き込みソフト側が各種マイコン(デバイス)毎の詳細な情報を掴んでいる必要があるからです。
#br
「''PIC18F2420.dev''」やその他の種類のマイコンの「''デバイス定義ファイル''」は[[Microchip社:http://www.microchip.com/]]から「''MPLAB IDE''」という無料のソフトをダウンロードしてインストールすれば、インストールされたファイル群の中に含まれるという形で取得することができます。
#br
「''デバイス定義ファイル''」は小さなテキストファイルなので、わざわざ[[Microchip社:http://www.microchip.com/]]から取得して頂くんじゃなくて、私が持っているものを本ページに直接掲載したいところなのですが、[[Microchip社:http://www.microchip.com/]]の著作物なので一応著作権上掲載できません。
#br
[[''Microchip社'':http://www.microchip.com/]]のトップページから「''Development Tools''」をクリックすれば「''MPLAB IDE''」が見つかる筈です。
#br
MPLAB IDEをインストールすれば、「PIC18F2420.dev」を含め、Microchip社の多くの種類のマイコン用の「デバイス定義ファイル」が同時にインストールされます。
#br
ところで、せっかく「''MPLAB IDE''」をインストールしたのなら、ついでに「''MPLAB C Compiler for PIC18 MCU''」等もインストールすることをお薦めします。同じく[[Microchip社:http://www.microchip.com/]]からダウンロードできます。実質的には無料ソフトです。''MPLAB C Compiler for PIC18 MCU''」もインストールし終わると、[[%%%こちら%%%:http://a-desk.jp/modules/forum_car/index.php?cat_id=2]]とか[[%%%こちら%%%>digital-speed-meter]]に掲載されているC言語のソースを自分でコンパイルしたり自分の好みに合わせた改造をおこなうことが可能になります。
#br
「MPLAB IDE」と「MPLAB C Compiler for PIC18 MCU」のインストールを丁寧に説明したページがあります。→[[%%%''こちら''%%%:http://a-desk.jp/modules/forum_pic/index.php?cat_id=4]]

** WinPic日本語版の設定 [#iad1a606]
なんか「Windows2000ぽいな」というのは無視して下さい。
&ref(cheap-pic-programmer_4_b.png,nolink);
当然対象デバイスの種類を指定します。
#br
&ref(cheap-pic-programmer_5_b.png,nolink);
ここに、先にイントールした(筈の)MPLAB IDEのフォルダの中の「Device」フォルダの場所を指定して下さい。標準では「C:\Program Files\Microchip\MPLAB IDE\Device」あたりだと思います。わからなければ「*.dev」で検索してみて下さい。あと、ここは空欄のままにして代わりにWinPic日本語版がインストールされたフォルダの「devices」フォルダにたとえば「PIC18F2420.dev」などの「デバイス定義ファイル」を個別にコピーして置いておくことでも代替できますので、「デバイス定義ファイル」を他のパソコンから持ってこられるような場合等にはこちらの手法を選択すればいいでしょう。
#br
あとはデフォルトの設定のままです。

** 書き込み作業 [#l484176f]
書き込み作業についての説明は特に要らないでしょう。用意したHexファイルを読み込んでから書きこむだけです。
#br
もしあなたの環境で正常に完了しなかった場合は(照合でエラーが発生した等)、R2の抵抗値を変更すれば正常に完了するようになる可能性があります。予備の抵抗で試してみればいいでしょう。
#br
* ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#x095389a]
#areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)])
#comment
#areaedit(end)