9. 割り込み
CH559チップは、標準MCS51と互換性のある6セットの割り込みを含む14セットの割り込み信号ソースをサポートしています。INT0、T0、INT1、T1、UART0、T2、拡張8セットの割り込みを含む14セットの割り込み信号源をサポートしています。SPI0, TMR3, USB, ADC, UART1, PWM1 GPIO, WDOGの8組の割り込みがあり、そのうちGPIOの割り込みは7つのI/Oピンから選択可能です。
9.1 レジスタ概要
表9.1.1 割り込みベクトル一覧
割り込みソース | エントリーアドレス | 割り込み番号 | 概要 | デフォルト優先度 |
---|---|---|---|---|
INT_NO_INT0 | 0x0003 | 0 | 外部割込み0またはLED制御カード割込み。 bLED_OUT_EN = 0の時は外部割り込み0 bLED_OUT_EN = 1の時はLED制御カード割り込み | 高優先度 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 低優先度 |
INT_NO_TMR0 | 0x000B | 1 | Timer0割り込み | |
INT_NO_INT1 | 0x0013 | 2 | 外部割り込み1 | |
INT_NO_TMR1 | 0x001B | 3 | Timer1割り込み | |
INT_NO_UART0 | 0x0023 | 4 | UART0割り込み | |
INT_NO_TMR2 | 0x002B | 5 | Timer2割り込み | |
INT_NO_SPI0 | 0x0033 | 6 | SPI0割り込み | |
INT_NO_TMR3 | 0x003B | 7 | Timer3割り込み | |
INT_NO_USB | 0x0043 | 8 | USB割り込み | |
INT_NO_ADC | 0x004B | 9 | ADC割り込み | |
INT_NO_UART1 | 0x0053 | 10 | UART1割り込み | |
INT_NO_PWM1 | 0x005B | 11 | PWM1割り込み | |
INT_NO_GPIO | 0x0063 | 12 | GPIO割り込み | |
INT_NO_WDOG | 0x006B | 13 | ウォッチドッグタイマー割り込み |
表9.1.2 割り込み関連レジスタ一覧
名前 | アドレス | 備考 | リセット値 |
---|---|---|---|
IP_EX | E9h | 拡張割り込み優先制御レジスタ | 00h |
IE_EX | E8h | 拡張割り込み許可レジスタ | 00h |
GPIO_IE | CFh | GPIO割り込み許可レジスタ | 00h |
IP | B8h | 割り込み優先制御レジスタ | 00h |
IE | A8h | 割り込み許可レジスタ | 00h |
割り込み許可レジスタ(IE):
ビット | 名前 | アクセス | 備考 | リセット値 |
---|---|---|---|---|
7 | EA | RW | グローバル割り込み許可制御ビット 1: E_DISは0で割り込みを有効にします。 0: 全ての割り込み要求をマスクします。 | 0 |
6 | E_DIS | RW | グローバル割り込みディセーブル制御ビット 1: 全ての割り込み要求をマスクします。 0: EAは1で割り込みを有効にします。 このビットは通常、フラッシュROM操作中に一時的に割り込みを無効にするために使用されます。 | 0 |
5 | ET2 | RW | Timer2割り込み許可ビット 1: T2割り込みを有効にします。 0: マスク。 | 0 |
4 | ES | RW | UART0割り込み許可ビット 1: UART0の割り込みを有効にします。 0: マスク。 | 0 |
3 | ET1 | RW | Timer1割り込み許可ビット 1: T1割り込みを有効にします。 0: マスク。 | 0 |
2 | EX1 | RW | 外部割込み1許可ビット 1: INT1割り込みを有効にします。 0: マスク。 | 0 |
1 | ET0 | RW | Timer0割り込み許可ビット 1: T0割り込みを有効にします。 0: マスク。 | 0 |
0 | EX0 | RW | 外部割込み0、LED制御カード割込み許可ビット 1: bLED_OUT_ENで選択されたINT0/LED割り込みを有効にします。 0: マスク。 | 0 |
拡張割り込み許可レジスタ(IE_EX):
ビット | 名前 | アクセス | 備考 | リセット値 |
---|---|---|---|---|
7 | IE_WDOG | RW | ウォッチドッグタイマ割り込み許可ビット 1: WDOG割り込みを有効にします。 0: マスク。 | 0 |
6 | IE_GPIO | RW | GPIO割り込み許可ビット 1: GPIO_IEで有効な割り込みを有効にします。 0: GPIO_IEのすべての割り込みをマスクします。 | 0 |
5 | IE_PWM1 | RW | PWM1割り込み許可ビット 1: PWM1割り込みを有効にします。 0: マスク。 | 0 |
4 | IE_UART1 | RW | UART1の割り込み許可ビット 1: UART1の割り込みを有効にします。 0: マスク | 0 |
3 | IE_ADC | RW | ADC割り込み許可ビット 1: ADC割り込みを有効にします。 0: マスク。 | 0 |
2 | IE_USB | RW | USB割り込み許可ビット 1: USB割り込みを有効にします。 0: マスク。 | 0 |
1 | IE_TMR3 | RW | Timer3割り込み許可ビット 1: Timer3の割り込みを有効にします。 0: マスク。 | 0 |
0 | IE_SPI0 | RW | SPI0割り込み許可ビット 1: SPI0割り込みを有効にします。 0: マスク。 | 0 |
GPIO割り込み許可レジスタ(GPIO_IE):
ビット | 名前 | アクセス | 備考 | リセット値 |
---|---|---|---|---|
7 | bIE_IO_EDGE | RW | GPIO エッジ割り込みモード許可: 本ビットは0でレベル割り込みモードを選択します。GPIOピン入力が有効レベルの場合、bIO_INT_ACTが1で、常に割り込み要求を行います。GPIO入力が無効レベルの場合は、bIO_INT_ACTが0で割り込み要求をキャンセルします。 本ビットは1でエッジ割り込みモードを選択します。GPIO端子に有効なエッジが入力されると、割り込みフラグbIO_INT_ACTが発生して割り込み要求を行います。この割り込みフラグはソフトウェアではクリアできません。レベル割込みモードでリセットするか、対応する割込みサービスルーチンに入るしかありません。 | 0 |
6 | bIE_RXD1_LO | RW | 本ビットは 1 で UART1 の受信ピン割り込みを有効にします(レベルモードはアクティブロー、エッジモードは立下りエッジ)。 このビットを0にすると無効になります。 iRS485モードではXA/XB差動入力を選択し、非iRS485モードではbIER_PIN_MOD1 = 1/0でRXD1またはRXD1_端子を選択します。 | 0 |
5 | bIE_P5_5_HI | RW | 本ビットは1で、P5.5割り込み(レベルモードはアクティブHigh、エッジモードは立上りエッジ)を有効にします。 無効にするには、このビットを0にします。 | 0 |
4 | bIE_P1_4_LO | RW | 本ビットは1で、P1.4割り込み(レベルモードはアクティブLow、エッジモードは立下りエッジでアクティブ)を有効にします。 無効にするには、このビットを0にします。 | 0 |
3 | bIE_P0_3_LO | RW | 本ビットは1で、P0.3割り込み(レベルモードではローレベル、エッジモードでは立下りエッジで有効)を有効にします。 無効にするには、このビットを0にします。 | 0 |
2 | bIE_P5_7_HI | RW | 本ビットは1で、P5.7割り込み(レベルモードはアクティブHigh、エッジモードは立上りエッジ)を有効にします。 無効にするには、このビットを0にします。 | 0 |
1 | bIE_P4_1_LO | RW | 本ビットは1で、P4.1割り込み(レベルモードではローレベル、エッジモードでは立下りエッジで有効)を有効にします。 無効にするには、このビットを0にします。 | 0 |
0 | bIE_RXD0_LO | RW | 本ビットを1にするとUART0の受信ピン割り込みが有効になります(レベルモードはアクティブロー、エッジモードはアクティブ立下りエッジ)。 無効にするには、本ビットを0にします。 bUART0_PIN_X = 0/1でRXD0またはRXD0_ピンを選択します。 | 0 |
割り込み優先制御レジスタ(IP):
ビット | 名前 | アクセス | 備考 | リセット値 |
---|---|---|---|---|
7 | PH_FLAG | R0 | 高優先度割り込み実行フラグ | 0 |
6 | PL_FLAG | R0 | 低優先度割り込み実行フラグ | 0 |
5 | PT2 | RW | Timer2割り込み優先制御ビット | 0 |
4 | PS | RW | UART0割り込み優先制御ビット | 0 |
3 | PT1 | RW | Timer1割り込み優先制御ビット | 0 |
2 | PX1 | RW | 外部割り込み1優先制御ビット | 0 |
1 | PT0 | RW | timer0割り込み優先制御ビット | 0 |
0 | PX0 | RW | LEDコントロールカードおよび外部割込み0割込み優先制御ビット | 0 |
拡張割り込み優先制御レジスタ(IP_EX):
ビット | 名前 | アクセス | 備考 | リセット値 |
---|---|---|---|---|
7 | bIP_LEVEL | R0 | 現在の割り込みネスティングレベルフラグビットです。 このビットが0の場合、割り込みなしまたは入れ子になっているレベル2の割り込みを意味します。 このビットが1の場合、現在のネストされたレベル1の割り込みを意味します。 | 0 |
6 | bIP_GPIO | RW | GPIO割り込み優先制御ビット | 0 |
5 | bIP_PWM1 | RW | PWM1割り込み優先制御ビット | 0 |
4 | bIP_UART1 | RW | UART1割り込み優先制御ビット | 0 |
3 | bIP_ADC | RW | ADC割り込み優先制御ビット | 0 |
2 | bIP_USB | RW | USB割り込み優先制御ビット | 0 |
1 | bIP_TMR3 | RW | Timer3割り込み優先制御ビット | 0 |
0 | bIP_SPI0 | RW | SPI0割り込み優先制御ビット | 0 |
IPレジスタとIP_EXレジスタは、割り込みの優先度を設定するためのレジスタです。ビットが1に設定されている場合は、対応する割り込みソースの優先度が高くなります。0にクリアすると対応する割り込みソースの優先度が低くなります。同レベルの割り込みソースに対しては、デフォルトの優先順位が設定されています。表9.1.1にデフォルトの優先順位を示します。PH_FLAGとPL_FLAGの組み合わせは、現在の割り込みの優先度を示します。
表9.1.3 現在の割り込み優先度ステータス表示
PH_FLAG | PL_FLAG | 現在の割り込み優先順位の状態 |
---|---|---|
0 | 0 | 現在割り込みなし |
0 | 1 | 優先度の低い割り込みを実行中 |
1 | 0 | 優先度の高い割り込みを実行中 |
1 | 1 | 予期せぬ状態、未知のエラー |