ヒューズ設定
ヒューズについて
AVRのfuseとは、AVRのチップの動作を設定するパラメタのビットで、
AVRはプログラムデータとは別に、
ライタで通信してfuse設定の書き込みをします。
AVRのライターには、プログラムの書き込み以外に、FUSE書き込み機能も必ずあります。
以下の各名称のFUSE:内部発信クロック設定、その他、重要ビットを間違って書き込みすると以後、ISP書き込みができなくなる。または、それ以後 チップが機能しなくなる、つまりもう使えない ということも起こりうるので、FUSEの扱いは重要です。
AVR ISP AVRmarkⅡ
●fuseの各ビット
・RSTDISBL | リセット端子禁止 |
・DWEN | デバッグWire機能 許可 |
・SPIEN | シリアルプログラミング許可 |
・WDTON | ウオッチドッグタイマ常時有効 |
・EESAVE | EEPRROMをチップ消去から保護 |
・BODLEVEL | 低電圧リセット電圧レベル |
・CKDIV8 | 発信クロック8分周 |
・CKOUT | CPUクロックをCLK0端子から出力 |
・SUT_CKSEL | リセット遅延時間設定 |
【ヒューズビット設定値】
上位バイト
名称 | ビット | 意味 | 規定値(出荷時) |
DWNEN | 7 | デバッグWIRE機能許可(0:有効、1:無効) | 1(デバッグWIRE不可) |
EESAVE | 6 | チップ消去からEEPROM内容保護(0:保護、1:未保護) | 1(未保護) |
SPIEN | 5 | シリアルプログラミング許可(0:ISP許可、1:ISP禁止) | 0(許可) |
WDTON | 4 | ウオッチドッグ有効(0使用する、1:使用しない) | 1(WDTはWDTCSR レジスタで設定) |
BODLEVEL3 | 3 | 3 2 1 1 1 1 :リセット禁止 1 1 0 :1.8Vリセット 1 0 1 :2.7Vリセット 1 0 0 :4.3Vリセット |
1(未設定) |
BODLEVEL2 | 2 | 1(未設定) | |
BODLEVEL1 | 1 | 1(未設定) | |
RSTDISBL | 0 | PA2がIOピンか(0)、RESET設定か(1) | 1(RESET設定) |
下位バイト
名称 | ビット | 意味 | 規定値 |
CKDIV8 | 7 | システムクロック8分周選択(0 : 1/8、 1: 1) | 0 |
CKOUT | 6 | システムクロック出力許可(0:出力する、1:しない) | 1 |
SUT1 | 5 | 1 0 (詳細は日データシートP15,16) 0 0 : BODリセット許可 0 1 : 高速立ち上がり電源 1 0 : 低速立ち上がり電源 1 1 : --- |
1(低速立ち上がり) |
SUT0 | 4 | 0 | |
CKSEL3 | 3 | 3 2 1 0 1 × × × : 外部発振 0 1 1 0 : 128k内部WDT発振 0 1 0 0 : 8M内部発振 0 0 1 0 : 4M内部発振 0 0 0 0 : 外部クロック信号 (詳細は日データシートP14,15,16) |
0(8M内部発振) |
CKSEL2 | 2 | 1 | |
CKSEL1 | 1 | 0 | |
CKSEL0 | 0 | 0 |
AVR STUDIO4 から下のボタンでライタ画面を開く(当然、ライターが接続、認識されていることが必要)
ISPmarkⅡ fuseビット設定画面では レ チェックで 0 設定です。
SPIEN はチェック外せないようになっています。これを外すとISP書き込みできなくなる。
AVR STUDIO4 の ISPmarkⅡ "Fuses" TAB 画面
読み込みをオートにしているとタブを開くと自動で読み込めますが、通信ができてないと読み込んだビット値は当てにならない。
コマンドラインの書き込みソフトavrspxのように表を見ながら各ビットを設定するのとは違い、
BODLEVEL 、 CLOCK設定などは プルダウンメニューの中から選択できる。
いくつかのビットはHigh Voltage書き込み用になっている。
使用するライターの設定でISPライターになっているとそのfuse設定が変えられないビットがある。(読み込んでビット状態だけは表示)
これらのビットを変更すると、そのチップはISPライターでは書き込めなくなるので注意。
(下記 参照)
注意点
* ヒューズ設定、その他書き込み関連ビットは安易に書き込むとそれ以後、反応しなくなる恐れがあるのでヒューズ書き込みには注意!
内部発信器付きのATtiny2313のようなチップは出荷時(購入時)には、内部発振に設定されていて発信器ナシでも書き込み可能です。
外部発信器を使うヒューズ設定値にするとそれ以後は外部発信器を付けなければヒューズ設定の書き替えさえ出来なくなり、反応しなくなります。
通信不能の対処
外部発信器の設定を書き込んでしまったら・・・
外部発信器設定を書き込んだら発信器をつなぐしかなさそうです。(ただ、設定した発振数値と多少違う発信でも書き換えできるようです)
チップと通信できなくなったら・・・・パラレル書き込み(PP)
・パラレル書き込み
ISPライターでは、書き込みなどに関連するfuseのビットの設定を変えると、ISPライターではもう通信ができなくなります。ISPライターでチップと通信できないのでfuse書き込みもISP書き込みではもはや無理です。
ISPではなく、PP(パラレル書き込み)可能なライターなどあればチップと通信が可能。 これを使って、ISPライターでも可能なfuse設定に戻すしかないようです。
パラレル書き込みができるライタ
AVR Dragon、 STK500などのライターでpp可能
- twtter
- google+
- hatena