INTRDx ( Interrupt Source Register .... Interrupt Device じゃないの???)は、優先順位xで発生している割り込み源の情報を与えるビットマップです。
図1にビット配置を示します。初期値は0です。ハーフトーンの領域は予約領域です。
図1 レジスタの構造
それぞれのビットはデバイスをあらわし、1ならば割り込み要求が起きていることを示します。INTRDxの"x"はIPRxで与えたデバイスの優先順位を表します。ADSP-2191では"x"に4を足した値がIMASKでの優先順位(ビット位置)となります。
C/C++言語用に以下のインターフェースが用意されています。宣言はsysreg.hとdef2191.hで行われています。INTRDxにアクセスする前には必ずIOPGにInterrupt_Controller_Pageを設定してください。
// #include <sysreg.h> // #include <def2191.h> sysreg_write(sysreg_IOPG, Interrupt_Controller_Page) // 割り込みページに設定 io_space_write(INTRD0, 値) // INTRD0に値を設定 変数 = io_space_read(INTRD0) // INTRD0の値を取得。INTRDxも同様
アナログデバイセズが配布しているmcmの中のビット定義ファイルdef2191bit.hから関連するビット定義部分をここに引用します。
// Definition of INTRDx // Note : The bit name is not defined HR. I have defined from IPRx #define MDMA_INT BIT_14 #define FLAGB_INT BIT_13 #define FLAGA_INT BIT_12 #define TIMER2_INT BIT_11 #define TIMER1_INT BIT_10 #define TIMER0_INT BIT_9 #define UARTX_INT BIT_8 #define UARRX_INT BIT_7 #define SP2TX_INT BIT_6 #define SP2RX_INT BIT_5 #define SP1TX_INT BIT_4 #define SP1RX_INT BIT_3 #define SP0TX_INT BIT_2 #define SP0RX_INT BIT_1 #define HOST_INT BIT_0
項目 | マニュアルのページ等 |
---|---|
ビット割り当て | HR B-23 |
割り込みの解説 | HR 3-25 |
デバイスID | HR C-2 |