• 検索結果がありません。

割り込みベクタ

ドキュメント内 mega88A.pdf (ページ 34-39)

WDP 0 WDP 1

12. 割り込み

12.1. 割り込みベクタ

表12-1. リセットと割り込みのベクタ プログラム アドレス ベクタ

番号 ATmega 発生元 備考

48P/48PA

ATmega 168A/168PA/

328/328P (注2) ATmega

88A/88PA (注2)

1 $0000 $0000 (注1) $0000 (注1) リセット 電源ON, WDT, BOD等の各種リセット

2 $0001 $0001 $0002 INT0 外部割り込み要求0

3 $0002 $0002 $0004 INT1 外部割り込み要求1

4 $0003 $0003 $0006 PCINT0 (PCI0) ピン変化割り込み要求0

5 $0004 $0004 $0008 PCINT1 (PCI1) ピン変化割り込み要求1

6 $0005 $0005 $000A PCINT2 (PCI2) ピン変化割り込み要求2

7 $0006 $0006 $000C ウォッチドッグ WDT ウォッチドッグ計時完了

8 $0007 $0007 $000E タイマ/カウンタ2 COMPA タイマ/カウンタ2比較A一致

9 $0008 $0008 $0010 タイマ/カウンタ2 COMPB タイマ/カウンタ2比較B一致

10 $0009 $0009 $0012 タイマ/カウンタ2 OVF タイマ/カウンタ2溢れ

11 $000A $000A $0014 タイマ/カウンタ1 CAPT タイマ/カウンタ1捕獲発生

12 $000B $000B $0016 タイマ/カウンタ1 COMPA タイマ/カウンタ1比較A一致

13 $000C $000C $0018 タイマ/カウンタ1 COMPB タイマ/カウンタ1比較B一致

14 $000D $000D $001A タイマ/カウンタ1 OVF タイマ/カウンタ1溢れ

15 $000E $000E $001C タイマ/カウンタ0 COMPA タイマ/カウンタ0比較A一致

16 $000F $000F $001E タイマ/カウンタ0 COMPB タイマ/カウンタ0比較B一致

17 $0010 $0010 $0020 タイマ/カウンタ0 OVF タイマ/カウンタ0溢れ

18 $0011 $0011 $0022 SPI STC SPI 転送完了

19 $0012 $0012 $0024 USART RX USART 受信完了

20 $0013 $0013 $0026 USART UDRE USART 送信緩衝部空き

21 $0014 $0014 $0028 USART TX USART 送信完了

22 $0015 $0015 $002A A/D変換器 ADC A/D変換完了

23 $0016 $0016 $002C EEPROM EE_RDY EEPROM 操作可

24 $0017 $0017 $002E アナログ比較器 ANA_COMP アナログ比較器出力遷移

25 $0018 $0018 $0030 2線直列インターフェース TWI 2線直列インターフェース状態変化

26 $0019 $0019 $0032 SPM命令 SPM_RDY SPM命令操作可

注1: BOOTRSTヒューズがプログラム(0)されると、デバイスはリセットでブート ローダ アドレスへ飛びます。171頁の「ブート ローダ(書き込み中読 み出し可能な自己プログラミング)」をご覧ください。

注2: MCU制御レジスタ(MCUCR)の割り込みベクタ選択(IVSEL)ビットが設定(1)されると、割り込みベクタはブート フラッシュ領域先頭(部)へ 移動されます。そして各割り込みベクタのアドレスは、この表のアドレスがブート フラッシュ領域の先頭アドレスに加算されます。

(訳注) 原書の表12-1.,表12-2.,表12-4.,表12-6.は表12-1.として纏めました。

表12-3.はBOOTRST(ヒューズ)とIVSEL(割り込みベク タ選択ビット)の様々な組み合わせに対するリセット ベクタと割り込みベクタの配置を示 します。プログラムが決して割り込み元を許可しないのなら、割り込みベクタは使用されず、これらの位置に通常のプログラム コー ドが置け ます。これはリセット ベクタが応用領域の一方、割り込みベクタがブート領域、またはその逆の場合でも同様です。

表12-3. リセットと割り込みベクタの配置

割り込みベクタ先頭アドレス BOOTRST IVSEL リセット ベクタ アドレス

ATmega88A/88PA ATmega168A/168PA/328/328P

$0001

$0000

0 $0002

非プログラム(1)

ブート領域先頭アドレス+$0001

$0000

1 ブート領域先頭アドレス+$0002

$0001 ブート領域先頭アドレス

0 $0002

プログラム(0)

ブート領域先頭アドレス+$0001 ブート領域先頭アドレス

1 ブート領域先頭アドレス+$0002

注: ブート領域先頭アドレスは179頁の表27-7.で示されます。

(訳注) 原書の表12-3.,表12-5.と表12-7.は表12-3.として纏めました。

本頁上記はATmega88A/88PA/168A/168PA/328/328Pにのみ適用されます。

ATmega48A/48PA/88A/88PAでの最も代表的且つ一般的なリセットと割り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

$0000 RJMP RESET ;各種リセット

$0001 RJMP EXT_INT0 ;外部割り込み要求0

$0002 RJMP EXT_INT1 ;外部割り込み要求1

$0003 RJMP PCINT0 ;ピン変化割り込み要求0

$0004 RJMP PCINT1 ;ピン変化割り込み要求1

$0005 RJMP PCINT2 ;ピン変化割り込み要求2

$0006 RJMP WDT_OVF ;ウォッチドッグ計時完了

$0007 RJMP TIM2_COMPA ;タイマ/カウンタ2比較A一致

$0008 RJMP TIM2_COMPB ;タイマ/カウンタ2比較B一致

$0009 RJMP TIM2_OVF ;タイマ/カウンタ2溢れ

$000A RJMP TIM1_CAPT ;タイマ/カウンタ1捕獲発生

$000B RJMP TIM1_COMPA ;タイマ/カウンタ1比較A一致

$000C RJMP TIM1_COMPB ;タイマ/カウンタ1比較B一致

$000D RJMP TIM1_OVF ;タイマ/カウンタ1溢れ

$000E RJMP TIM0_COMPA ;タイマ/カウンタ0比較A一致

$000F RJMP TIM0_COMPB ;タイマ/カウンタ0比較B一致

$0010 RJMP TIM0_OVF ;タイマ/カウンタ0溢れ

$0011 RJMP SPI_STC ;SPI転送完了

$0012 RJMP USART_RXC ;USART 受信完了

$0013 RJMP USART_UDRE ;USART 送信緩衝部空

$0014 RJMP USART_TXC ;USART 送信完了

$0015 RJMP ADC ;ADC変換完了

$0016 RJMP EE_RDY ;EEPROM操作可

$0017 RJMP ANA_COMP ;アナログ比較器出力遷移

$0018 RJMP TWI ;2線直列インターフェース状態変化

$0019 RJMP SPM_RDY ;SPM命令操作可

;

$001A RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得

$001B OUT SPH,R16 ;スタック ポインタ上位を初期化

$001C LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$001D OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

ATmega48A/48PA/88A/88PA/168A/168PA/328/328P [データシート] 36 ATmega88A/88PAでBOOTRSTヒューズが非プログラム(1)、ブート領域容量が2Kバイトに設定され、どの割り込みが許可されるのにも先 立ってMCU制御レジスタ(MCUCR)の割り込みベクタ選択(IVSEL)ビットが設定(1)される時の最も代表的且つ一般的なリセットと割り込みの ベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

;各種リセット (BOOTRSTヒューズ=1)

$0000 RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得 (応用プログラム開始)

$0001 OUT SPH,R16 ;スタック ポインタ上位を初期化

$0002 LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$0003 OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

.ORG $0C01 ;ブート プログラム領域が2Kバイトの場合

$0C01 RJMP EXT_INT0 ;外部割り込み要求0

$0C02 RJMP EXT_INT1 ;外部割り込み要求1

$0C19 RJMP ~~ SPM_RDY ;SPM命令操作可

ATmega88A/88PAでBOOTRSTヒューズがプログラム(0)、ブート領域容量が2Kバイトに設定される時の最も代表的且つ一般的なリセットと割 り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

.ORG $0001 ;割り込みベクタ先頭

$0001 RJMP EXT_INT0 ;外部割り込み要求0

$0002 RJMP EXT_INT1 ;外部割り込み要求1

$0019 RJMP SPM_RDY ;SPM命令操作可

;以下、プログラムなど

.ORG $0C00 ;ブート プログラム領域が2Kバイトの場合

;各種リセット (BOOTRSTヒューズ=0)

$0C00 RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得 (プログラム開始)

$0C01 OUT SPH,R16 ;スタック ポインタ上位を初期化

$0C02 LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$0C03 OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

~~~

ATmega88A/88PAでBOOTRSTヒューズがプログラム(0)、ブート領域容量が2Kバイトに設定され、どの割り込みが許可されるのにも先立っ てMCU制御レジスタ(MCUCR)の割り込みベクタ選択(IVSEL)ビットが設定(1)される時の最も代表的且つ一般的なリセットと割り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

.ORG $0C00 ;ブート プログラム領域が2Kバイトの場合

$0C00 RJMP RESET ;各種リセット (BOOTRSTヒューズ=0)

$0C01 RJMP EXT_INT0 ;外部割り込み要求0

$0C02 RJMP EXT_INT1 ;外部割り込み要求1

$0C19 RJMP SPM_RDY ;SPM命令操作可

;

$0C1A RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得 (プログラム開始)

$0C1B OUT SPH,R16 ;スタック ポインタ上位を初期化

$0C1C LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$0C1D OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

~~

ATmega168A/168PA/328/328Pでの最も代表的且つ一般的なリセットと割り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

$0000 JMP RESET ;各種リセット

$0002 JMP EXT_INT0 ;外部割り込み要求0

$0004 JMP EXT_INT1 ;外部割り込み要求1

$0006 JMP PCINT0 ;ピン変化割り込み要求0

$0008 JMP PCINT1 ;ピン変化割り込み要求1

$000A JMP PCINT2 ;ピン変化割り込み要求2

$000C JMP WDT_OVF ;ウォッチドッグ計時完了

$000E JMP TIM2_COMPA ;タイマ/カウンタ2比較A一致

$0010 JMP TIM2_COMPB ;タイマ/カウンタ2比較B一致

$0012 JMP TIM2_OVF ;タイマ/カウンタ2溢れ

$0014 JMP TIM1_CAPT ;タイマ/カウンタ1捕獲発生

$0016 JMP TIM1_COMPA ;タイマ/カウンタ1比較A一致

$0018 JMP TIM1_COMPB ;タイマ/カウンタ1比較B一致

$001A JMP TIM1_OVF ;タイマ/カウンタ1溢れ

$001C JMP TIM0_COMPA ;タイマ/カウンタ0比較A一致

$001E JMP TIM0_COMPB ;タイマ/カウンタ0比較B一致

$0020 JMP TIM0_OVF ;タイマ/カウンタ0溢れ

$0022 JMP SPI_STC ;SPI転送完了

$0024 JMP USART_RXC ;USART 受信完了

$0026 JMP USART_UDRE ;USART 送信緩衝部空

$0028 JMP USART_TXC ;USART 送信完了

$002A JMP ADC ;ADC変換完了

$002C JMP EE_RDY ;EEPROM操作可

$002E JMP ANA_COMP ;アナログ比較器出力遷移

$0030 JMP TWI ;2線直列インターフェース状態変化

$0032 JMP SPM_RDY ;SPM命令操作可

;

$0034 RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得

$0035 OUT SPH,R16 ;スタック ポインタ上位を初期化

$0036 LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$0037 OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

ATmega168A/168PA/328/328PでBOOTRSTヒューズが非プログラム(1)、ブート領域容量が2Kバイトに設定され、どの割り込みが許可され るのにも先立ってMCU制御レジスタ(MCUCR)の割り込みベクタ選択(IVSEL)ビットが設定(1)される時の最も代表的且つ一般的なリセットと 割り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

;各種リセット (BOOTRSTヒューズ=1)

$0000 RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得 (応用プログラム開始)

$0001 OUT SPH,R16 ;スタック ポインタ上位を初期化

$0002 LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$0003 OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

.ORG $1C02/$3C02 ;ブート プログラム領域が2Kバイトの場合

$1C02/$3C02 JMP EXT_INT0 ;外部割り込み要求0

$1C04/$3C04 JMP EXT_INT1 ;外部割り込み要求1

$1C32/$3C32 JMP ~~ SPM_RDY ;SPM命令操作可

ATmega48A/48PA/88A/88PA/168A/168PA/328/328P [データシート] 38 ATmega168A/168PA/328/328PでBOOTRSTヒューズがプログラム(0)、ブート領域容量が2Kバイトに設定される時の最も代表的且つ一般 的なリセットと割り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

.ORG $0002 ;割り込みベクタ先頭

$0002 JMP EXT_INT0 ;外部割り込み要求0

$0004 JMP EXT_INT1 ;外部割り込み要求1

$0032 JMP SPM_RDY ;SPM命令操作可

;以下、プログラムなど

.ORG $1C00/$3C00 ;ブート プログラム領域が2Kバイトの場合

;各種リセット (BOOTRSTヒューズ=0)

$1C00/$3C00 RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得 (プログラム開始)

$1C01/$3C01 OUT SPH,R16 ;スタック ポインタ上位を初期化

$1C02/$3C02 LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$1C03/$3C03 OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

~~~

ATmega168A/168PA/328/328PでBOOTRSTヒューズがプログラム(0)、ブート領域容量が2Kバイトに設定され、どの割り込みが許可される のにも先立ってMCU制御レジスタ(MCUCR)の割り込みベクタ選択(IVSEL)ビットが設定(1)される時の最も代表的且つ一般的なリセットと割 り込みのベクタ アドレス用設定を次に示します。

アドレス ラベル 命令 注釈

.ORG $1C00/$3C00 ;ブート プログラム領域が2Kバイトの場合

$1C00/$3C00 JMP RESET ;各種リセット (BOOTRSTヒューズ=0)

$1C02/$3C02 JMP EXT_INT0 ;外部割り込み要求0

$1C04/$3C04 JMP EXT_INT1 ;外部割り込み要求1

$1C32/$3C32 JMP SPM_RDY ;SPM命令操作可

;

$1C34/$3C34 RESET: LDI R16,HIGH(RAMEND) ;RAM最終アドレス上位を取得 (プログラム開始)

$1C35/$3C35 OUT SPH,R16 ;スタック ポインタ上位を初期化

$1C36/$3C36 LDI R16,LOW(RAMEND) ;RAM最終アドレス下位を取得

$1C37/$3C37 OUT SPL,R16 ;スタック ポインタ下位を初期化

;以下、I/O初期化など

~~

ドキュメント内 mega88A.pdf (ページ 34-39)