2011年4月2日作成 2011年11月18日更新

完成図

PICプログラマ(PICライタ)の製作

安くて高機能なPIC24Fを使ってみたかったのですが、これまで使っていた秋月のPICプログラマ(初代?[写真右])では、PIC24Fの書き込みに対応していないので、自分で作ってみることにしました。

制御用マイコンにルネサスのR8C/M12A(秋月で100円)を使用しました。ファームウェアの書込みに書込み機が不要なので、マイコンの書込み機を何も持っていない場合でも製作可能です。でも、電子工作が初めてというような場合は、完成品のPICKIT2とかPICKIT3が4,000円前後で買えるので、それらを使用したほうが良いように思います。

USB接続にしたのでACアダプタが不要になって使いやすくなりました。

ソースファイルも公開しますので、自由に改良して使ってください。

R8CのファームウェアはHEWの無料版。windowsの書き込みソフトはVisual C# 2010 Express(無料版)で作成しています。

書き込みソフトの使い方

実行には .NET Framework 4 以降が必要なので、先にインストールしておきます。

書き込みソフトはインストール不要なので、zipファイルを解凍して実行するだけです。

COMポートとHEXファイルを選択して、スタートボタンを押すと書き込みを始めます。難しい事をしていないので、ぜひソースファイルも見て、できればもっとよく改良して使ってください。

いまのところ、PIC24FJXXXGA0XX と PIC16F87/88(LV-ICSPモードのみ) の書き込みができます。実行ファイルと同じディレクトリにある、デバイスリストファイル(ただのテキストファイル)を書き換えれば、LV-ICSPに対応したPIC16等8ビットPICにも書き込みできるんじゃないかと思います。

注意点

頻繁にマイコンの応答を確認しながら通信している関係で、USB-シリアル変換器によっては動作がとても遅くなることがあります。FT232RLの場合ドライバの設定で待ち時間を最小の1msにすると動作が速くなります。

データEEPROMの書き込みには対応していません。

PIC16シリーズで内蔵オシレータのキャリブレーションに使う値が、プログラムROMに書かれているものがあるようなのですが、この書き込みソフトではそれを考慮していません。そういうデバイスを持っていないのでテストする予定もありません。

チップイレース/バルクイレースコマンドを使っていないのと、HEXファイルにあるアドレス以外には書き込みをしないので、キャリブレーションデータは消えないのかもしれないけど、もしかしたら消えるのかもしれない?

PIC16の書き込みを行う場合、PGMピン(PIC16F88ならRB3)をVDDに固定しておきます。書いたプログラムを実行するときはPGMピンをGNDレベルに固定します。詳しくは使用するデバイスのデータシートを見てください。

デバイスリストファイル (devicelist.txt)

; 手抜きのため、数は16進表記に限る。デバイス名に余計な空白禁止
;
;DEVICE,           ID, PROGRAM ROM, ERASE, WRITE, DATA EEPROM, EREASE, WRITE
PIC16F87,        0720,        1000,    20,     4,         100,      1,     1
PIC16F88,        0760,        1000,    20,     4,         100,      1,     1
;
PIC24FJ16GA002,  0444,        2000,   200,    40,           0,      0,     0
PIC24FJ16GA004,  044C,        2000,   200,    40,           0,      0,     0
PIC24FJ32GA002,  0445,        4000,   200,    40,           0,      0,     0
PIC24FJ32GA004,  044D,        4000,   200,    40,           0,      0,     0
PIC24FJ48GA002,  0446,        6000,   200,    40,           0,      0,     0
PIC24FJ48GA004,  044E,        6000,   200,    40,           0,      0,     0
PIC24FJ64GA002,  0447,        8000,   200,    40,           0,      0,     0
PIC24FJ64GA004,  044F,        8000,   200,    40,           0,      0,     0
PIC24FJ64GA006,  0405,        8000,   200,    40,           0,      0,     0
PIC24FJ64GA008,  0408,        8000,   200,    40,           0,      0,     0
PIC24FJ64GA010,  040B,        8000,   200,    40,           0,      0,     0
PIC24FJ96GA006,  0406,        C000,   200,    40,           0,      0,     0
PIC24FJ96GA008,  0409,        C000,   200,    40,           0,      0,     0
PIC24FJ96GA010,  040C,        C000,   200,    40,           0,      0,     0
PIC24FJ128GA006, 0407,       10000,   200,    40,           0,      0,     0
PIC24FJ128GA008, 040A,       10000,   200,    40,           0,      0,     0
PIC24FJ128GA010, 040D,       10000,   200,    40,           0,      0,     0

R8C/M12Aへのファームウェア書き込み方法

回路図の通りに作った場合、JP1をショートしてからUSBコネクタをPCに差し込むとファームウェア書き込みモードになるので、ルネサスのフラッシュ書き込みツールFDTでMOTファイルを書き込めば良い。エラー無く書き込みできたら、いったんUSBコネクタをPCから抜いてからJP1をオープンして再度PCに挿し込めば書き込み器として使用できる。

FDTはBASICモードのほうが機能が少なくてわかりやすいと思う。自分はBASICモードでしか使ったことがないです。

ルネサスのマイコンを使ったことがない場合、FDTのマニュアルとR8C/M12Aのデータシートも、日本語なので読んでみてください。

書き込み手順

参考にした資料


webmaster@kyoutan.jpn.org

('A`)