11. 割込み

11.1 概要

 この章では、ATmega48/88/168で行われる割込みの詳細仕様について説明します。 AVRの割込み処理の一般的な解説については、「リセットと割込み処理」(p.14)を参照してください。

 ATmega48、ATmega88、ATmega168では割込みベクトルは、下記の相違点を除いて、おおよそ同じになっています。

11.2 ATmega48の割込みベクトル

Table 11-1. ATmega48のリセット・ベクトルおよび割込みベクトル

ベクトル番号 アドレス 割込み要因信号 割込み処理の定義内容
1 0x000 RESET 外部リセット端子、パワーオン・リセット、ブラウン・アウト・リセットおよびウォッチドッグ・システム・リセット
2 0x001 INT0 外部割込みリクエスト0
3 0x002 INT1 外部割込みリクエスト1
4 0x003 PCINT0 端子変更割込みリクエスト0
5 0x004 PCINT1 端子変更割込みリクエスト1
6 0x005 PCINT2 端子変更割込みリクエスト2
7 0x006 WDT ウォッチドッグ・タイムアウト割込み
8 0x007 TIMER2 COMPA タイマー/カウンター2 コンペア・マッチA
9 0x008 TIMER2 COMPB タイマー/カウンター2 コンペア・マッチB
10 0x009 TIMER2 OVF タイマー/カウンター2 オーバーフロー
11 0x00A TIMER1 CAPT タイマー/カウンター1 キャプチャ・イベント
12 0x00B TIMER1 COMPA タイマー/カウンター1 コンペア・マッチA
13 0x00C TIMER1 COMPB タイマー/カウンター1 コンペア・マッチB
14 0x00D TIMER1 OVF タイマー/カウンター1 オーバーフロー
15 0x00E TIMER0 COMPA タイマー/カウンター0 コンペア・マッチA
16 0x00F TIMER0 COMPB タイマー/カウンター0 コンペア・マッチB
17 0x010 TIMER0 OVF タイマー/カウンター0 オーバーフロー
18 0x011 SPI, STC SPI シリアル送信完了
19 0x012 USART, RX USART 受信完了
20 0x013 USART, UDRE USART, データ・レジスタ・エンプティ
21 0x014 USART, TX USART, 送信完了
22 0x015 ADC A/Dコンバータ 変換完了
23 0x016 EE READY EEPROM レディ
24 0x017 ANALOG COMP アナログ・コンパレータ
25 0x018 TWI 2線式シリアル・インターフェース
26 0x019 SPM READY ストア・プログラム・メモリ・レディ

 ATmega48において、もっとも典型的で一般的に用いられるリセット・ベクトルと割込みベクトルアドレスの設定は下記のようなものです。

アドレス ラベル         コード                       コメント
0x000                  rjmp   RESET                ; リセット処理ルーチン
0x001                  rjmp   EXT_INT0             ; IRQ0 処理ルーチン
0x002                  rjmp   EXT_INT1             ; IRQ1 処理ルーチン
0x003                  rjmp   PCINT0               ; PCINT0 処理ルーチン
0x004                  rjmp   PCINT1               ; PCINT1 処理ルーチン
0x005                  rjmp   PCINT2               ; PCINT2 処理ルーチン
0x006                  rjmp   WDT                  ; ウォッチドッグ・タイマー 処理ルーチン
0x007                  rjmp   TIM2_COMPA           ; タイマー2 Compare A 処理ルーチン
0x008                  rjmp   TIM2_COMPB           ; タイマー2 Compare B 処理ルーチン
0x009                  rjmp   TIM2_OVF             ; タイマー2 Overflow 処理ルーチン
0x00A                  rjmp   TIM1_CAPT            ; タイマー1 Capture 処理ルーチン
0x00B                  rjmp   TIM1_COMPA           ; タイマー1 Compare A 処理ルーチン
0x00C                  rjmp   TIM1_COMPB           ; タイマー1 Compare B 処理ルーチン
0x00D                  rjmp   TIM1_OVF             ; タイマー1 Overflow 処理ルーチン
0x00E                  rjmp   TIM0_COMPA           ; タイマー0 Compare A 処理ルーチン
0x00F                  rjmp   TIM0_COMPB           ; タイマー0 Compare B 処理ルーチン
0x010                  rjmp   TIM0_OVF             ; タイマー0 Overflow 処理ルーチン
0x011                  rjmp   SPI_STC              ; SPI 送信完了 処理ルーチン
0x012                  rjmp   USART_RXC            ; USART, RX完了 処理ルーチン
0x013                  rjmp   USART_UDRE           ; USART, UDRエンプティ 処理ルーチン
0x014                  rjmp   USART_TXC            ; USART, TX完了 処理ルーチン
0x015                  rjmp   ADC                  ; A/Dコンバータ 変換完了 処理ルーチン
0x016                  rjmp   EE_RDY               ; EEPROM レディ 処理ルーチン
0x017                  rjmp   ANA_COMP             ; アナログ・コンパレータ 処理ルーチン
0x018                  rjmp   TWI                  ; 2線式シリアル・インターフェース 処理ルーチン
0x019                  rjmp   SPM_RDY              ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
       	
0x01A  RESET:          ldi    r16, high(RAMEND)    ; メイン・プログラムの先頭
0x01B                  out    SPH,r16              ; スタックポインタをRAMENDにセット
0x01C                  ldi    r16, low(RAMEND)
0x01D                  out    SPL,r16
0x01E                  sei                         ; 割込みを許可
0x01F                  <instr>   xxx
...     ...            ...    ...

11.3 ATmega88の割込みベクトル

Table 11-2. ATmega88のリセット・ベクトルおよび割込みベクトル


ベクトル番号 アドレス 割込み要因信号 割込み処理の定義内容
1 0x000 RESET 外部リセット端子、パワーオン・リセット、ブラウン・アウト・リセットおよびウォッチドッグ・システム・リセット
2 0x001 INT0 外部割込みリクエスト0
3 0x002 INT1 外部割込みリクエスト1
4 0x003 PCINT0 端子変更割込みリクエスト0
5 0x004 PCINT1 端子変更割込みリクエスト1
6 0x005 PCINT2 端子変更割込みリクエスト2
7 0x006 WDT ウォッチドッグ・タイムアウト割込み
8 0x007 TIMER2 COMPA タイマー/カウンター2 コンペア・マッチA
9 0x008 TIMER2 COMPB タイマー/カウンター2 コンペア・マッチB
10 0x009 TIMER2 OVF タイマー/カウンター2 オーバーフロー
11 0x00A TIMER1 CAPT タイマー/カウンター1 キャプチャ・イベント
12 0x00B TIMER1 COMPA タイマー/カウンター1 コンペア・マッチA
13 0x00C TIMER1 COMPB タイマー/カウンター1 コンペア・マッチB
14 0x00D TIMER1 OVF タイマー/カウンター1 オーバーフロー
15 0x00E TIMER0 COMPA タイマー/カウンター0 コンペア・マッチA
16 0x00F TIMER0 COMPB タイマー/カウンター0 コンペア・マッチB
17 0x010 TIMER0 OVF タイマー/カウンター0 オーバーフロー
18 0x011 SPI, STC SPI シリアル送信完了
19 0x012 USART, RX USART 受信完了
20 0x013 USART, UDRE USART, データ・レジスタ・エンプティ
21 0x014 USART, TX USART, 送信完了
22 0x015 ADC A/Dコンバータ 変換完了
23 0x016 EE READY EEPROM レディ
24 0x017 ANALOG COMP アナログ・コンパレータ
25 0x018 TWI 2線式シリアル・インターフェース
26 0x019 SPM READY ストア・プログラム・メモリ・レディ

注意:

  1. BOOTRSTヒューズ・ビットがプログラムされている場合、デバイスはリセット時にブートローダー領域へジャンプします。「ブート・ローダーのサポート – 読み書き並行自己プログラミング ATmega88/ATmega168」(p.268)を参照してください。
  2. MCUCRレジスタのIVSELビットがセットされている場合、割込みベクトルはブートローダー領域の先頭アドレスに移動されます。その場合、それぞれの割込みベクトルのアドレスは、この表中のアドレスにブートローダー領域の先頭アドレスを加算したものとなります。

 Table 11-3 にリセット・ベクトルと割込みベクトルの配置が、BOOTRSTヒューズ・ビットとIVSELビットの設定によってどのように変わるかを示します。もし、プログラム中でまったく割込み要因を有効にしない場合、割込みベクトルは使用されないため、この領域には通常のプログラム・コードを配置することができます。リセット・ベクトルがアプリケーション領域に、割込みベクトルがブートローダー領域にある場合、または、その逆の場合についても同様です。

Table 11-3. ATmega88におけるリセット・ベクトルと割込みベクトルの配置(1)

BOOTRST IVSEL リセット・アドレス 割込みベクトル先頭アドレス
1 0 0x000 0x001
1 1 0x000 ブート・リセット・アドレス + 0x001
0 0 ブート・リセット・アドレス 0x001
0 1 ブート・リセット・アドレス ブート・リセット・アドレス + 0x001

注意: 1. ブート時リセット・アドレスについては、Table 26-6 (p.280)に記載されています。BOOTRSTヒューズ・ビットについては、「1」はプログラムされていないことを、「0」はプログラムされていることを表します。

 ATmega88において、もっとも典型的で一般的に用いられるリセット・ベクトルと割込みベクトルアドレスの設定は下記のようなものです。

アドレス ラベル         コード                       コメント
0x000                  rjmp   RESET               ; Reset 処理ルーチン
0x001                  rjmp   EXT_INT0            ; IRQ0 処理ルーチン
0x002                  rjmp   EXT_INT1            ; IRQ1 処理ルーチン
0x003                  rjmp   PCINT0              ; PCINT0 処理ルーチン
0x004                  rjmp   PCINT1              ; PCINT1 処理ルーチン
0x005                  rjmp   PCINT2              ; PCINT2 処理ルーチン
0x006                  rjmp   WDT                 ; ウォッチドッグ・タイマー 処理ルーチン
0x007                  rjmp   TIM2_COMPA          ; タイマー2 Compare A 処理ルーチン
0X008                  rjmp   TIM2_COMPB          ; タイマー2 Compare B 処理ルーチン
0x009                  rjmp   TIM2_OVF            ; タイマー2 Overflow 処理ルーチン
0x00A                  rjmp   TIM1_CAPT           ; タイマー1 Capture 処理ルーチン
0x00B                  rjmp   TIM1_COMPA          ; タイマー1 Compare A 処理ルーチン
0x00C                  rjmp   TIM1_COMPB          ; タイマー1 Compare B 処理ルーチン
0x00D                  rjmp   TIM1_OVF            ; タイマー1 Overflow 処理ルーチン
0x00E                  rjmp   TIM0_COMPA          ; タイマー0 Compare A 処理ルーチン
0x00F                  rjmp   TIM0_COMPB          ; タイマー0 Compare B 処理ルーチン
0x010                  rjmp   TIM0_OVF            ; タイマー0 Overflow 処理ルーチン
0x011                  rjmp   SPI_STC             ; SPI 送信完了 処理ルーチン
0x012                  rjmp   USART_RXC           ; USART, RX 完了 処理ルーチン
0x013                  rjmp   USART_UDRE          ; USART, UDR エンプティ 処理ルーチン
0x014                  rjmp   USART_TXC           ; USART, TX 完了 処理ルーチン
0x015                  rjmp   ADC                 ; A/Dコンバータ 変換完了 処理ルーチン
0x016                  rjmp   EE_RDY              ; EEPROM レディ 処理ルーチン
0x017                  rjmp   ANA_COMP            ; アナログ・コンパレータ 処理ルーチン
0x018                  rjmp   TWI                 ; 2線式シリアル・インターフェース 処理ルーチン
0x019                  rjmp   SPM_RDY             ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
0x01A   RESET:         ldi    r16, high(RAMEND)   ; メインプログラム開始
0x01B                  out    SPH,r16             ; スタックポインタをRAMENDに設定
0x01C                  ldi    r16, low(RAMEND)
0x01D                  out    SPL,r16
0x01E                  sei                        ; 割込みを許可
0x01F                  <instr>   xxx

 BOOTRSTヒューズ・ビットはプログラムされていない、ブートローダー領域のサイズは2Kバイトに設定、どの割込みが有効になるよりも前にMCUCRレジスタのIVSELビットがセットされる、という条件での、ATmega88における最も典型的でよく用いられるリセット・ベクトルと割込みベクトルアドレスの設定は、以下のようになります。

アドレス ラベル         コード                       コメント
0x000   RESET:         ldi     r16,high(RAMEND)    ; メインプログラム開始
0x001                  out     SPH,r16             ; スタックポインタをRAMENDに設定
0x002                  ldi     r16,low(RAMEND)
0x003                  out     SPL,r16
0x004                  sei                         ; 割込みを許可
0x005                  <instr>    xxx
;
.org 0xC01
0xC01                  rjmp    EXT_INT0            ; IRQ0 処理ルーチン
0xC02                  rjmp    EXT_INT1            ; IRQ1 処理ルーチン
...                    ...     ...                 ;
0xC19                  rjmp    SPM_RDY             ; ストア・プログラム・メモリ・レディ 処理ルーチン

 BOOTRSTヒューズ・ビットがプログラムされている、ブートローダー領域のサイズは2Kバイトに設定、という条件での、ATmega88における最も典型的でよく用いられるリセット・ベクトルと割込みベクトルアドレスの設定は、以下のようになります。

アドレス ラベル         コード                       コメント
.org 0x001
0x001                  rjmp    EXT_INT0           ; IRQ0 処理ルーチン
0x002                  rjmp    EXT_INT1           ; IRQ1 処理ルーチン
...                    ...     ...                ;
0x019                  rjmp    SPM_RDY            ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
.org 0xC00
0xC00   RESET:         ldi     r16,high(RAMEND)   ; メインプログラム開始
0xC01                  out     SPH,r16            ; スタックポインタをRAMENDに設定
0xC02                  ldi     r16,low(RAMEND)
0xC03                  out     SPL,r16
0xC04                  sei                        ; 割込みを許可
0xC05                  <instr>    xxx

 BOOTRSTヒューズ・ビットがプログラムされている、ブートローダー領域のサイズは2Kバイトに設定、どの割込みが有効になるよりも前にMCUCRレジスタのIVSELビットがセットされる、という条件での、ATmega88における最も典型的でよく用いられるリセット・ベクトルと割込みベクトルアドレスの設定は、以下のようになります。

アドレス ラベル         コード                       コメント
;
.org 0xC00
0xC00                  rjmp    RESET               ; Reset 処理ルーチン
0xC01                  rjmp    EXT_INT0            ; IRQ0 処理ルーチン
0xC02                  rjmp    EXT_INT1            ; IRQ1 処理ルーチン
...                    ...     ...                 ;
0xC19                  rjmp    SPM_RDY             ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
0xC1A     RESET:       ldi     r16,high(RAMEND)    ; メインプログラム開始
0xC1B                  out     SPH,r16             ; スタックポインタをRAMENDに設定
0xC1C                  ldi     r16,low(RAMEND)
0xC1D                  out     SPL,r16
0xC1E                  sei                         ; 割込みを許可
0xC1F                  <instr>    xxx

11.4 ATmega168の割込みベクトル

Table 11-4. ATmega168のリセットベクトルおよび割込みベクトル

ベクトル番号 アドレス 割込み要因信号 割込み処理の定義内容
1 0x000 RESET 外部リセット端子、パワーオン・リセット、ブラウン・アウト・リセットおよびウォッチドッグ・システム・リセット
2 0x002 INT0 外部割込みリクエスト0
3 0x004 INT1 外部割込みリクエスト1
4 0x006 PCINT0 端子変更割込みリクエスト0
5 0x008 PCINT1 端子変更割込みリクエスト1
6 0x00A PCINT2 端子変更割込みリクエスト2
7 0x00C WDT ウォッチドッグ・タイムアウト割込み
8 0x00E TIMER2 COMPA タイマー/カウンター2 コンペア・マッチA
9 0x010 TIMER2 COMPB タイマー/カウンター2 コンペア・マッチB
10 0x012 TIMER2 OVF タイマー/カウンター2 オーバーフロー
11 0x014 TIMER1 CAPT タイマー/カウンター1 キャプチャ・イベント
12 0x016 TIMER1 COMPA タイマー/カウンター1 コンペア・マッチA
13 0x018 TIMER1 COMPB タイマー/カウンター1 コンペア・マッチB
14 0x01A TIMER1 OVF タイマー/カウンター1 オーバーフロー
15 0x01C TIMER0 COMPA タイマー/カウンター0 コンペア・マッチA
16 0x01E TIMER0 COMPB タイマー/カウンター0 コンペア・マッチB
17 0x020 TIMER0 OVF タイマー/カウンター0 オーバーフロー
18 0x022 SPI, STC SPI シリアル送信完了
19 0x024 USART, RX USART 受信完了
20 0x026 USART, UDRE USART, データ・レジスタ・エンプティ
21 0x028 USART, TX USART, 送信完了
22 0x02A ADC A/Dコンバータ 変換完了
23 0x02C EE READY EEPROM レディ
24 0x02E ANALOG COMP アナログ・コンパレータ
25 0x030 TWI 2線式シリアル・インターフェース
26 0x032 SPM READY ストア・プログラム・メモリ・レディ

注意:

  1. BOOTRSTヒューズ・ビットがプログラムされている場合、デバイスはリセット時にブートローダー領域へジャンプします。「ブート・ローダーのサポート – 読み書き並行自己プログラミング ATmega88/ATmega168」(p.268)を参照してください。
  2. MCUCRレジスタのIVSELビットがセットされている場合、割込みベクトルはブートローダー領域の先頭アドレスに移動されます。その場合、それぞれの割込みベクトルのアドレスは、この表中のアドレスにブートローダー領域の先頭アドレスを加算したものとなります。

 Table 11-5 にリセット・ベクトルと割込みベクトルの配置が、BOOTRSTヒューズ・ビットとIVSELビットの設定によってどのように変わるかを示します。もし、プログラム中でまったく割込み要因を有効にしない場合、割込みベクトルは使用されないため、この領域には通常のプログラム・コードを配置することができます。リセット・ベクトルがアプリケーション領域に、割込みベクトルがブートローダー領域にある場合、または、その逆の場合についても同様です。

Table 11-5. ATmega168におけるリセット・ベクトルと割込みベクトルの配置(1)

(訳注:原文の割込みベクトル先頭アドレスが間違っているのを修正)
BOOTRST IVSEL リセット・アドレス 割込みベクトル先頭アドレス
1 0 0x000 0x002
1 1 0x000 ブート・リセット・アドレス + 0x002
0 0 ブート・リセット・アドレス 0x002
0 1 ブート・リセット・アドレス ブート・リセット・アドレス + 0x002

注意: 1. ブート時リセット・アドレスについては、Table 26-6 (p.280)に記載されています。BOOTRSTヒューズ・ビットについては、「1」はプログラムされていないことを、「0」はプログラムされていることを表します。

 ATmega168において、もっとも典型的で一般的に用いられるリセット・ベクトルと割込みベクトルアドレスの設定は下記のようなものです。

アドレス ラベル         コード                       コメント
0x0000                 jmp      RESET               ; Reset 処理ルーチン
0x0002                 jmp      EXT_INT0            ; IRQ0 処理ルーチン
0x0004                 jmp      EXT_INT1            ; IRQ1 処理ルーチン
0x0006                 jmp      PCINT0              ; PCINT0 処理ルーチン
0x0008                 jmp      PCINT1              ; PCINT1 処理ルーチン
0x000A                 jmp      PCINT2              ; PCINT2 処理ルーチン
0x000C                 jmp      WDT                 ; ウォッチドッグ・タイマー 処理ルーチン
0x000E                 jmp      TIM2_COMPA          ; タイマー2 Compare A 処理ルーチン
0x0010                 jmp      TIM2_COMPB          ; タイマー2 Compare B 処理ルーチン
0x0012                 jmp      TIM2_OVF            ; タイマー2 Overflow 処理ルーチン
0x0014                 jmp      TIM1_CAPT           ; タイマー1 Capture 処理ルーチン
0x0016                 jmp      TIM1_COMPA          ; タイマー1 Compare A 処理ルーチン
0x0018                 jmp      TIM1_COMPB          ; タイマー1 Compare B 処理ルーチン
0x001A                 jmp      TIM1_OVF            ; タイマー1 Overflow 処理ルーチン
0x001C                 jmp      TIM0_COMPA          ; タイマー0 Compare A 処理ルーチン
0x001E                 jmp      TIM0_COMPB          ; タイマー0 Compare B 処理ルーチン
0x0020                 jmp      TIM0_OVF            ; タイマー0 Overflow 処理ルーチン
0x0022                 jmp      SPI_STC             ; SPI 送信完了 処理ルーチン
0x0024                 jmp      USART_RXC           ; USART, RX 完了 処理ルーチン
0x0026                 jmp      USART_UDRE          ; USART, UDR エンプティ 処理ルーチン
0x0028                 jmp      USART_TXC           ; USART, TX 完了 処理ルーチン
0x002A                 jmp      ADC                 ; A/Dコンバータ 変換完了 処理ルーチン
0x002C                 jmp      EE_RDY              ; EEPROM レディ 処理ルーチン
0x002E                 jmp      ANA_COMP            ; アナログ・コンパレータ 処理ルーチン
0x0030                 jmp      TWI                 ; 2線式シリアル・インターフェース 処理ルーチン
0x0032                 jmp      SPM_RDY             ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
0x0033  RESET:         ldi      r16, high(RAMEND)   ; メインプログラム開始
0x0034                 out      SPH,r16             ; スタックポインタをRAMENDに設定
0x0035                 ldi      r16, low(RAMEND)
0x0036                 out      SPL,r16
0x0037                 sei                          ; 割込みを許可
0x0038                 <instr>    xxx
...     ...     ...   ...

 BOOTRSTヒューズ・ビットはプログラムされていない、ブートローダー領域のサイズは2Kバイトに設定、どの割込みが有効になるよりも前にMCUCRレジスタのIVSELビットがセットされる、という条件での、ATmega168における最も典型的でよく用いられるリセット・ベクトルと割込みベクトルアドレスの設定は、以下のようになります。

アドレス ラベル         コード                       コメント
0x0000   RESET:        ldi     r16,high(RAMEND)   ; メインプログラム開始
0x0001                 out     SPH,r16            ; スタックポインタをRAMENDに設定
0x0002                 ldi     r16,low(RAMEND)
0x0003                 out     SPL,r16
0x0004                 sei                        ; 割込みを許可
0x0005                 <instr>    xxx
;
.org 0xC02
0x1C02                 jmp     EXT_INT0           ; IRQ0 処理ルーチン
0x1C04                 jmp     EXT_INT1           ; IRQ1 処理ルーチン
...                    ...     ...                ;
0x1C32                 jmp     SPM_RDY            ; ストア・プログラム・メモリ・レディ 処理ルーチン

 BOOTRSTヒューズ・ビットがプログラムされている、ブートローダー領域のサイズは2Kバイトに設定、という条件での、ATmega168における最も典型的でよく用いられるリセット・ベクトルと割込みベクトルアドレスの設定は、以下のようになります。

アドレス ラベル         コード                       コメント
.org 0x0002
0x0002                 jmp         EXT_INT0         ; IRQ0 処理ルーチン
0x0004                 jmp         EXT_INT1         ; IRQ1 処理ルーチン
...                    ...         ...              ;
0x0032                 jmp         SPM_RDY          ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
.org 0x1C00
0x1C00  RESET:         ldi         r16,high(RAMEND) ; メインプログラム開始
0x1C01                 out         SPH,r16          ; スタックポインタをRAMENDに設定
0x1C02                 ldi         r16,low(RAMEND)
0x1C03                 out         SPL,r16
0x1C04                 sei                          ; 割込みを許可
0x1C05                 <instr>    xxx

 BOOTRSTヒューズ・ビットがプログラムされている、ブートローダー領域のサイズは2Kバイトに設定、どの割込みが有効になるよりも前にMCUCRレジスタのIVSELビットがセットされる、という条件での、ATmega168における最も典型的でよく用いられるリセット・ベクトルと割込みベクトルアドレスの設定は、以下のようになります。

アドレス ラベル         コード                       コメント
;
.org 0x1C00
0x1C00                   jmp      RESET               ; Reset 処理ルーチン
0x1C02                   jmp      EXT_INT0            ; IRQ0 処理ルーチン
0x1C04                   jmp      EXT_INT1            ; IRQ1 処理ルーチン
...                      ...      ...                 ;
0x1C32                   jmp      SPM_RDY             ; ストア・プログラム・メモリ・レディ 処理ルーチン
;
0x1C33   RESET:          ldi      r16,high(RAMEND)    ; メインプログラム開始
0x1C34                   out      SPH,r16             ; スタックポインタをRAMENDに設定
0x1C35                   ldi      r16,low(RAMEND)
0x1C36                   out      SPL,r16
0x1C37                   sei                          ; 割込みを許可 
0x1C38                   <instr>     xxx

11.4.1 割込みベクトルをアプリケーション領域、またはブートローダー領域に移動するには

 割込みベクトル・テーブルの配置は、MCUコントロール・レジスタによって設定変更できます。

11.5 レジスタ詳細

11.5.1 MCUCR – MCU コントロール・レジスタ

ビット 7 6 5 4 3 2 1 0
0x35 (0x55) - - - PUD - - IVSEL IVCE MCUCR
Read/Write R R R R/W R R R/W R/W
初期値 0 0 0 0 0 0 0 0

目次に戻る