next up previous
次へ: 割り込み処理の実装 上へ: 割り込み(Interrupts) 戻る: 割り込み(Interrupts)

割り込みの設定

DIOボード(PCI-2726C)は、以下の要因により、コンピュータへ割り 込みを発生させることができる。割り込み発生時には、ドライバ内に登録した割 り込みハンドラが呼び出される。

割り込み要因
SIG1 IN1からの入力信号 STB1からの入力信号
SIG2 IN2からの入力信号 IR.IN1からの入力信号
SIG3 IN3からの入力信号 ACK2からの入力信号
SIG4 IN4からの入力信号 IR.IN2からの入力信号
SIGT インターバルタイマ割り込み
SIGR 外部リセット入力(RSTIN)割り込み

割り込み回路は、割り込み要因選択、割り込み論理設定の各回路によって構成さ れている。

DIOボードへの割り込み設定は、次の手順で行う。
詳細は配布資料(Interface社のPCI-2726C I/O公開資料)を参照すること。

(1) 割り込みの発生要因、割り込みの発生論理を設定する。

割り込みの発生要因、割り込みの発生論理は I/Oポートベースアドレス0+0EhのI/Oポートで設定する。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
EDS4 EDS3 EDS2 EDS1 SIG4 SIG3 SIG2 SIG1

SIGEDSは、次のビットのように対応している。

bit0:bit4、bit1:bit5、bit2:bit6、bit3:bit7

● 割り込み要因割り当て(bit3〜bit0)
割り込み発生要因は、割り込み要因となる信号を選択する。
例: SIG1は 0 のときIN1であり、1のときSTB1である。

● 割り込み発生論理設定(bit7〜bit4)
割り込み発生論理では割り込みになる信号の状態変化(HighからLowに変化したば あいの割り込み、またはLowからHighに変化したばあいの割り込み発生)を選択す る。
例: SIG1の割り込み論理は、EDS1が0のときH $\to$ Lであり、1のときL $\to$ H である。

注. 必ずどちらかが選択されている。電源投入時、デフォルトでは00hで ある。このばあいの割り込み要因はSIG1:IN1, SIG2:IN2, SIG3:IN3, SIG4:IN4であり、割り込み発生論理は全て$H \to L$の変化で割り込みが発生す る。

(2) 割り込みのマスクを設定する。

I/Oポートベースアドレス0+0DhのI/Oポートで割り込みマスクの設定をす る。
指定するビットを1にするとマスクが解除(割り込みが有効)になり、ビットを0に すると割り込みがマスクされる。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
未使用 未使用 SIGR SIGT SIG4 SIG3 SIG2 SIG1
SIGR: 外部割り込み、SIGT: タイマ割り込み
SIG1〜SIG4は、(1)で設定した割り込み要因

割り込みを解除する(使用を止める)ばあいには、上記のレジスタのビットを全て0に 設定して、割り込みをマスク状態にする。

以上がDIOボード側の割り込み設定である。
この状態では、設定した要因によって割り込みは発生するが、ドライバ内に対応 する割り込み処理を登録していないばあいには、何も行われない。

注. PCIデバイスのばあいにはレベルトリガ(割り込みのシェアリング)を採用し ている為、未登録の割り込みが発生すると割り込みをクリアすることができず、 OSがフリーズしてしまう。


next up previous
次へ: 割り込み処理の実装 上へ: 割り込み(Interrupts) 戻る: 割り込み(Interrupts)
MANOME Yoichi 平成19年1月6日