ATmega328のヒューズ初期化方法

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

AtmelのAVRマイコンは、6本線のISP接続で簡単にファームウェアのダウンロード等が出来るが、
クロックソースを設定するヒューズビットの値を間違って書き込んだりすると、ISPでは回復するのが難しい事態に陥る事がある。
そこで、ヒューズリセッター(ヒューズ設定を出荷時状態に戻す)という装置を使用して復帰させる方法がある。
ここでは、Arduino-based AVR High Voltage Programmerをベースに、ヒューズリセッターを作成を記載する。


必要なもの

  • ヒューズリセットしたいAVRマイコン(ATmega168 / 328)
  • Arduino Uno
  • 12[V]電源
  • ブレッドボード
  • NPNトランジスタ(2SC1815)
  • 1[kΩ]抵抗 2本(R1, R4)
  • 10[kΩ]抵抗 2本(R2, R3) ※トランジスタに合わせて1[kΩ]から10[kΩ]の間で調整する
  • ジャンパーワイヤ



手順

まず、Arduinoに次のスケッチをダウンロードおよび解凍する。
ATmega168用 : ファイル:EZ HVFuse for ATmega168.zip
ATmega328用 : ファイル:EZ HVFuse for ATmega328.zip

次に、下図のように回路を作成する。

ATmega328 Chip Erase 1.png


  1. 回路の作成を終えた後、PCとArduino Uno、ブレッドボードと12[V]電源を接続する。
  2. Arduino IDEを起動して、シリアルモニタを表示させる。
    シリアルモニタの下の設定は、CRのみ(改行なし以外なら他でも可)、9600[bps]を選択する。
  3. [D]キーを押下後、[Enter]キーを押下して、ATmegaシリーズの検出を行う。
    検出に失敗した時は、12[V]電源とUSBケーブルを抜いて回路が正常に接続されているか確認する。
  4. 検出に成功した時、ヒューズの規定値書込みコマンド[W]キーを押下すると(確認のために[Y]キーも押下)、出荷時のヒューズをATmegaシリーズに書き込む。
  5. 最後に、[R]キーを押下して、ヒューズが正常に書き込まれているか確認する。


もし、Lock bitsが0xFF以外になっており、ヒューズ設定が書き込まれない場合、[C]キーを押下してATmega全体の初期化が出来る。
ただし、Lock bitsだけでなく、Flash ROMやEEPROMの内容も消去される。
この操作でヒューズビットの書き換えが出来るようになるので、再度、[W]キーを押下する。

その他、[L]、[H]、[E]、[K]キーを押下して、各ヒューズビットやLock Bitsの値を指定して書き込む事も出来る。


チップシグネチャ

下表にATmegaのチップシグネチャを示す。

チップ チップシグネチャ
ATmega8 0x1E9307
ATmega48A 0x1E9205
ATmega48PA 0x1E920A
ATmega88A 0x1E930A
ATmega88PA 0x1E930F
ATmega168A 0x1E9406
ATmega168P
ATmega168PA
0x1E940B
ATmega328 0x1E9514
ATmega328P 0x1E950F