PIC Writerの製作

2005/08/12

USB-シリアル変換ケーブルも使える!

5V単一電源「Writer509」


 このページ内  回路について コントロールソフト 対応デバイス ダウンロード 更新履歴・その他

はじめに

 PICの応用として、PICプログラマーを作製してみました。

 現在、PICプログラマーは世の中に多く存在し、市販されているものの他にも、 ごく簡単なものから本格的なものまでさまざまです。
 中でも有名なのが、JDM-Programmerというもので、 パソコンのシリアルインターフェースに接続し、電源が不要で回路も比較的簡単なため、 多くの方が作製し、いろいろなサイトで紹介されており、その改良型も多く出ています。
 さらに、このプログラマーを動作させるコントロールソフトも多くあり、代表的な2種類(IC-ProgとWin-Pic) だけでもサポートするデバイスの数が多いというのも、多数の人に支持されている理由でしょう。

 また、これ以外にも簡易型のプログラマーはいくつか存在し、 今更自分で設計しなくても、十分な数の選択肢があります。

 ところが、これらの簡易型プログラマーに不満を持つ人も少なからずいるようです。
 これらの簡易型プログラマーはその動作の安定性がパソコンのシリアル(又はパラレル) インターフェースの特性に大きく依存するのです。
 ほとんどのデスクトップパソコンでは安定して動作しているようですが、 ノートパソコンのようにインターフェースの出力電圧がやや小さいものやシリアルインターフェースそのものがなくて、 USB-シリアル変換ケーブルを使わないと接続できないような場合は、安定に動作させるのが難しいようです。

 そこで、次のような目標のもと、新規に作製してみました。

  • できるだけシンプルな回路であること。
  • ノートパソコンのシリアルコネクタやUSB-シリアル変換ケーブルでも確実に動作すること。
  • 電源はパソコン(USB)から供給できる、または5Vのみで動作できるようにすること。
プログラマーの構成
 図1(a) はPICにプログラムやデータを書き込むために必要な電源や信号を表しています。
 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」と名付けました。


回路について

  [回路作製の前に]

  ここに書かれている回路は、
   ・デバイスのソケット
   ・昇圧回路
   ・PCとの接続
  など、作製する人が環境に合わせてアレンジできるよう多くの情報を載せています。
  そのことがかえって見づらくなっていると思います。
  また、補足事項なども離れた場所に書かれている場合があります。
  作製する場合は、全体を一通り読んだ上で完成後のイメージを作製した後で製作に入った方がうまくいくでしょう。
  [Writer509におけるVpp電圧の考え方]

  Microchip社のサイトにあるデータシートやプログラミング仕様にはデバイスごとに微妙に異なるVpp電圧がかかれています。
  従って、本来ならばWriter509もデバイスごとにVpp電圧を切り替えるべきでしょう。
  しかし、Writer509はアマチュア用途として開発したことや、よりシンプルな回路の追及、他の簡易型のプログラマーの状況などを考慮して、Vpp電圧は固定としています。
   一部のデバイスのVpp電圧をデータシートから拾ってみた結果が左のグラフです。

 グラフ中の D.S.Max. はDataSheet の Absolute Maximum Ratings (絶対最大定格)です。
 これより上のエリアはレッドゾーンで越えてはならない電圧値です。

 P.S.Max. は ProgrammingSpecification の Vpp の上限値です。
 P.S.Min. は ProgrammingSpecification の Vpp の下限値です。
 この間のエリアがセーフティーゾーンで、正常に書込みが行える保証値です。

 D.S.Max. と P.S.Max. の間はグレーゾーンです。
 P.S.Min. の下のエリアとあわせて、この値では正常な書込みは保証されません。

 セーフティーゾーンが一番狭いのは、16F72/73/74/76/77で13V±0.25Vとかなり厳しい値です。
 次いで10F200-206、12F508/509、16F54/57あたりの13V±0.5Vが狭くなっています。
 他のデバイスは比較的範囲が広く余裕があるのがわかります。

 仮に13V固定にした場合、全てのデバイスで下限値(P.S.Min.)はクリアしていますが、一部のデバイスでは絶対最大定格(D.S.Max.)は越えていないもののグレーゾーンに入っていてあまり余裕がありません。

 12V固定にした場合、グレーゾーンには入りませんが一部のデバイスで下限値を下回っています。
 これらのデバイスが実際にどれくらいの電圧で書込めるのか実験してみました。
 手元にあるWriter509はVpp電圧が9.5Vまで下げられるようになっていますので10.0Vで書き込みテストを行ってみたところ、規格上一番厳しい16F72/73/74をはじめ、手持ちの10F206、12F509、16F57、16F84Aが全て書込めました。

 規格からは少し外れますが、実験結果からWriter509としてはVpp電圧は12V固定でほぼ問題ないと考えます。
 (初期に公開した回路図中には13Vと書いたまま修正していませんが、新規作成の場合は12Vがいいでしょう。)
2007/07/24
  [PIC18Fシリーズ書き込み用回路改造について]

  PIC18Fシリーズのデバイスに書込みを行う場合、デバイスの種類やロットによってはWriter509の回路に追加/改造が必要になる場合があります。
  デバイスの種類やロットなどは特定できませんが、書き込みができない場合は回路に以下の追加を行ってみてください。
   左の回路のように、ターゲットデバイスのVdd-Vss間にコンデンサを追加します。

 コンデンサの容量は0.022uF〜0.1uFくらいが適当と思われます。
 あまり大きな容量のコンデンサを追加すると、12Fや16Fシリーズの書き込みに
影響が出る場合があります
ので、最大でも0.1uFくらいまでにすることを勧めます。

 この問題は過去に"PICStart Plus"で発生した物と同じだと思われ、MPLABをインストールしてある場合には
"C:\Program Files\Microchip\MPLAB IDE\Readmes\Readme for PICSTART Plus.txt"(英文)
にも書かれています。  
2007/06/14
  [トランジスタ付近の回路について]

  初回に公開した回路に載っているトランジスタ付近の回路でも現在まで特に問題なく動作しています。

  しかし、このトランジスタ付近の抵抗値は、特にちゃんとした根拠に基づいて決定したものではありません。
  したがって、場合によっては動作が不安定になる場合もあるかもしれません。

  きちんとした測定器がないために定数をいろいろ変更しながら特性を測定することはできませんが、
 回路シミュレータを使って検証してみたところ、より安定して確実に動作すると思われる抵抗値がありました。
 
 作製後、万が一動作が不安定な場合(通信部分には原因がない場合)左のように
抵抗値を変えてみるといいかもしれません。

 ツェナーダイオードを8.2Vから11Vくらいの範囲で変更してみたり、
ベース接地回路にしてみるのもいいかもしれません。

 ただし、この定数はシミュレータによる結果で、実際に作製して検証したものではありません。

 シミュレータによる結果は別途公開します。
 
2007/01/18

 回路図や部品配置図は下の図をクリックすれば、PDFファイルとして見ることができます。
PIC12F509の代わりにPIC12F629や675に置き換えることができます。(ダウンロードファイルの表を参照)


PDFファイルで250kByteあります。
[基本回路]

基本的な回路については左のとおりですが、
回路についての補足が、上記および別途記載してありますので見ておいたほうがいいでしょう。
画像ファイル(Png、158kByte)の場合はこちら
 これらの図面上ではプログラマー部とDC-DCコンバータ部に分かれていますが、実際は一枚の基板上に作製しました。

回路図に関する補足と注意:

  (1)R9(10kΩプルダウン抵抗)について
    回路図どおりに作製し、通常のシリアル
   インターフェースに接続する場合は、そのまま
   プルダウン抵抗とします。
   
    MAX232などのドライバーICを使用したり、
   FT232BMなどのUSB変換チップを使用する
   場合は、この10kΩを5Vへのプルアップ抵抗
   とします(MAX232やFT232BMなどが
   Writer509と同時に電源が入る場合は省略
   してもいいでしょう)。

  (2)R1(GP2[Pin5]の1.5kΩ)について
    この端子にはRS-232Cの高い電圧(物に
   よって12V位)はかからないが、間違えて
   クロスケーブルなどで接続したような場合の
   ために入れてあります。
   
    インターフェースの特性の違いなどで動作が
   おかしい場合や、接続間違いが起きない場合
   にはもっと低い抵抗(100〜470Ω位)にしたり
   直結にしてもいいでしょう。

 部品配置図は参考程度にしてください。
 特に、プログラマー部は半田面にも部品があったり、ジャンパーも何本かあるため部品配置図だけを見て作製すると 間違いやすくなります。

 [40ピン、28ピンPIC用アダプタ]
 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-シリアル変換ケーブルと改造したUSBケーブルで接続すると、
一本のケーブルでパソコンと接続でき、電源も取ることができます。

 左の写真をクリックすると、回路図と部品配置図がPDFファイルで見ることができます。 画像ファイルの場合はこちら
 パソコンのUSB端子から出力される電源電圧は、場合によって5Vより低い場合もありますが、 データシート上は4.5V〜5.5Vとなっているので仮に4.8V位の出力しかなくても正常に動作するでしょう。


 ■ Writer509を作製された方の作品例

     ・FENG3さんのサイトでFT232BM(USB-シリアル変換IC)とTL499(DC-DCコンバータ)を乗せて作製された様子を
    紹介していただいています。 USB接続(可能な)PICライタの探求(4)
 チップ部品を使用して、さらに小型でUSB接続可能なライタも
紹介されています。


     ・「りんりんさん」からCP2102(USB-シリアル変換IC)とMAX662A(DC-DCコンバータ)を乗せて作製された作品の様子を
    お送りいただいています。(pdfファイル 249kByte)
40Pinソケット版、18Pinソケット版の写真、回路図、パターン図
※追加/修正があったので差し替えました。(2006/04/22)


     ・でんし研さんのサイトでは「AVRで作るPIC Writer509」を紹介していただいています。
 主にAVRを使用した作品、アイデアなどを多く掲載している
ページです。
 AVRの開発環境はあるけど、PICプログラマーを
作ってみたいという方にいいかもしれません。


 ■ 製作時、使用時のポイントがいくつかあります。
  • プログラマー部とDC-DCコンバータ部はどちらか一方を作製し、動作確認後、もう片方を作製した方がよい。

  •  DC-DCコンバータ部はインダクタ(100uH)やショットキーダイオードの種類によってはうまく動作しないかもしれません。
     実験用の電源や、15V程度のACアダプターがある場合は、そこから3端子レギュレータなどで5Vと13Vを作製し、 プログラマー部が正常に動作するか確認ができます。
     ない場合には、DC-DCコンバータ部を先に作製し、5V入力時に13Vが出力されるか、また、50mAくらい (フラッシュタイプしか対応しないことにしたので)5〜10mA流しても電圧が下がらないか確認した後、 プログラマー部を作製するとよいでしょう。


  • プログラマー部のLEDは必ずしも必要ではない。

  •  ターゲットのPICにかかる電圧確認のため、VddとVppの2つのLEDが接続されていますが、 見た目にはほとんど同時にON/OFFを行います(厳密には10μsくらいずれてる)ので、VppVddの方のLEDだけで十分です。  また、LEDの電流制限抵抗はLEDに古いものを使用したため5〜10mAくらい流れるような値になっています。  最近の高輝度LEDを使用する場合は、3〜5倍(1kΩ以上)くらいの抵抗値に変えてもいいでしょう。
      かわりに、回路全体の電源表示となるLEDを付け忘れていたので、5Vの入力あたりにLEDを1つ付けておいた方がいいでしょう。


  • コントロールソフトにはIC-ProgやWin-Picは使用できない

  •  これは、非常に残念なことですが、回路構成がまったく異なるので仕方がありません。
     コントロールソフトは後述のソフトを使用します。なるべく多くのPICをサポートするよう努力はしましたが、 検証用のデバイスの入手等の問題もあり、限界があります。


  • USB-シリアル変換ケーブルは使用する製品の取扱説明書に従って操作する。

  •  ここで使用したUSB-シリアル変換ケーブルは 秋月電子USB・シリアル変換ケーブルを使用しました。
     ドライバーソフトが正常にインストールできれば、どこの製品でも問題なく使用できるはずですが、 複数の製品の使用などでドライバーソフトが干渉する場合もあるようなので、製品の取扱説明書や、 メーカーサイト等の情報に注意して使用したほうがいいでしょう。
     秋月電子のUSB-シリアル変換ケーブル(PL2303使用)は、完成品でドライバにも特に問題なく使用できています。
     CP2102は、デバイスのパッケージが極端に小さいため 特に工作に自身のある人以外はデバイス単体の工作は推奨できません(りんりんさんの作品例を参照してください)。
     使用に当たっては特に問題はないので、デバイス単体ではなく、モジュール化されているキットなどを薦めます。
     FT232RL等のFTDIのデバイスは、ある程度の経験があれば半田付けはそれほど困難ではありません。
     ただし、ドライバーをインストールした初期状態では、他のUSB-シリアルに比べて極端に読み/書き速度が遅くなる現象が発生することがあります。
     オレンジ電子の掲示板より「FTDI」又は「FT232RL」等を検索して「Latency Timer」を設定するか、ハードウェアの改造によって改善することがあります。
     「FTDI」のUSB-シリアル変換チップを使う場合も参考にしてください。


  • プログラマーに使っているPIC12F509のCalibrationDataを失わないようにする。

  •  プログラマーに使われているPICのオシレータはINTRCOSCを使っていて、 シリアルインターフェースのタイミングもソフトウエアで行われているため、CalibrationDataを失うと通信ができません。
         万一CALDATAを失ってしまった場合
    作製後、Writer509とPC間の通信が正常に行われているかどうかチェックすることができるソフトがあります。
         Writer509用 通信テストプログラム

  • 新品のデバイスでもブランクとは限らない

  •  新品のデバイスでも、テストデータが書き込まれているものがあるので、 ブランクチェックをしてブランクではない場合、消去してから使用してください。

  • 【一番のポイントはプログラマーを作る前にPICにプログラムを書き込まなければならないこと】

  •  なんとも矛盾するような話ですが、何らかの方法で解決しなければなりません。
     周囲にPIC12F509またはPIC12F629/675に書き込みできる環境を持った知人などがいる場合は、 頼んで書き込んでもらいましょう(これが一番確実でしょう)
     なじみのパーツショップなどがある場合には、部品を買うついでにPICに書き込んでもらえないか聞いてみましょう(無理かもしれないけど)。
     FENG3さんのサイトにあるRCD Programmerなどは簡単で安価に作製できるので、まずそれを作ってPICに書き込んだ後 こちらのプログラマーを作製する方法もあります。
     でんし研さんのサイトにはAVRの書き込みに関するいろいろなアイデアが書かれていますが、その中で「RS-CR方式」は PICにも応用できそうなので、USB-RS232Cケーブルも使える簡単なファームウェア書き込み専用器を作ってみました。
    (実際に「エレキジャック」という雑誌には、このRS-CR方式を使ったでんし研さん作製のPICライターが載っています。)



コントロールソフトの使用方法

 (1)プログラマーの電源を入れ、パソコンとケーブルで接続した後にコントロールソフトを起動すると、
   プログラマーが接続されているポートが自動的に検出されます(上の図はUSB-シリアル変換ケーブルをCOM3に設定して
   接続した時の例です)。
   現在のバージョンではCOM1からCOM10の範囲内でのみ使用できます。

 (2)接続が確認できたら使用するデバイスを選択します。
   読み出しや書込み時に、DEVICE-IDのあるものについてはできるだけ確認するようにしているので、
   選択したデバイスと異なるデバイスにはアクセスできないようになっています。
  そのため、いろいろな種類のデバイスを扱う場合に間違ったデバイスに書き込むミスを減らすことができます。
  ただし、中にはPIC12F508/509,PIC16F83/84などのようにDEVICE-IDを持たないデバイスもあるので、
  その場合は注意が必要です。

 (3)起動時には[Option]タブが表示され、ポートチェックが行われます。
   ポートは[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] にチェックを入れます。

 (4)デバイスを選択すると、各種操作ボタンが使用できるようになります。
   Ver.2.00から終了時に選択されていたデバイスを記憶するようになりました。
   初回起動時はデバイスが記憶されていないので、「デバイスを選択してください。」のメッセージが出ますが、
  2回目以降は前回起動時に選択されたデバイスが表示されます。
   
   また、デバイスを選択する度にバッファーとカレントファイルがクリアされます。
   バッファーは[ Buffer CLEAR ]ボタンで、カレントファイルは[ Reset ]ボタンでもクリアされます。
   
   ファイルからロードした内容や、PICから読み出したデータなどはバッファに書き込まれ、それぞれのタブで表示されますが、
  内容を確認するだけで、変更などの編集はできません。
   それぞれのボタンの機能等は下記の説明を参考にしてください。
   Ver2.00よりLOAD、PROG.、ERASE右のボタンによってプルダウンメニューが出てくるようになりました。
   ウィンドウの縦方向のサイズが変更できるようになり、終了時にサイズと位置、デバイスを記憶します。
   次回起動時に前回終了時のウィンドウのサイズと位置、選択されたデバイスが設定されます。


 (5)Writer509は終了時にウィンドウの大きさや位置、デバイス等の情報をINIファイルに記録します。
   従って、
     ・ネットワーク経由
     ・USBフラッシュメモリ
     ・フロッピーディスク
  等から起動する場合は、実行ファイル(W509.exe)と同じフォルダにできるINIファイル(W509.ini)に書き込みができる状態
  使用してください。

     ・CD-Rや書込み権限のないネットワーク経由
  等から起動した場合は、終了時にメッセージが表示されます。
   INIファイルに状態を保存しないで終了する場合は、[ はい ]を選択してください。
   USBフラッシュメモリなどで、ファイルの属性等を「書込み可能」に変更できた場合は[ 再試行 ]を選択してください。
   何もしないでWriter509のメインウィンドウに戻る場合は[ いいえ ]を選択してください。
   

【操作上の注意】

 操作上次のことに注意してください。
 
 デバイスを選択後、不用意にマウスのホイールを回すと選択したデバイスが変化してしまいます。
 ほとんどのデバイスではDEVICE-IDをチェックしていますが、PIC12F508/509,PIC16F83/84ではDEVICE-IDがないためチェックできません。
 気が付かないうちにデバイスが変わってPIC12F508/509などになってしまっていると、 「書込み」や「消去」において期待しない書込みを行ってしまいます。

 デバイスを選択後、[READ]などの操作を行うとフォーカスがデバイス選択メニュー以外に移りますが、 Writer509を起動中に別のアプリケーションや他のウインドウなどを表示した後、再びWriter509に戻ってくると、 フォーカスがデバイス選択メニューに戻ってしまいます。
 
Ver.1.35で修正しましたが、デバイスを選択後、他の操作を行うまではホイールによるスクロールが有効なので注意が必要です。
 普段からマウスのホイールをよく利用している場合は、特に注意して使用するようお願いします。

  Ver2.00よりPIC12F508/509,PIC16F83/84などのDEVICE-IDを持たないデバイスを選択した場合、「No ID!」の表示が出るようになりました。


各種コンパイラやアセンブラの出力するHEXファイルについて
コンパイラ/
 アセンブラ
EEPROM DataMemory ()内はバイトアドレス デバイス名/
  その他情報
ソース例 出力アドレス
MPLAB-MPASM org H'2100'
de H'00',H'01'
2100(4200) なし
PA.EXE eeorg 00h
eedata 00h,01h
4000(8000) :10FF0000…  バイトアドレス0FF00h〜
バージョン番号、デバイス名、Config 詳細
CCS-C #ROM 0x2100={0x00,0x01} 2100(4200) ;PIC16FXXX など
セミコロンの後にデバイス名
HiTech PIC-C __EEPROM_DATA(0x00,0x01); 2100(4200) なし
MikroC EEPROM Editorで設定 2100(4200) なし
 現在青字部分は対応していません。(対応するために調査中)
 この情報には正式に公開していないものも含まれます。
 これらの情報に関しての誤りや、他にロード時に不具合が出るようなHEXファイルがある場合はお知らせください。

 バージョン2.20で概ね対応しました。(2006/04/07)
 内容は、
 ・Pa.exeの4000h(8000h)に出力する EEPROM DataMemory の初期値の読み込み。
 ・Pa.exeの(FF00hに)出力する Config データの読み込み。([.osc][.wdt][.pwrte][.bod][.mclre][.id])
 ・Pa.exeの(FF00hに)出力するデバイス名による [DEVICE] の自動切換え。
 ・CCS-Cの出力するデバイス名による [DEVICE] の自動切換え。
 
 ただし、Pa.exeの出力する Config データの内 [.protect] には都合により対応していません。
 また、Pa.exeでは LVP などソース上で設定できないConfigのビットもあります。
 十分確認して使用してください。


 ■ [ボタン] と [メニュー] の機能 ■ 

 INTEL-HEX形式のファイルをバッファにロードします。
MPASMなどで出力されるファイル形式です。
[ LOAD ] ボタン
 ファイルをロードする前には、バッファーはクリアされません。
 バッファをクリアするには[Buffer Clear]ボタンをクリックしてください。
 アドレスが重なってっているデータは、後からロードしたファイルのデータで上書きされますが、 重なっていないアドレスのデータは、先にロードしたファイルのデータも残ります。
 例えば、ProgramMemoryエリアとEEDataMemoryエリアを別のファイルにしておくと、 1つのプログラムと複数のデータを組み合わせたり、逆に、複数のプログラムで1つのデータを 共有したりできます。
[ >BufferClear >LoadNewFile ] メニュー
 ファイルをロードする前に、バッファがクリアされます。
 「ファイルを開く」ダイアログが開いてファイルを選択します。
 一度ロードされたファイルは、カレントファイルとして記憶されます。
 カレントファイルは、デバイスを選択しなおすか終了するとリセットされます。
[ >BufferClear >LoadCurrentFile ] メニュー
 ファイルをロードする前に、バッファがクリアされます。
 既に、一度ファイルがロードされている場合は、カレントファイルとして記憶されているので、 「ファイルを開く」ダイアログが開かずに、カレントファイルが自動的にロードされます。

[ SAVE ] ボタン  バッファーの内容をINTEL-HEX形式のファイルに書き出します。


[ READ ] ボタン
 デバイスからバッファーにプログラムやデータを読み出します。
 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 ] メニュー
 デバイスを消去した後に、ブランクチェックを行います。

[ BLANK? ] ボタン  デバイスが消去されているかチェックします。
 ProgramMemoryエリア、EEDataMemoryエリア、ConfigurationMemoryエリアがブランクかどうかチェックします。
 ProgramMemoryエリア内にCalibrationDataをもっているデバイスの場合、そのアドレスはチェックされません。
 ブランクでない場合エラーメッセージが表示されます。

[ VERIFY ] ボタン  デバイスの内容とバッファの内容を比較します。
 デバイスに書込みを行った後で、正常に書込みが行われたかどうか確認ができます。
 一致しない部分がある場合は、エラーメッセージが表示されます。
 ProgramMemoryエリア、EEDataMemoryエリア、ConfigurationMemoryエリア、CalibrationDataエリアなどが比較されます。
 コードプロテクトのかかったデバイスはチェックできません。

ボタン又はメニュー 使用ファイル
[ LOAD ] ボタン  必ず「ファイルを開く」ダイアログが開いてファイルを指定します。
 一度ロードされたファイルは、カレントファイルとして記憶されます。
[ >BufferClear >LoadNewFile ] メニュー
[ >BufferClear >LoadCurrentFile ] メニュー  「ファイルを開く」ダイアログが開かずに、カレントファイルが
ロードされます。
 カレントファイルが記憶されていない場合は、「ファイルを開く」
ダイアログが開いてロードするファイル名を入力します
[ >BufferClear >Load >Program >Verify ] メニュー
[ >BufferClear >Load >Erase
>BlankCheck >Program >Verify ] メニュー
 ※「カレントファイル」は終了時に記憶されません。  また、デバイスの選択の度にリセットされます。
  [ Reset ]ボタンをクリックすることによって「カレントファイル」をクリアすることもできます。


「Small Box」機能について                    2005/12/29

 [ Option ]タブで[ Small Box ]をクリックすると、「Writer509」のウィンドウが縮小されて、[ Programmer ]だけの表示になります。

 「MPLAB IDE」を起動して、「MPLAB IDE」の[ Programmer ]メニューの上にうまく重ねます。
 

 「Writer509」は縮小されていて、なおかつ「常に手前に表示」されるようになっています。

 「MPLAB IDE」使用中に邪魔になることがなく、「MPLAB IDE」の下に隠れて見失うこともありません。
 

 ソースのコンパイルやアセンブルが終わってデバイスに書き込む場合は、「Writer509」の[ Programmer ]をクリックすると 「Writer509」のメニューが出てきて、書込みを行うことができます。

 詳細な設定や確認が必要な場合は、従来どおりのウィンドウに戻って必要な操作を行うことができます。

 メニューの内容は下記を参照してください。
 
そこまでやるか・・・
 Writer509の枠が邪魔だと思ったら取ってしまおう。
 これで、もうすっかりMPLAB IDEに溶け込んで見分けが付かなくなります。
 (よく見れば違いがわかりますけど…)
 
 でも、[ Programmer ]をクリックするとちゃんとWriter509のメニューが出てきて、Writer509でPICに読み書きできます。
 
 (この状態ではマウスでドラッグして移動することができなくなります。)
 位置は[W509.exe]が置かれているフォルダに作製される[W509.ini]を編集して微調整しなければなりません。  Iniファイルの編集方法

 
 
 SmallBoxの枠は [Option]タブ のチェックボックスで自由に枠有り/枠無しを切り替えられるようになりました。
 また、枠無しの状態でもマウスでドラッグすることによって位置を移動することができるようになりました。
 (メニュークリックで不用意に位置が変わってしまわないように、画面上で5ドット以上動かさないと移動しません)

 この機能は厳密には「MPLAB IDE」に統合されるわけではありません。    レジストリもいじりません。
 あくまでも「MPLAB IDE」から「Writer509」を操作しているような(「MPLAB IDE」に統合されているような)感覚が味わえるものです。
 
「Small Box」 の メニュー
Reset Current File メインウィンドウのカレントファイルの[ Reset ]ボタンと同様です。
Load New File メインウィンドウの[ >BufferClear >LoadNewFile ]メニューと同様です。
Load Current File メインウィンドウの[ >BufferClear >LoadCurrentFile ]メニューと同様です。
Save メインウィンドウの[ SAVE ]ボタンと同様です。
Read メインウィンドウの[ READ ]ボタンと同様です。
Program メインウィンドウの[ PROG. ]ボタンと同様です。
Program Current File メインウィンドウの[ >BufferClear >Load >Erase >BlankCheck >Program >Verify ]メニューと同様です。
バッファクリア、カレントファイルロード、消去、書込みなどが行われます。
Erase メインウィンドウの[ >Erase >BlankCheck ]メニューと同様です。
Blank Check メインウィンドウの[ BLANK? ]ボタンと同様です。
Verify メインウィンドウの[ VERIFY ]ボタンと同様です。
Return to Settings... メインウィンドウに戻ります。
COMポートやデバイスの設定、Program MemoryやConfiguration Wordの確認などはメインウィンドウで行います。
Writer509を終了する場合も、一旦メインウィンドウに戻ってから終了します。
 実際にMPLAB IDE上でプログラムの開発/デバッグ中はほとんど[ Program Current File ]メニューだけで用が足ります。
 新規ファイルのロードやファイル名を変更したりする場合は、[ Reset Current File ][ Load New File ]メニューを使用します。
 [キーボード派のために]
  「Small Box」状態の場合のみショートカットキーが使用できます。
 MPLAB IDEのメニューでは[Programmer]のように[g]にアンダーバーが付いているため[Alt]-[G]がショートカットキーになりますが、 Writer509のSmall Box状態では[Programmer]のように[P]にアンダーバーが付いていますので[Alt]-[P]がショートカットキーであることがわかります。
・[Alt]-[TAB] … Windowsのタスク切り替え(MPLAB IDEからWriter509に切り替えます)
・[Alt]-[P]-[P]-[C] … HEXファイルを再読み込みして、デバイスの消去、書込みを行います。
 通常はここで1回の[Alt]-[TAB]によって再度MPLAB IDEに戻りますが、複数のタスクが起動している場合には何回か[Alt]-[TAB]を押さないとMPLAB IDEに戻れない場合があります。


  ■ Linux上で動作するWriter509のコントロールソフト ■

 Sentaさんのサイトでは電子工作やLinuxプログラミング、Windowsプログラミングが紹介されています。

 その中で、Linux上で動作するWriter509のコントロールソフトを作製して紹介されています。

   < PIC Writer 509 for Linux >

 Linux上でPICのプログラミングなどを行っている方は使ってみたらどうでしょうか?


対応デバイス(サポート予定も含む)

デバイス 検証 備考
   PIC10Fシリーズ
PIC10F200
PIC10F202
PIC10F204
PIC10F206 確認済み。DIPタイプもあるが、他の8PinPICとピン配置が異なるので変換が必要
   PIC12Fシリーズ
PIC12F508 PIC12F509で確認。CalibrationのアドレスとProgramMemoryのサイズが異なる。
PIC12F509 確認済み。
PIC12F629 PIC12F675で確認。デバイスの機能差はあるが、書き込み方式等は同じ。
PIC12F675 確認済み。
PIC12F635 確認済み。
PIC12F683 確認済み。
   PIC16Fシリーズ
PIC16F57 確認済み。
PIC16F630 PIC16F676で確認。デバイスの機能差はあるが、書き込み方式等は同じ。
PIC16F676 確認済み。
PIC16F684 確認済み。
PIC16F688 確認済み。
PIC16F72 確認済み。       (有)イーエムディーさんに確認用デバイスをいただきました。
PIC16F73 確認済み。
PIC16F74 確認済み。
PIC16F76 PIC16F73で確認。ProgramMemoryのサイズが異なる。
PIC16F77 PIC16F74で確認。ProgramMemoryのサイズが異なる。
PIC16F83 PIC16F84で確認。ProgramMemoryのサイズが異なる。
PIC16F84 りんりんさんに書込みを確認していただきました。
PIC16F84A 確認済み。
PIC16F627 FENG3さんに書込みを確認していただきました。
PIC16F628 FENG3さんに書込みを確認していただきました。
PIC16F627A PIC16F648Aで確認。ProgramMemoryとEEDataMemoryのサイズが異なる。
PIC16F628A 確認済み。
PIC16F648A 確認済み。
PIC16F818 PIC16F819で確認。ProgramMemoryとEEDataMemoryのサイズが異なる。
PIC16F819 確認済み。
PIC16F87 PIC16F88で確認。デバイスの機能差はあるが、書き込み方式等は同じ。
PIC16F88 確認済み。
PIC16F873 北アルプスさんに書込みを確認していただきました。
PIC16F874 PIC16F877で確認。ProgramMemoryとEEDataMemoryのサイズが異なる。
PIC16F876 りんりんさんに書込みを確認していただきました。
PIC16F877 確認済み
PIC16F873A 確認済み
PIC16F874A PIC16F877Aで確認。ProgramMemoryとEEDataMemoryのサイズが異なる。
PIC16F876A PIC16F873Aで確認。ProgramMemoryとEEDataMemoryのサイズが異なる。
PIC16F877A 確認済み
PIC16F913 PIC16F917で確認。ProgramMemoryのサイズや機能が異なる。
PIC16F914 PIC16F917で確認。ProgramMemoryのサイズや機能が異なる。
PIC16F916 PIC16F917で確認。ProgramMemoryのサイズや機能が異なる。
PIC16F917 たわしさんに書込みを確認していただきました。
   PIC18Fシリーズ デバイスによっては回路の追加/改造が必要になる場合があります。
PIC18F242 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F252 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F442 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F452 確認済み
PIC18F248 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F258 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F448 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F458 PIC18F452で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F1220 PIC18F1320で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F1320 確認済み
PIC18F2220 PIC18F2320で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F2320 確認済み
PIC18F4220 PIC18F2320で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F4320 PIC18F2320で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F2450 PIC18F2550で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F2455 PIC18F2550で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F2550 確認済み
PIC18F4450 PIC18F2550で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F4455 PIC18F2550で確認。ProgramMemoryのサイズや機能が異なる。
PIC18F4550 PIC18F2550で確認。ProgramMemoryのサイズや機能が異なる。


プログラムのダウンロード


ファイル名をクリックしてダウンロードしてください (または、ファイル名を右クリックして「対象をファイルに保存(A)...」)。
その後解凍して使用してください。

   ・ファームウェア
  (プログラマー側のPICプログラム。4つの内から1つ選んで、作製したプログラマーに書き込みます)

ファイル名 内容   現在の最新バージョンはVer.1.24です。 【更新】 (18F対応のβバージョンを正式版としました)
Writer509.zip  PCとのインターフェースにドライバーICなどを使わず抵抗で接続する回路に使用します。
 PIC12F508/509を使用してWriter509を作製する場合にこのファイルを使用します。
 Ver.1.23からRAM容量の不足のため12F508は使用できなくなりました。
 最新版を使用する場合は12F509又は12F629/675を使用して作製してください。
 12F508しか入手できない場合はVer.1.22以前のファイルを使用してください
 今後の機能追加などによってRAM使用量が増えることが予想されますので、12F629/675の使用を推奨します。
Writer509I.zip  PCとのインターフェースにMAX232などのドライバーICなど使用して接続する回路に使用します。
 PIC12F508/509を使用してWriter509を作製する場合にこのファイルを使用します。
 MAX232などのほかに、TxDやRxDをトランジスタを使用して反転させる回路を使用したり、FT232RLやCP2102などのUSB-シリアル変換ICを組み込んで作製する場合に使用します。
 ただし、完成品のUSB-シリアル変換ケーブルを直接接続する場合は上記のファイルを使用します。
注意:このファイルを使用する場合は回路図中のR9(10kΩプルダウン)を取去るかプルアップに変更してください。
Writer675.zip  PCとのインターフェースにドライバーICなどを使わず抵抗で接続する回路に使用します。
 PIC12F629/675を使用してWriter509を作製する場合にこのファイルを使用します。
 PIC12F675で動作を確認しましたが、PIC12F629でも動くと思います。
Writer675I.zip  PCとのインターフェースにMAX232などのドライバーICなど使用して接続する回路に使用します。
 PIC12F629/675を使用してWriter509を作製する場合にこのファイルを使用します。
 MAX232などのほかに、TxDやRxDをトランジスタを使用して反転させる回路を使用したり、FT232RLやCP2102などのUSB-シリアル変換ICを組み込んで作製する場合に使用します。
 ただし、完成品のUSB-シリアル変換ケーブルを直接接続する場合は上記のファイルを使用します。
注意:このファイルを使用する場合は回路図中のR9(10kΩプルダウン)を取去るかプルアップに変更してください。
     以下、旧バージョンです。
Ver.1.23a  Ver.1.23aです。 (β-1と同一ファイルです。)
 ここまでのバージョンは、PIC18Fシリーズに対応していません。
 機能的にはVer.1.23と同じですが、通信のタイミングとしてややマージンが大きくなっています。
Ver.1.23  Ver.1.23です。 (βと同一ファイルです。)
 高速化のために新しいプロトコル(AdvanceWrite4 [15h])が追加されています。
 機能的にはVer.1.23aと同じですが、通信のタイミングとしては、Ver.1.23aのほうがややマージンが大きくなっています。
Ver.1.22  Ver.1.22です。 (正式には公開しませんでした。)
 ターゲットの電源をOFFにした後に、PGC/PGDラインをHigh-Zにする機能が追加されています。
 ICSPの実験時に使用しましたが、これだけでは完全なICSPに対応できませんでした。
Ver.1.20/1.21  Ver.1.20/1.21です。
 安定版として長く公開されているものです。
 先に12F508/509用(Ver.1.20)を公開し、その後12F629/675用(Ver.1.21)を公開したのでバージョンが異なっていますが、機能的には同じものです。
 

   ・コントロールソフト
  (パソコン側のWindowsプログラム。パソコン上に解凍して実行します)

ファイル名 内容   現在の最新バージョンはVer.2.54です。 【更新】 (18F対応のβバージョンを正式版としました)
W509.zip  パソコンにダウンロード後解凍するとW509.exeファイルが作製されます。
適当な場所(通常はc:\ProgramFiles\Writer509などのフォルダを作製して) に移動してください。
レジストリやランタイムライブラリファイルは使用していませんのでこのままで使用できます。
アンインストールはこのファイルを削除するだけでOKです。
Ver.2.00よりINIファイルを使用するようになったので(初回起動時に自動的に作製されます)、
アンインストール時はこのファイルと同じフォルダに作製されるINIファイルを削除してください。

 OSはWindowsXP、Windows2000、Windows98SEで動作を確認しています。何か不具合がある場合は掲示板に書き込むなどしてご連絡ください。
     以下、旧バージョンです。

W509v231.zip
W509v230.zip
W509v225.zip
W509v224.zip
W509v223.zip
 
 Ver.2.24、Ver.2.25、Ver.2.30で書込みアルゴリズムのあたりを変更していますので、 念のために古いバージョンもダウンロードできるようにしています。
 原則として、ファームウェアが古くても最新バージョンのコントロールソフトで そのファームウェアが持っている機能だけは使用できるようにしてあります。
 万が一動作がおかしいような場合は、古いバージョンで確認してみてください。
 十分に安定動作が確認できたら、古いバージョンは消去するかもしれません。
 HEXファイル、ZIPファイル、EXEファイルなどのファイル名にある[Writer 509]や[W509]と、
実行時に[Version]で表示されるそれらが矛盾しているためわかりにくくなっています。
今から変更すると混乱するかもしれないので、ファイル名やバージョン表示は当面このままにします。
ファイルの拡張子やバージョン番号などで、パソコン側のファイル(又はバージョン名)なのか、
プログラマー側のファイル(又はバージョン名)なのか判断するようにしてください。


ソースファイル 内部資料 テストプログラム
  コントロールソフト(Windows上で実行するソフト)         Writer509v2.53Win.zip   397kByte
  ファームウェア(プログラマー側のPICに書き込むソフト)       Writer509v1.24Firm.zip  152kByte
  Writer509 内部資料       Writer509Documents.zip  92kByte
  PC - プログラマ間通信プロトコル       Protocol.pdf  60kByte
  PC - プログラマ間通信テストプログラム       Writer509Test18.zip  591kByte
 原則として、ソースファイルはサポートできません。
 不明な点などがある場合は御質問されてもかまいませんが、回答するのに時間が掛かったり、 回答できなかったりすることもありますのでご了承ください。

 ファームウェアはMPLAB(MPASM)で開発されています。
 MPLABについてはこちらを参考にしてください
 マイクロチップ・テクノロジー・ジャパン 開発ツール
 
 コントロールソフトはBorland Delphi 6 Personalで開発されれていますが、
実行ファイルの再配布等を考えている場合にはTurbo Delphiがいいでしょう。
 Borland Delphi 6 Personal日本語版(Vector Softライブラリ)
 Turbo Delphi Explorer Homepage Japanese
 ナッキーの「Turbo Delphi初めて奮戦記」佐竹那月

 テストプログラムには2種類のプログラムが入っています。
 通常は"Writer509CommTest.exe"の方を使用してください。
 "PIC18Test.exe"のほうは、Writer509を改造したり、新たにコントロールソフトを作ったりする場合の物です。
 "PIC18Test.exe"のほうは、使用方法を誤るとデバイスを破損したりする場合がありますので注意してください。


ベータ・バージョン
  Windowsソフトとプログラマー側ソフトの両方入っています。  
(現在ベータバージョンはありません)    
W509Beta.zip W509Beta1.zip W509Beta3.zip
  上記(正式公開版)へ移動しました
W509v253.zip WriterFVer.1.24.zip Writer509Test18.zip
  上記(正式公開版)へ移動しました
 ベータ・バージョンです。 使用に当たっては注意が必要です。 Ver.2.30 (+Ver.1.23)

 Ver.2.25よりもさらに高速化が図られています。

   高速化のためにプロトコルを追加していますので、Windowsソフト(コントロールソフト)とプログラマー側ソフト(ファームウェア)
  の両方を更新しないと高速化は機能しません。
   ファームウェアに12F508(または12C508A)は使用できなくなりました。
   12F509(12C509A)および12F629/675が使用できます。

   一通りテストしてありますが、十分ではないかもしれません。

   (*) 不具合が発見されてるので正常に書き込みができない場合があります。
   修正版が出るまでは、実験などの目的以外では使用しないほうがいいでしょう。


 修正版を公開しました。2007/01/31
   Windowsソフトでデバイスによって最後の8ワードに書き込めなかった不具合を修正しました。
   ファームウェアで内部OSCの周波数精度や変動に対して余裕がなかったものを見直し、動作範囲が少し広がりました。
   バージョン番号は変更していません。(Ver.2.30 + Ver.1.23)
   修正版はβ-1とβ-2の2種類作り測定してみましたが、公開しているのはβ-1のほうです。
      [参考] 測定結果のPDF 

   高速化の機能は、Windowsソフトとファームウェアの両方を更新しないと機能しませんが、どちらか片方のみの更新でも
  従来どおりの速度で動作するはずです。

 β-3を公開しました。2007/02/06
   Windows側ソフトで管理している各デバイスの書込みタイミングを、プログラミング仕様書の[typ.値]から[max.値]に
  変更しました。
   プログラマー側ソフト(ファームウェア)はβ-1と変わりなく同一の物です。

 β-18Fを公開しました。2007/03/17
   PIC18Fシリーズ対応暫定版を公開しました。
   コントロールソフト、通信テストソフト、実験用ソフト(Windows用)、ファームウェア(PIC12F509/629/675用)の
  パックになっています。
   使用方法は従来版と同様ですが、デバイスの種類によってはハードウェアの改造が必要となる場合があります。
   PICStartPlusで書き込みができない不具合と同様の現象が発生する場合があり、詳細はMPLABインストールフォルダの
  Readmesフォルダに "C:\Program Files\Microchip\MPLAB IDE\Readmes\Readme for PICSTART Plus.txt"(英文)
   のようなファイルがあり、その中の [5. Known Problems] に詳細が書いてあります。
   具体的な対策は、ターゲットデバイスのVdd-Vss間に0.02〜0.1uF程度のコンデンサを挿入することです。
   テスト用のデバイスが少ないので正確な実験はできていませんが、不明な点は掲示板又はメールでお問い合わせください。

 β-18F修正版を公開しました。2007/03/18
   PIC18Fシリーズ対応暫定版の不具合を修正しました。(Ver.2.51)
   通信テストソフト、実験用ソフト(Windows用)、ファームウェア(PIC12F509/629/675用)は変更ありません。
   コントロールソフトの不具合(User-IDの書込み、18F2450の書込み、LOAD時のエラー処理)を修正しました。

   PIC18Fシリーズ対応版は[ W509.18FPack.zip ]にまとめて公開しましたが、
   [ W509v251.zip ][ WriterFVer.1.24.zip ][ Writer509Test18.zip ]の3つに分割しました。
   そのうち、不具合の修正でコントロールソフト(Windows用)の[ W509v251.zip ]のみ更新しています。
   ファームウェア[ WriterFVer.1.24.zip ]とテストプログラム[ Writer509Test18.zip ]は[ W509.18FPack.zip ]内の物と
   同一です。

 β-18F修正版を公開しました。2007/05/05
   PIC18Fシリーズ対応暫定版の不具合を修正しました。(Ver.2.52)
   PIC18FシリーズのEEPROMデータメモリの書込み処理において、'FF'のデータがある場合のスキップ処理に不具合があり、
   不正なデータを書き込むことがあったものを修正しました。
   [DEVICE] AutoSelectにおいて、異常終了する場合がある不具合を修正しました。

 β-18F修正版を公開しました。2007/06/08
   PIC18Fシリーズ対応暫定版の不具合を修正しました。(Ver.2.53)
   PIC18FシリーズのUser-ID書込み処理に不具合があり、正常に書き込みができなかったものを修正しました。
   User-IDをベリファイ対象にするかしないかを切り替えられるようオプションを追加しました。
   Windows VISTAにおいて表示が崩れるもののうち、ウィンドウ枠の太さに起因するものに対応しました。
   従来、ウィンドウの大きさは高さのみ可変で幅は固定でしたが、幅を+10ドット広げられるように変更しました。
   Windows VISTAでは他にも原因があると思われますが、幅を広げることによって表示が正常に近くなる場合もあります。


こっそり未検証+αのページ
(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【マイコン】」スレッドで多くの方に意見をいただきました。(´∀`)
  オレンジ電子の掲示板で"りんりんさん"をはじめ、 いろいろな方に改良のためのアイデアをいただきました。

注意: このページに書いてある内容は十分確認されていますが、
万一ハードウエアを作製し、上記ソフトウエアを実行した場合に、
デバイスや使用しているパソコン等に不具合を生じた場合でも補償はできません。


Topページへ

    

実験や+αのページへ

    

シリアルインターフェースのページへ


Counter