AVR (1)

ATmega16U4 / ATmega32U4 を調べたのでメモ。

日本語化された資料が以下にある。

https://avr.jp/

ATmega

Atmel 社のマイコン AVR の Mega シリーズ。

リセット

BOOTRST と IVSEL で設定する。

BOOTRST IVSEL リセット 割込ベクタ
0 0 0x0000 0x0002
0 1 0x0000 Boot領域先頭 + 0x0002
1 0 Boot領域先頭 0x0002
1 1 Boot領域先頭 Boot領域先頭 + 0x0002

Boot領域は BOOTSZ の値で決まる。

BOOTSZ1 BOOTSZ0 先頭(16U4) 先頭(32U4)
1 1 0x1F00 0x3F00
1 0 0x1E00 0x3E00
0 1 0x1C00 0x3C00
0 0 0x1800 0x3800

BOOTRST, BOOTSZ

ヒューズビットの設定値。

IVSEL

MCU制御レジスタ (MCUCR) の設定値。

HWBE

ヒューズビットの設定値。 0の場合、リセット時にPE2の入力LowでリセットアドレスをBoot領域先頭に変更する。BOOTRSTより優先。

ヒューズビット

プログラム領域とは別にマイコンの動作設定を行う領域。 設定によってはマイコンが動作しなくなったり、プログラム書き換えが出来なくなったりする。

MCUSR

MCUステータスレジスタ。リセット要因フラグがある。フラグは0書き込みでクリア。

ビット MCUSR
5 USBRF USB
4 JTRF JTAG
3 WDRF ウォッチドッグ
2 BORF 低電圧
1 EXTRF 外部リセット
0 PORF 電源ON