PIC Writerの製作2005/08/12
USB-シリアル変換ケーブルも使える!5V単一電源「Writer509」このページ内 回路について コントロールソフト 対応デバイス ダウンロード 更新履歴・その他はじめにPICの応用として、PICプログラマーを作製してみました。現在、PICプログラマーは世の中に多く存在し、市販されているものの他にも、 ごく簡単なものから本格的なものまでさまざまです。 中でも有名なのが、JDM-Programmerというもので、 パソコンのシリアルインターフェースに接続し、電源が不要で回路も比較的簡単なため、 多くの方が作製し、いろいろなサイトで紹介されており、その改良型も多く出ています。 さらに、このプログラマーを動作させるコントロールソフトも多くあり、代表的な2種類(IC-ProgとWin-Pic) だけでもサポートするデバイスの数が多いというのも、多数の人に支持されている理由でしょう。 また、これ以外にも簡易型のプログラマーはいくつか存在し、 今更自分で設計しなくても、十分な数の選択肢があります。 ところが、これらの簡易型プログラマーに不満を持つ人も少なからずいるようです。 これらの簡易型プログラマーはその動作の安定性がパソコンのシリアル(又はパラレル) インターフェースの特性に大きく依存するのです。 ほとんどのデスクトップパソコンでは安定して動作しているようですが、 ノートパソコンのようにインターフェースの出力電圧がやや小さいものやシリアルインターフェースそのものがなくて、 USB-シリアル変換ケーブルを使わないと接続できないような場合は、安定に動作させるのが難しいようです。 そこで、次のような目標のもと、新規に作製してみました。
![]() Vss(GND)を共通として、電源のVddとVpp、ClockとDataの信号の4つを制御してやればPICに書き込むことができます。 図1(b) はJDM-Programmerなどで使われている方式で、シリアルインターフェースの 制御線をPICにつないでいます。 回路がシンプルになると同時に、書き込みに必要な波形(タイミング)はパソコンのソフトで自由にコントロールできます。 ただし、前述の通りパソコンのシリアルインターフェースの特性に左右されやすくなっています。 図1(c) は今回作製するプログラマー「Writer509」の接続です。 RS-232Cの本来のデータ線(TxDとRxD)のみ使用しています。 パソコンのシリアルインターフェースの特性に左右されにくくなっていますが、その分、 RS-232CとPIC書込みシリアル信号の変換を行ってやらなければなりません。 ハードウエアロジックでは回路が複雑になるのでPICを使うことにしました。 パソコンとのインターフェースとなるTxdとRxD、ターゲットのPICを制御するVdd、Vpp、Clock、Dataで 最低6本のポートが必要です。8ピンのPICでギリギリ間に合う計算です。 手持ちにPIC12C509A/JW(窓付き)とAKI-PICプログラマーVer3がありましたので、 これでPICのソフトウエアを開発することにしました(開発途中の様子は後述)。 後に変更したものもPIC12F509だったため「Writer509」と名付けました。 回路について回路図や部品配置図は下の図をクリックすれば、PDFファイルとして見ることができます。 PIC12F509の代わりにPIC12F629や675に置き換えることができます。(ダウンロードファイルの表を参照)
特に、プログラマー部は半田面にも部品があったり、ジャンパーも何本かあるため部品配置図だけを見て作製すると 間違いやすくなります。 ![]() 40Pinや28Pinデバイスに書き込むためにはアダプターが必要です。 左の写真をクリックすると、回路図と部品配置図がPDFファイルで見ることができます。 画像ファイルの場合はこちら いくつものICソケットやアダプタを付けずに、40Pinのゼロプレッシャーソケット1つで 8Pinから40Pinまでのデバイスを扱うこともできるでしょう。 その場合には、FENG3さんのサイトにある PICライタ5号機V2改のソケット周りの回路が 非常によくできているので参考になります。 Ver.2.01以降で対応になったPIC16F57に書き込むためには、アダプタの改造又は別途作製をしなければなりません。
![]() ![]() 新規に作製する場合は、このようにします。 一番簡単で、確実です。 PIC16F57専用です。 ![]() ![]() 初期バージョンと同時に発表した、40Pin/28Pinソケットアダプタを作製した場合は、少しの改造でPIC16F57に対応できます。 40PinデバイスとPIC16F57を使い分けるのにジャンパピン(又はスイッチ)の操作が必要になります。 操作を誤ると、デバイスを破損する可能性があります。 ![]() ![]() 別ページにある40Pinゼロプレッシャーソケットを使った回路を16F57対応に改造した回路です。 スイッチの切り替えによって、デバイスの挿入位置(Pin-1の位置)を示すLED(兼Power表示)が表示されます。 アダプタの写真と Writer509と組み合わせた様子 ※上の40PinZIFソケットの回路図において、18/14/8Pinデバイスの挿入位置が誤っていたので修正しました(2006/12/11)。 16F57対応に改造する前の回路はWriter509で動作するかどうか検証するつもりでいたら、作製して動作を確認してくれた方がいました。 (下記、「りんりんさん」の作品例を参照してください。) ![]() USB-シリアル変換ケーブルと改造したUSBケーブルで接続すると、 一本のケーブルでパソコンと接続でき、電源も取ることができます。 左の写真をクリックすると、回路図と部品配置図がPDFファイルで見ることができます。 画像ファイルの場合はこちら パソコンのUSB端子から出力される電源電圧は、場合によって5Vより低い場合もありますが、 データシート上は4.5V〜5.5Vとなっているので仮に4.8V位の出力しかなくても正常に動作するでしょう。 ■ Writer509を作製された方の作品例 ・FENG3さんのサイトでFT232BM(USB-シリアル変換IC)とTL499(DC-DCコンバータ)を乗せて作製された様子を 紹介していただいています。 USB接続(可能な)PICライタの探求(4) ・「りんりんさん」からCP2102(USB-シリアル変換IC)とMAX662A(DC-DCコンバータ)を乗せて作製された作品の様子を お送りいただいています。(pdfファイル 249kByte)
・でんし研さんのサイトでは「AVRで作るPIC Writer509」を紹介していただいています。 ■ 製作時、使用時のポイントがいくつかあります。
DC-DCコンバータ部はインダクタ(100uH)やショットキーダイオードの種類によってはうまく動作しないかもしれません。 実験用の電源や、15V程度のACアダプターがある場合は、そこから3端子レギュレータなどで5Vと13Vを作製し、 プログラマー部が正常に動作するか確認ができます。 ない場合には、DC-DCコンバータ部を先に作製し、5V入力時に13Vが出力されるか、また、 ターゲットのPICにかかる電圧確認のため、VddとVppの2つのLEDが接続されていますが、 見た目にはほとんど同時にON/OFFを行います(厳密には10μsくらいずれてる)ので、 かわりに、回路全体の電源表示となるLEDを付け忘れていたので、5Vの入力あたりにLEDを1つ付けておいた方がいいでしょう。 これは、非常に残念なことですが、回路構成がまったく異なるので仕方がありません。 コントロールソフトは後述のソフトを使用します。なるべく多くのPICをサポートするよう努力はしましたが、 検証用のデバイスの入手等の問題もあり、限界があります。 ここで使用したUSB-シリアル変換ケーブルは 秋月電子の USB・シリアル変換ケーブルを使用しました。 ドライバーソフトが正常にインストールできれば、どこの製品でも問題なく使用できるはずですが、 複数の製品の使用などでドライバーソフトが干渉する場合もあるようなので、製品の取扱説明書や、 メーカーサイト等の情報に注意して使用したほうがいいでしょう。 秋月電子のUSB-シリアル変換ケーブル(PL2303使用)は、完成品でドライバにも特に問題なく使用できています。 CP2102は、デバイスのパッケージが極端に小さいため 特に工作に自身のある人以外はデバイス単体の工作は推奨できません(りんりんさんの作品例を参照してください)。 使用に当たっては特に問題はないので、デバイス単体ではなく、モジュール化されているキットなどを薦めます。 FT232RL等のFTDIのデバイスは、ある程度の経験があれば半田付けはそれほど困難ではありません。 ただし、ドライバーをインストールした初期状態では、他のUSB-シリアルに比べて極端に読み/書き速度が遅くなる現象が発生することがあります。 オレンジ電子の掲示板より「FTDI」又は「FT232RL」等を検索して「Latency Timer」を設定するか、ハードウェアの改造によって改善することがあります。 「FTDI」のUSB-シリアル変換チップを使う場合も参考にしてください。 プログラマーに使われているPICのオシレータはINTRCOSCを使っていて、 シリアルインターフェースのタイミングもソフトウエアで行われているため、CalibrationDataを失うと通信ができません。 万一CALDATAを失ってしまった場合 作製後、Writer509とPC間の通信が正常に行われているかどうかチェックすることができるソフトがあります。 Writer509用 通信テストプログラム 新品のデバイスでも、テストデータが書き込まれているものがあるので、 ブランクチェックをしてブランクではない場合、消去してから使用してください。 なんとも矛盾するような話ですが、何らかの方法で解決しなければなりません。 周囲にPIC12F509またはPIC12F629/675に書き込みできる環境を持った知人などがいる場合は、 頼んで書き込んでもらいましょう(これが一番確実でしょう)。 なじみのパーツショップなどがある場合には、部品を買うついでにPICに書き込んでもらえないか聞いてみましょう(無理かもしれないけど)。 FENG3さんのサイトにあるRCD Programmerなどは簡単で安価に作製できるので、まずそれを作ってPICに書き込んだ後 こちらのプログラマーを作製する方法もあります。 でんし研さんのサイトにはAVRの書き込みに関するいろいろなアイデアが書かれていますが、その中で「RS-CR方式」は PICにも応用できそうなので、USB-RS232Cケーブルも使える簡単なファームウェア書き込み専用器を作ってみました。 (実際に「エレキジャック」という雑誌には、このRS-CR方式を使ったでんし研さん作製のPICライターが載っています。) コントロールソフトの使用方法![]() プログラマーが接続されているポートが自動的に検出されます(上の図はUSB-シリアル変換ケーブルをCOM3に設定して 接続した時の例です)。 現在のバージョンではCOM1からCOM10の範囲内でのみ使用できます。 (2)接続が確認できたら使用するデバイスを選択します。 読み出しや書込み時に、DEVICE-IDのあるものについてはできるだけ確認するようにしているので、 選択したデバイスと異なるデバイスにはアクセスできないようになっています。 そのため、いろいろな種類のデバイスを扱う場合に間違ったデバイスに書き込むミスを減らすことができます。 ただし、中にはPIC12F508/509,PIC16F83/84などのようにDEVICE-IDを持たないデバイスもあるので、 その場合は注意が必要です。 ![]() ポートは[COM1]から順に[COM10]までチェックされ、ポートが使用可能か、プログラマーが接続されているか調べられます。 プログラマーの接続が確認された場合は、そのポートをオープンした後、[Program Memory]タブへ表示が切り替わります。 プログラマーが接続されていなかった場合は[Option]タブのまま表示が変わらずにメッセージが表示されますので、 使用可能なポートにプログラマーを接続後、[Open]ボタンをクリックします。 手動でポートチェックを行う場合は、[Search]ボタンをクリックします。 ポート番号の色によって以下のようにポートの状態が表されます。 ・オレンジ:ポートが使用可能でWriter509の接続が確認された。 ・黒:ポートが使用可能だがWriter509の接続は確認できない。 ・グレー:他のアプリケーションで使用中か、そのポートが存在しないため使用できない。 初回起動時には必ず全てのポートをオープンして、プログラマーが接続されているか調べるため プログラマーとの通信を試みます。 万一、自動検出が他のポートに接続されている別の機器に影響する場合は、自動検出をせずに使用するポートを 固定することができます。 その場合は [ COM Port is fixed ] にチェックを入れてください。 シリアルポートから取り出せる電流は非常に小さいため、Writer509の電源をシリアルポートから取り出すことは あまり推奨できませんが、LEDや昇圧回路をできる限り省電流になるようにした回路の場合は、[RTS]や[DTR]を 電源に使用できるよう[ON/OFF]が切り替えられます。 その場合は[CTRL]にチェックを入れた後、[RTS]や[DTR]を適切に設定します。 また、電源の取り方によって制御線が変化してからプログラマーが動作するまでの待ち時間が必要な場合は 設定することができます。 その分、チェックに掛かる時間が長くなりますので、必要ない場合には[CTRL]にチェックを入れない方がいいでしょう。 HEXファイル内にデバイス名が書き込まれている場合、ファイルをロードした時に [DEVICE] を自動的に切り替える場合は、 [DEVICE] Auto Select にチェックを入れてください。 MPLABなどでプログラムの開発/デバッグ中に何度も消去/書き込みを繰り返すような場合、 Writer509のウィンドウが邪魔になることがあるでしょう。 そんな時は [SmallBox] をクリックしてウィンドウを小さくできます(「SmallBox」機能についてを参照してください)。 さらに、小さくしたウィンドウの枠も取り去ってしまうには [NoBorder] にチェックを入れます。 ![]() Ver.2.00から終了時に選択されていたデバイスを記憶するようになりました。 初回起動時はデバイスが記憶されていないので、「デバイスを選択してください。」のメッセージが出ますが、 2回目以降は前回起動時に選択されたデバイスが表示されます。 また、デバイスを選択する度にバッファーとカレントファイルがクリアされます。 バッファーは[ Buffer CLEAR ]ボタンで、カレントファイルは[ Reset ]ボタンでもクリアされます。 ファイルからロードした内容や、PICから読み出したデータなどはバッファに書き込まれ、それぞれのタブで表示されますが、 内容を確認するだけで、変更などの編集はできません。 それぞれのボタンの機能等は下記の説明を参考にしてください。 Ver2.00よりLOAD、PROG.、ERASE右のボタンによってプルダウンメニューが出てくるようになりました。 ウィンドウの縦方向のサイズが変更できるようになり、終了時にサイズと位置、デバイスを記憶します。 次回起動時に前回終了時のウィンドウのサイズと位置、選択されたデバイスが設定されます。 ![]() 従って、 ・ネットワーク経由 ・USBフラッシュメモリ ・フロッピーディスク 等から起動する場合は、実行ファイル(W509.exe)と同じフォルダにできるINIファイル(W509.ini)に書き込みができる状態で 使用してください。 ・CD-Rや書込み権限のないネットワーク経由 等から起動した場合は、終了時にメッセージが表示されます。 INIファイルに状態を保存しないで終了する場合は、[ はい ]を選択してください。 USBフラッシュメモリなどで、ファイルの属性等を「書込み可能」に変更できた場合は[ 再試行 ]を選択してください。 何もしないでWriter509のメインウィンドウに戻る場合は[ いいえ ]を選択してください。
■ [ボタン] と [メニュー] の機能 ■
MPASMなどで出力されるファイル形式です。 [ LOAD ] ボタン ファイルをロードする前には、バッファーはクリアされません。 バッファをクリアするには[Buffer Clear]ボタンをクリックしてください。 アドレスが重なってっているデータは、後からロードしたファイルのデータで上書きされますが、 重なっていないアドレスのデータは、先にロードしたファイルのデータも残ります。 例えば、ProgramMemoryエリアとEEDataMemoryエリアを別のファイルにしておくと、 1つのプログラムと複数のデータを組み合わせたり、逆に、複数のプログラムで1つのデータを 共有したりできます。 [ >BufferClear >LoadNewFile ] メニュー ファイルをロードする前に、バッファがクリアされます。 「ファイルを開く」ダイアログが開いてファイルを選択します。 一度ロードされたファイルは、カレントファイルとして記憶されます。 カレントファイルは、デバイスを選択しなおすか終了するとリセットされます。 [ >BufferClear >LoadCurrentFile ] メニュー ファイルをロードする前に、バッファがクリアされます。 既に、一度ファイルがロードされている場合は、カレントファイルとして記憶されているので、 「ファイルを開く」ダイアログが開かずに、カレントファイルが自動的にロードされます。
デバイスからバッファーにプログラムやデータを読み出します。 ProgramMemoryエリア、EEDataMemoryエリア、ConfigurationMemoryエリア、 CalibrationDataエリアなどが読み出されます。 書込みや消去の操作ではCalibrationDataは失われないような処理になっていますが、万が一のために読み出して、 どこかに記録しておいた方がいいかもしれません。
コードプロテクトのかかったデバイスを作製する場合は注意が必要です。 デバイスへの書込み時にベリファイが行われず、書込み後はコードプロテクトのためにベリファイができません。 ConfigurationWordデータのみを別のファイルに作製し、それ以外のデータが確実に書き込めたことを確認した後、 ConfigurationWordを書き込んでコードプロテクトをかけるという方法で対処してください。 [ PROG. ] ボタン デバイスへの書込み処理以外は行われません。 書込みの前の「消去」「ブランクの確認」書込み後の「ベリファイ」などは一切行われないので、 必要に応じて別途行ってください。 また、一度書込み済みのデバイスでも、空きエリアに書き込むことができます。 書込み速度は、デバイスの種類にはあまり関係なく1kワード書き込むのに約15秒。2kWで約30秒、 4kワードで約1分、8kワードで約2分でしょう。データがH'3FFF'の場合は書込みをスキップしますので、 多少、早くなりますが比例はしません。 [ >Program >Verify ] メニュー デバイスへの書込み後、ベリファイを行い書き込まれた内容をバッファと比較します。 [ >Erase >BlankCheck >Program >Verify ] メニュー デバイスを消去してブランクチェックした後、バッファの内容をデバイスに書き込みます。 その後、書き込まれた内容とバッファの内容が比較されます。 [ >BufferClear >Load >Program >Verify ] メニュー ファイルをロードした後、デバイスに書き込みます。 ファイルをロードする前に、バッファがクリアされます。 ロードされるファイルはカレントファイルになるので、「ファイルを開く」ダイアログは開きません。 その後、書き込まれた内容とバッファの内容が比較されます。 [ >BufferClear >Load >Erase >BlankCheck >Program >Verify ] メニュー ファイルをロードした後、デバイスを消去して、その後デバイスに書き込みます。 ファイルをロードする前に、バッファがクリアされます。 ロードされるファイルはカレントファイルになるので、「ファイルを開く」ダイアログは開きません。 デバイスを消去してブランクチェックを行った後、デバイスに書込みを行います。 その後、書き込まれた内容とバッファの内容が比較されます。
[ ERASE ] ボタン 消去後のブランクチェックは行われません。 コードプロテクトのかかったデバイスでも、デバイス全体を消去します。 消去前にCalibrationDataをバックアップして、消去後にリストアします。 [Option]タブで「CALIBデータを変更する」にチェックを入れると、CalibrationDataを書き換えることができます。 通常は使用しません。何らかのトラブルでCalibrationDataを失った場合の操作です。 入力欄は16進4桁分ありますが、有効なビットはデバイスによって異なります。DataSheetなどで確認してください。 これは[ERASE]時のみ有効で、[PROG.]やその他の操作では変更されません。 [ >Erase >BlankCheck ] メニュー デバイスを消去した後に、ブランクチェックを行います。
ProgramMemoryエリア、EEDataMemoryエリア、ConfigurationMemoryエリアがブランクかどうかチェックします。 ProgramMemoryエリア内にCalibrationDataをもっているデバイスの場合、そのアドレスはチェックされません。 ブランクでない場合エラーメッセージが表示されます。
デバイスに書込みを行った後で、正常に書込みが行われたかどうか確認ができます。 一致しない部分がある場合は、エラーメッセージが表示されます。 ProgramMemoryエリア、EEDataMemoryエリア、ConfigurationMemoryエリア、CalibrationDataエリアなどが比較されます。 コードプロテクトのかかったデバイスはチェックできません。
対応デバイス(サポート予定も含む)
プログラムのダウンロードファイル名をクリックしてダウンロードしてください
(または、ファイル名を右クリックして「対象をファイルに保存(A)...」)。
その後解凍して使用してください。
HEXファイル、ZIPファイル、EXEファイルなどのファイル名にある[Writer 509]や[W509]と、
実行時に[Version]で表示されるそれらが矛盾しているためわかりにくくなっています。 今から変更すると混乱するかもしれないので、ファイル名やバージョン表示は当面このままにします。 ファイルの拡張子やバージョン番号などで、パソコン側のファイル(又はバージョン名)なのか、 プログラマー側のファイル(又はバージョン名)なのか判断するようにしてください。
こっそり未検証+αのページ (DC-DCコンバータ回路に関するヒント、 キャリブレーションデータを失ってしまった時、 開発時の様子、 Writer509とPC間の通信テスト、 隠しコマンドじゃないけれど…) 履歴・その他2005/08/15 書込みにかかるおよその時間を追記。 PIC16F88の書込み確認。 PC側ソフトにPIC16F627/628(A無)のデータ追加(未検証)。 PC側ソフトにPIC16F873/874/876/877(A無)のデータ追加(未検証)。 2005/08/15 DC-DCコンバータ部に関しては別の回路を公開する予定があります。 PIC16F873A/874A/876A/877AでConfigurationWordに書き込めないバグがあります。 40Pinや28Pinデバイスに書き込むためのアダプターの回路図などを追加。 2005/08/16 PIC16F877(A無)の書込みを確認。 PIC16F877Aの書込みを確認。 PIC16F873A/874A/876A/877AでConfigurationWordに書き込めないバグを修正しました。 USBから電源を取るためのケーブルの改造方法などを追記。 2005/08/17 プログラマー側のPICに12F629/675を使用する場合のプログラムを追加しました。 回路に一部追加した部分があります。 2005/08/21 CalibrationDataを変更することができるようになりました。 (パソコン側のプログラムバージョン1.30) 2005/08/26 PC側ソフトにPIC16F913/914/916/917のデータを追加(未検証)。 一部デバイスのEEData書き込みパルス時間を見直しました(前バージョンでも問題は出ていない)。 (パソコン側のプログラムバージョン1.31) 2005/09/18 Windows98SEで動作に不具合があったので修正しました。 Windows2000/XPでは特に問題が無いが、Windows9xではシリアルポートの制御に問題がありました。 (パソコン側のプログラムバージョン1.32) 2005/09/20 PC側ソフトにPIC16F630、PIC16F676のデータを追加。 PIC16F676は書込みを確認。 PIC16F630は未検証 (パソコン側のプログラムバージョン1.33) 2005/09/20 PIC16F627A/628A/648Aの消去時に。UserID(H'2000'〜H'2003')が消去できない不具合があったので 修正しました。 (パソコン側のプログラムバージョン1.34) 2005/09/28 プログラマー側のPICプログラム(ファームウェア)Writer675I を公開しました。 これまでのものと同様デバイスやインターフェースの違いだけで、追加された機能などはありません。 ファームウェアのバージョンはWriter509とWriter509IがVer1.20でWriter675とWriter675IがVer1.21です。 バージョンの違いは、単に使用するデバイスの違いのみです。 2005/10/20 使用上の重要な注意がありますので、よく読んでご使用ください。 (コントロールソフトの使用方法の中にあります。) 2005/10/24 Windows2000において、メッセージ欄の背景色がおかしくなる不具合を修正しました。 マウスホイール多用時の誤操作を軽減するように修正しました。 PIC16F83/84を追加しました。 [Buffer CLEAR]ボタンを追加しました。 (パソコン側のプログラムバージョン1.35) 2005/10/27 PIC16F84、PIC16F876、PIC16F873Aの書込みが確認されました。 2005/10/30 「書込み」や「読み出し時」の様に時間のかかる処理中に、Windowsからのメッセージを処理できずに 「処理経過表示バー」など表示が止まってしまう不具合を修正しました。 プログラムの二重起動を防止する処理を追加しました。 PIC12F508/509などでキャリブレーションデータを読み出した際、最下位ビットをマスクして処理していたものを マスクしないように変更しました。 (パソコン側のプログラムバージョン1.36) 2005/11/12 Configuration MemoryタブのConfig1,2とCAL1,2のデータのうち未実装ビットは一律'0'にマスクして 表示していたものを、データシートやデバイスからの読み出しデータに即した表示方法に変更しました。 変更内容はここ(pdfファイル39kByte)を参照してください (パソコン側のプログラムバージョン1.37) 2005/12/10 ウィンドウの縦方向のサイズを変更できるようになりました。 終了時にウィンドウのサイズ、ウィンドウの位置、選択したデバイスをINIファイルに記憶し、 次回起動時に復元します。 [LOAD]、[PROG.]、[ERASE]ボタンにサブメニューを追加しました。 (パソコン側のプログラムバージョン2.00) 2005/12/25 PIC12F508において、USER-IDのアドレスを12F509と同じ0x400〜0x403で処理していたものを、 0x200〜0x203に修正しました。 PIC12F683やPIC16F91Xなどのように、アドレスが0x2008以降にOSC CalibrationやBOD Calibrationなどの 工場出荷時の値が書き込まれているデバイスで、「CALIBデータを変更する」にチェックを入れると 消去されずに上書きのみされていたのを修正しました。 [ SAVE ]によってセーブされるHEXファイルにおいて、チェックサムがちょうど「00」になるような行の場合、 「100」が出力されてしまうものを修正しました。 対応デバイスに、PIC12F635、PIC16F57を追加しました。 (パソコン側のプログラムバージョン2.01) 2005/12/29 対応デバイスに、PIC16F684、PIC16F688を追加しました。 起動時にポートを自動検出しないオプションを追加しました。 「カレントファイル」のリセットボタンを追加しました。 (パソコン側のプログラムバージョン2.02) 2006/01/01 「Small Box」機能を追加しました。 (パソコン側のプログラムバージョン2.10) 2006/04/01 PIC用アセンブラ「Pa.exe」によって出力されたHEXファイルをロードすると [Access violation エラー] が 発生して、以降正常に動作しなくなる不具合があります。 これに対応するため、「Pa.exe」やそれ以外のコンパイラの出力するHEXファイルについて調査しています。 2006/04/07 上記の [Access violation エラー] が発生する不具合を修正しました。 「Pa.exe」の出力する EEPROM DataMemory の初期値データに対応しました。 「Pa.exe」の出力する Config データに対応しました(一部除く)。 「Pa.exe」の出力する デバイス名 による [DEVICE] の自動切換えに対応しました。 「CCS-C」の出力する デバイス名 による [DEVICE] の自動切換えに対応しました。 「Small Box」機能の[枠有り/無し]をINIFILEを編集しなくても切り替えられるようにしました。 (パソコン側のプログラムバージョン2.20) 2006/04/15 HEXファイル内にレコードタイプ'04'(拡張リニアアドレスレコード)が含まれている場合で、複数のファイルを 重ねて読み込みを行った場合、アドレス'0000'が上書きされてしまうことがある不具合を修正しました。 対応デバイスに、PIC10F200、PIC10F202、PIC10F204、PIC10F206を追加しました。 (パソコン側のプログラムバージョン2.21) 2006/12/11 HEXファイルの解析/読み込み処理に不具合があり、修正を忘れていました。 HEXファイル内に「空行」があった場合、上記のような [Access violation エラー] が発生して、 以降操作不能になる不具合を修正しました。 ただし、HEXファイルについては原則としてMPASM(MPLAB)等のツールから出力された物が入力されることを 期待していますので、エディタなどで編集したり、WEBページなどからコピペしたものなどを読み込んだ場合、 対象となるPICデバイスにそぐわない内容の場合は、不具合がでることもありますのでご注意ください。 対応デバイスに、PIC16F73/74/76/77を追加しました。 (パソコン側のプログラムバージョン2.23) 2006/12/28 INIファイルに書き込みができない状態で使用すると、エラーが出て終了できない状態になる不具合を 修正しました。 修正後は、INIファイルに書き込めない状態で使用した場合、終了時に「INIファイルに状態を保存しないで終了する」 か「元に戻る」かなどを選択するダイアログが出るようになりました。 書込み処理を見直して、一部分で高速化しました。 書き込みデータがない部分(又は0x3FFFの部分)のスキップ処理を見直しましたので、メモリ容量の大きな デバイスに(テストプログラムなど)少量のプログラムを書き込んだ場合、今までより書込み時間が短縮されます。 (プログラムサイズが大きく、スキップする部分が少ない場合は高速化していません。) (パソコン側のプログラムバージョン2.24) 2007/01/08 高速化第2弾の改良を行いました。 デバイスの持つ「複数ワード書込み」に対応しました。 Writer509が対応しているデバイスのうち、「複数ワード書込み」のモードを持っているデバイスは次のとおりです。 ・PIC12F635/683 ・PIC16F57 ・PIC16F684/688 ・PIC16F73/74/76/77 ・PIC16F818/819 ・PIC16F87/88 ・PIC16F873A/874A/876A/877A ・PIC16F913/914/916/917 一通り書込みテストは行っていますが、万が一不具合のある場合は古いバージョンも使用できるように、 Ver.2.23とVer.2.24もダウンロードできるようになっています。 (パソコン側のプログラムバージョン2.25) 2007/01/21 高速化第3弾を行ってみました。 ベータ・バージョンなので注意が必要です。 プロトコルを追加しているのでファームウェアの変更も必要です。 (パソコン側のプログラムバージョン2.30、プログラマー側のプログラムバージョン1.23) 2007/01/31 ベータ・バージョンの修正版を公開しました。 [ ダウンロード ]の[ ベータ・バージョン ]のところを参照してください。 バージョン番号は変更していません。 現在、複数のバージョンのWindowsソフトを公開しています。 ウィンドウタイトルを表示するところにバージョン番号を表示するように機能追加しました。 2007/03/03 ベータバージョンを正式公開版としました。 β-3のファームウェアはVer.1.23a、β-3のWindowsソフトはVer.2.30として公開してあります。 Windowsソフトの起動時や手動で、全ポートの状態をチェックして表示する機能を追加しまた。 (パソコン側のプログラムバージョン2.31) 最新版のプロトコルを公開しました。 このファイルには今後実装予定のPIC18用プロトコルも記載してあります。 ソースファイルとその他の資料は古いままですが、整理でき次第順次公開していきます。 2007/03/17 PIC18F対応の暫定版を公開しました。 [ ダウンロード ]の[ ベータ・バージョン ]のところを参照してください。 (パソコン側のプログラムバージョン2.50、プログラマー側のプログラムバージョン1.24) 2007/03/18 PIC18F対応の暫定版の不具合を修正しました。 [ ダウンロード ]の[ ベータ・バージョン ]のところを参照してください。 (パソコン側のプログラムバージョン2.51) 2007/05/05 PIC18F対応の暫定版の不具合を修正しました。 [ ダウンロード ]の[ ベータ・バージョン ]のところを参照してください。 (パソコン側のプログラムバージョン2.52) 2007/06/08 PIC18F対応の暫定版の不具合を修正しました。 [ ダウンロード ]の[ ベータ・バージョン ]のところを参照してください。 (パソコン側のプログラムバージョン2.53) 2007/06/23 PIC18F対応の暫定版を正式版として公開しました。 内容およびバージョン番号は暫定版(ベータ・バージョン)のまま変更ありません。 対応デバイス表にPIC18Fシリーズを追加しました。 ソースファイルについても最新版を公開しました。 2007/07/21 対応デバイスに、PIC16F72を追加しました。 アイコンを作り直してみました。 (パソコン側のプログラムバージョン2.54) Writer509に関する不具合や更新状況は掲示板に最新の情報がある場合があります。 今後の予定: PIC18FシリーズはPIC16Fに比べて書込みシーケンスが複雑だったで、 ファームウェアのメモリ容量をほとんど使い切りました。 --->大幅な変更を伴う機能追加や修正はできないこともあります。 PICを使った工作など… 謝辞: Writer509を作るにあたって本家JDM-Programmerを初めとして、 JDM-Programmerの改良型を作製された方のサイトを 大変参考にさせていただきました。 特に、何種類ものJDM-ProgrammerやRCDライターを作製された FENG3さんのサイトは大変参考になりました。 2ちゃんねる「電気・電子板」の「【お手軽】PIC専用のスレPart5【マイコン】」スレッドで多くの方に意見をいただきました。(´∀`) オレンジ電子の掲示板で"りんりんさん"をはじめ、 いろいろな方に改良のためのアイデアをいただきました。 注意: このページに書いてある内容は十分確認されていますが、
万一ハードウエアを作製し、上記ソフトウエアを実行した場合に、 デバイスや使用しているパソコン等に不具合を生じた場合でも補償はできません。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|