TOPへ戻る

20070606 書き込み器を作る

書き込み器は、ISP方式で書き込むタイプとライタを使用して書き込むタイプの2種類があります。
通常は、ISP方式で書き込むタイプのほうで問題ありません。
ライタ方式は、ヒューズビットを間違った設定に書いてしまったときに設定し直すことができます。

今回はエルムさんの、LPTポート制御 ISPアダプタの簡易版というのを作りました。
ココ
D-SUBコネクタと抵抗と配線だけで作ることができるコストパフォーマンスの高い物です。

対応した書き込みソフトは、同ページの【Win32版ライタ制御ツール for Windows9X/Me/NT/2k/XP】を使います。
しかしDOSベースのツールのため、AVRSP-Gという、 AVRSPをGUI化したものを使うと便利です。

AVRSP-Gに、ATmega168の設定がありませんでしたので、設定例を置いておきます。
fuse.xml をエディタで追記することで、AVRSP-G のプルダウンメニューに現れます。
------------------------------------<キリトリ>-------------------------------------------- <device name="ATmega168" Mode="ISP/Parallel"> <fuse name="low" bit0="CKSEL0 クロック種別選択" bit1="CKSEL1" bit2="CKSEL2" bit3="CKSEL3" bit4="SUT0 起動時間選択" bit5="SUT1" bit6="CKOUT システム クロック出力許可 (1:不許可,0:許可)" bit7="CKDIV8 システム クロック 8分周選択 (1:1/1,0:1/8)" /> <fuse name="high" bit0="BODLEVEL0 (111:無, 110:1.8V, 101:2.7V, 100:4.3V)" bit1="BODLEVEL1" bit2="BODLEVEL2" bit3="EESAVE (消去でEEPROMを 1:消去, 0:保持)" bit4="WDTON (1:WDT通常動作, 0:WDT常時ON)" bit5="SPIEN (1:ISP禁止, 0:ISP許可) ※Parallel時のみ" bit6="DWEN (On-Chipデバッグ 1:無効, 0:有効)" bit7="RSTDISBL (RESETピン 1:有効, 0:無効(PC6))" /> <fuse name="ext" bit0="BOOTRST リセット ベクタ(応用領域またはブート ローダ領域)選択" bit1="BOOTSZ0 ブート ローダ容量選択" bit2="BOOTSZ1 ブート ローダ容量選択" /> <warning fuse="low" pattern="****0000" message="クロックが外部設定です。書き込んでもよろしいですか?" /> <error fuse="high" pattern="0*******" message="RESETが無効になっています。この設定では書き込めません。" /> </device> ------------------------------------<キリトリ>-------------------------------------------- 1)最初fuseビットは無視してテストプログラムを書き込みました。⇒成功デス。

2)20MHzのセラロックを外付けに設けていたので、外部クロックと判断して CKSEL0-3 0に設定
  AVRSP-Gで、ISPによるヒューズビットの読み出しが出来なくなってしまいました。

  ヒューズビットが読み出すことが出来ない場合、プートローダーが動作していないため、
  パラレルライタでヒューズビットを書き直してあげる必要があります。
  駄目もとで、EXO3C を使用して、外部クロックを与えたところ、無事AVRSP-Gでヒューズビットを
  読み出すことができました。
  から、に変更。

3)セラロックの設定は、CKSEL0:0 CKSEL1:1 CKSEL2:1 CKSEL3:0 という設定で落ち着きました。

4)内部クロックに戻す位なら、下記の表の手順でジャンパ等で設定できれば、
  ヒューズビットの書き込みができるかな。(近いうちに調べる)


TOPへ戻る

. VCC RESET OE WR BS1 BS2 XA0 XA1 PAGEL XTAL1 DATA 備考
1 0V 0V 1 1 0 0 0 0 0 0 0 初期状態
2 5V 0V 1 1 0 0 0 0 0 0 0 5V印加
3 5V 12V 1 1 0 0 0 0 0 0 0 12V印加
4 5V 12V 1 1 0 0 0 1 0 0 0 XA0:0 XA1:1
5 5V 12V 1 1 0 0 0 1 0 0 40 ヒューズビット書き込みコマンド
6 5V 12V 1 1 0 0 0 1 0 1 40 XTAL正パルス
7 5V 12V 1 1 0 0 0 1 0 0 40
8 5V 12V 1 1 0 0 1 0 0 0 0 XA0:1 XA1:0
9 5V 12V 1 1 0 0 1 0 0 0 62 内部発振
10 5V 12V 1 1 0 0 1 0 0 1 62 XTAL正パルス
11 5V 12V 1 1 0 0 1 0 0 0 62
12 5V 12V 1 0 0 0 1 0 0 0 0 WRパルス
13 5V 12V 1 1 0 0 1 0 0 0 0
14 5V 0V 1 1 0 0 1 0 0 0 0 .