「ATmega328のヒューズ初期化方法」の版間の差分
(ページの作成:「== 概要 == AtmelのAVRマイコンは、6本線のISP接続で簡単にファームウェアのダウンロード等が出来るが、<br> クロックソースを設…」) |
編集の要約なし |
||
| 7行目: | 7行目: | ||
== 必要なもの == | == 必要なもの == | ||
* ヒューズリセットしたいAVRマイコン( | * ヒューズリセットしたいAVRマイコン(ATmega168 / 328) | ||
* Arduino Uno | * Arduino Uno | ||
* 12[V]電源 | * 12[V]電源 | ||
| 19行目: | 19行目: | ||
== 手順 == | == 手順 == | ||
まず、Arduinoに次のスケッチをダウンロードおよび解凍する。<br> | まず、Arduinoに次のスケッチをダウンロードおよび解凍する。<br> | ||
ATmega168用 : [[ファイル:EZ HVFuse for ATmega168.zip|フレームなし|中央]]<br> | |||
ATmega328用 : [[ファイル:EZ HVFuse for ATmega328.zip|フレームなし|中央]]<br> | |||
<br> | |||
次に、下図のように回路を作成する。<br> | 次に、下図のように回路を作成する。<br> | ||
[[ファイル:ATmega328 Chip Erase 1.png|フレームなし|中央]] | [[ファイル:ATmega328 Chip Erase 1.png|フレームなし|中央]] | ||
<br> | |||
回路の作成を終えた後、PCとArduino Uno、ブレッドボードと12[V]電源を接続する。<br> | 回路の作成を終えた後、PCとArduino Uno、ブレッドボードと12[V]電源を接続する。<br> | ||
Arduino IDEを起動し、シリアルモニタを表示させる。<br> | Arduino IDEを起動し、シリアルモニタを表示させる。<br> | ||
2019年12月20日 (金) 22:56時点における版
概要
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
次に、下図のように回路を作成する。
回路の作成を終えた後、PCとArduino Uno、ブレッドボードと12[V]電源を接続する。
Arduino IDEを起動し、シリアルモニタを表示させる。
シリアルモニタの下の設定は、CRのみ(改行なし以外なら他でも可)、9600[bps]を選択する。
DをタイプしてEnterキーで送信すると、ATmega328の検出が行われる。検出に失敗した時は、12[V]電源とUSBケーブルを抜いて回路を確認する。
正しく検出されたら、ヒューズの規定値書込みコマンド"W"を送信すると(確認のために"Y"も送信)、ATmega328に出荷時のヒューズが書き込まれる。
最後に、"R"を送信して、ヒューズが正しく書き込まれているか確認する。
もし、Lock bitsが0xFF以外になっており、ヒューズ設定が書き込まれない場合、"C"コマンドでAmega328全体の初期化が出来る。
但し、Lock bitsだけでなく、Flash ROMやEEPROMの内容も消去される。
この操作でヒューズビットの書き換えが出来るようになるので、再度、"W"コマンドを送信する。
その他、"L"、"H"、"E"、"K"コマンドで、各ヒューズビットやLock Bitsの値を指定して書き込む事も出来る。