「ATmega328のヒューズ初期化方法」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の3版が非表示)
21行目: 21行目:
ATmega168用 : [[ファイル:EZ HVFuse for ATmega168.zip|フレームなし|中央]]<br>
ATmega168用 : [[ファイル:EZ HVFuse for ATmega168.zip|フレームなし|中央]]<br>
ATmega328用 : [[ファイル:EZ HVFuse for ATmega328.zip|フレームなし|中央]]<br>
ATmega328用 : [[ファイル:EZ HVFuse for ATmega328.zip|フレームなし|中央]]<br>
ATmegaマルチ : [[ファイル:EZ HVFuse Multi ATmega.zip|フレームなし|中央]]
<br>
<br>
次に、下図のように回路を作成する。<br>
次に、下図のように回路を作成する。<br>
39行目: 40行目:


== チップシグネチャ ==
== チップシグネチャ ==
全てのAVRマイクロコントローラは、デバイスを識別するために 3 バイトのシグネチャコードを備えている。<br>
このコードの読み出しは、シリアルモードでもパラレルモードでも、デバイスがロックされていても可能である。<br>
<br>
これらの3つのバイトは別々のアドレス空間に格納されている。<br>
ATmega48 / 88 / 168 / 328 と ATmega48PB / 88PB / 168PB / 328PB ではデバイスシグネチャバイトに違いがある。<br>
<br>
下表にATmegaのチップシグネチャを示す。<br>
下表にATmegaのチップシグネチャを示す。<br>
<center>
<center>
{| class="wikitable"
{| class="wikitable"
|-
|-
! チップ !! チップシグネチャ
! style="text-align:center; width:300px;" | ATmegaマイコン
! style="text-align:center; width:300px;" | チップシグネチャ
|-
| style="text-align:center;" | ATmega8
| style="text-align:center;" | 0x1E9307
|-
|-
| ATmega8 || 0x1E9307
| style="text-align:center;" | ATmega48<br>ATmega48A
| style="text-align:center;" | 0x1E9205
|-
|-
| ATmega48A || 0x1E9205
| style="text-align:center;" | ATmega48PA
| style="text-align:center;" | 0x1E920A
|-
|-
| ATmega48PA || 0x1E920A
| style="text-align:center;" | ATmega48PB
| style="text-align:center;" | 0x1E9210
|-
|-
| ATmega88A || 0x1E930A
| style="text-align:center;" | ATmega88<br>ATmega88A
| style="text-align:center;" | 0x1E930A
|-
|-
| ATmega88PA || 0x1E930F
| style="text-align:center;" | ATmega88PA
| style="text-align:center;" | 0x1E930F
|-
|-
| ATmega168A || 0x1E9406
| style="text-align:center;" | ATmega88PB
| style="text-align:center;" | 0x1E9316
|-
|-
| ATmega168P<br>ATmega168PA || 0x1E940B
| style="text-align:center;" | ATmega168<br>ATmega168A
| style="text-align:center;" | 0x1E9406
|-
|-
| ATmega328 || 0x1E9514
| style="text-align:center;" | ATmega168P<br>ATmega168PA
| style="text-align:center;" | 0x1E940B
|-
|-
| ATmega328P || 0x1E950F
| style="text-align:center;" | ATmega168PB
| style="text-align:center;" | 0x1E9415
|-
| style="text-align:center;" | ATmega328
| style="text-align:center;" | 0x1E9514
|-
| style="text-align:center;" | ATmega328P
| style="text-align:center;" | 0x1E950F
|-
| style="text-align:center;" | ATmega328PB
| style="text-align:center;" | 0x1E9516
|}
|}
</center>
</center>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:AVR]]
[[カテゴリ:AVR]]

2025年11月21日 (金) 17:32時点における最新版

概要

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
ATmegaマルチ : ファイル:EZ HVFuse Multi ATmega.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の値を指定して書き込む事も出来る。


チップシグネチャ

全てのAVRマイクロコントローラは、デバイスを識別するために 3 バイトのシグネチャコードを備えている。
このコードの読み出しは、シリアルモードでもパラレルモードでも、デバイスがロックされていても可能である。

これらの3つのバイトは別々のアドレス空間に格納されている。
ATmega48 / 88 / 168 / 328 と ATmega48PB / 88PB / 168PB / 328PB ではデバイスシグネチャバイトに違いがある。

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

ATmegaマイコン チップシグネチャ
ATmega8 0x1E9307
ATmega48
ATmega48A
0x1E9205
ATmega48PA 0x1E920A
ATmega48PB 0x1E9210
ATmega88
ATmega88A
0x1E930A
ATmega88PA 0x1E930F
ATmega88PB 0x1E9316
ATmega168
ATmega168A
0x1E9406
ATmega168P
ATmega168PA
0x1E940B
ATmega168PB 0x1E9415
ATmega328 0x1E9514
ATmega328P 0x1E950F
ATmega328PB 0x1E9516