★★★ 8mmのQFP IC除去工具の自作 ★★★
必要性に迫られて作りました。
何の事かというと、秋月電子にて、「R8C27マイコン開発セットなる物を購入し
開発環境をパソコンにインストールして、サンプルプログラムを書き込んだところ
書き込みソフトにて正常に書き込めたはずなのに、全く動作しない現象が発生しました。
で再度、書き込もうとしたら、IDの不一致で書き込めないエラーが発生しました。
何これ... と思いました。 まだ、1回しか書き込んでないのに、2回目以降が書き込めません。
今まで、H8、PIC、SH2とやってきましたが、このような事は初めてだったので
ちょっと戸惑いました。 書き込みソフトの操作は説明書通りに行っていたのに
何故... たまたま運悪くIDの書き込みに失敗したのかという感じでした。
よそのHPにて、R8Cの IDが分らなくなったら2度と書き込めないとありましたので
R8C27(R5F21276SNFP)マイコンチップを基板のパターンを痛めないように取り除いて
新しいチップを付けるしかないと判断しました。

このチップは、8mm角のQFP32PINです。(上の画像の IC1です。 )
どうやって取り外すか。? 4辺の足全てを同時に加熱してハンダを溶かして外すか。
あるいは、マイクログラインダー等で足を削って切るか。... 悩みました。
グラインダーで切るとパターンにも相当力がかかるので、切断したピンが残り少なくなった
時点でパターンが剥げ取れる恐れがあります。
よって、ハンダコテに四角い銅か真鍮の枠を付けて4辺の足のハンダを同時に溶かす
事が出来ないか検討しました。
やや熱容量がいるので 60Wぐらいのコテを改造してと考えていたところ、古い コテと
スッポンが一緒になったようなコテがありました。

コテ先がちょうどよさそうな大きさで、コテ先に1mm厚ぐらいの真鍮板を巻き付けて
作れないかと考えました。
板厚は、薄い方が曲げやすいですが、1mmより薄いと熱が伝わりにくいと思ったので
真鍮 1mmの板を選びました。
真鍮にしたのは、銅より耐久性がありそうな気がしたからです。 これといった根拠は
ないです。

巻き付ける長さは、8mm×4で 32mm 、コテ先方向の長さ 26mmです。
上の画像左の金切りばさみで切りました。 やや堅かったですが問題なく切れました。
これをコテ先に巻き付けます。
コテ先に固定するのは、空圧用のホース止め金具を使いました。


真鍮板のコテ先固定側は、バンドで締めて整形しました。
真鍮板のQFPコテ先?となる部分は、プライヤーとラジペンで整形しました。


左の画像がコテ先に取付けた状態です。
で、QFP 32Pinが取れたかというと取れました。 右の画像です。
使った印象は、今回付けた金具の先端がハンダが溶けるまで暖まるのに
やや時間がかかります。
ICに付ける前に、QFPコテ先 4辺に十分ハンダを溶かし付ける必要があります。
付きが悪いときは先端をヤスリで少し削ります。
基板のICが付いてる面を下にして、下からコテ先を当てます。
ICに付けた瞬間また温度が下がりますので、しばらく当てて溶けているようであれば
コテを離します。 今回はちょうどいい具合に四角い枠の中にICがはまりました。
先が尖ったドライバーで外しました。
使った感じでは、ハンダコテを適切に選べば 10mm角 ぐらいのQFPまでなら
このやり方で なんとか外せそうな気がします。
しかし、真鍮板を巻き付ける方法は、コテ先の直径で寸法的制約を受けるので
他のサイズのQFPを外す時宜しくありません。
他のサイズの表面実装部品をを外す時は、またその時考えます。 (^^;
( 場合によっては、10mm角のものが必要になるかも... )
そして、今回のR8C27マイコン基板ですが
新しいチップをハンダ付けして再度、書き込みにトライしてみました。
2010-12-06 追加
★★★ R8Cマイコン ID書き込みのトラブル ★★★
--------------------------------------------------------------------
再度、書き込みを行ったらまた、同じ現象が発生しました。
( 書込みソフトで正常に書き込めたはずなのに、全く動作しない、
その後、ID不一致で再書き込みが出来なくなる現象。)
偶然の書込みミスではなく、再現性のある現象として原因を考えました。
一つには、秋月のCD-Rに入っていたサンプルのMOTファイルを直接
書き込んだ訳ではありませんでした。
開発環境(HEW)をインストールして、サンプルプログラムもHDDにコピー
しました。 そして、処理の流れとして、ソースをビルド( コンパイル、リンク、
MOTファイル生成 )を行い書込みました。
ソースは全く修正していません。
ビルドも
Build Finished
0 Errors, 0 Warnings
正常終了しています。
もしかしてコンパイルしたことが影響しているのかと思い、HDDで生成した
MOTファイル( 16進数のテキストファイル)、秋月のCD-R内の MOTファイルを
見比べました。
そしたら何と異なる箇所が見つかりました。
MOTファイル最後の FFDC 番地以降の行です。
CD-R内のMOTファイル、データ終わりの2行
S22400FFDC3E8300FF3E8300FF3E8300003E8300FF3E8300FF3E8300FF3E8300FF3E8300FFFF
S20800FFFC9E8200FFDD
HDD内でビルドしたMOTファイル、データ終わりの2行
S22400FFDC3E8300003E8300003E8300003E8300003E8300003E8300003E8300003E830000F8
S20800FFFC9E820000DC
データの異なる部分に色を付けて見ました。
勘のいい方ならすぐピンとくると思いますが、この最後のアドレスエリアは
割込みベクトルテーブルです。
R8Cのアドレス空間は 1Mbyteなので最上位バイトは必要ありません。
ここに、R8CのROMに書き込まれる ID、および OFSレジスタの値が仕込まれているのです。
書き込みプログラム( FlashSta )の7つの EditBoxに表示される値は照合に使うだけで
IDとして書き込まれるものではないようです。
(説明では、通常 FF FF FF FF FF FF FF を書き込むように書いてあります。)

MOTファイルを読込んだ時点で IDが FF FF FF FF FF FF FFと表示されますが
これは、MOTファイル内のIDではありません。
秋月のサンプルプロジェクト内に ?????.ID というファイルが存在します。
テキストファイルで内容は以下のものです。
-ID#FFFFFFFFFFFFFF -ofsregx FF
0FFDF : FF
0FFE3 : FF
0FFEB : FF
0FFEF : FF
0FFF3 : FF
0FFF7 : FF
0FFFB : FF
0FFFF : FF
FlashStaは、この内容を読込み表示しているようです。
そしてこの *.ID というファイルは、ビルドしても内容が更新されません。
(日付が 2008/06/21 のままです。 )
これも勘違いした原因の一つといえます。
R8Cマイコンに書き込まれるIDは、MOTファイルに仕込まれているIDです。
そこで、コンパイルして、00 00 00 00 00 00 00 を書き込んでしまったのであれば
書込みプログラムで IDを 00 00 00 00 00 00 00にして やったらどうかと試したところ
書き込む事が出来ました。 でもプログラムは動きません。
一番最後の行 FFFF番地の 00 は IDではありません。 CD-R側のMOTファイルは
FFになっています。
これは、オプション機能選択レジスタ(OFS)だそうで、CPUの基本機能の設定です。
PICでいうところのコンフィグレーションビットみたいな物のようです。
これが、00 だとCPUは、全く動作しません。
プログラムが走らなかった原因は、OFS=00 だったからです。
よって、IDは、00 00 00 00 00 00 00で書き込んでしまっているので
同じく 00 00 00 00 00 00 00 にして、OFSのところだけ FF にすればいいはずです。
テキストエディタで MOTファイルを編集し
S20800FFFC9E820000DC の行を
S20800FFFC9E8200FFDD に置き換えます。
そして、この編集したMOTファイルを書き込めばいいはずです。
書き込みソフトの表示窓には、ID 00 00 00 00 00 00 00 を セットします。
これで、書き込みも成功し、プログラムを実行する事も出来ました。
これは、実際やった事がないと 分りにくい話ですが
私のようなトラブルを、やらかす方が他にもおられるかもしれませんので
Upする事にしました。
IDの設定は本来どうやるのかは、MOTファイル生成ユーティリティ( lmc30 )に
コマンドパラメータのような形でオプション指定するか、
アセンブラ( AS30 )で指示命令で指定するか、とうい事のようです。
詳細は、まだよく調べてません。 (^^;
何も指定しないで ビルドすると、ID OFSのアドレス部分は 00になるようです。
生成された MOTファイルの IDと OFSを FFで上書き( もちろんSUMも変更 )する
プログラムを作ってもいいかなと思います。
分ってしまえば、なんてことないんですが、これは悩みました。
![]()