USBコネクタを接続した状態です
基本的にUSBコントローラで何か処理すべきイベントが発生したらレジスタを読みに行って
それぞれの処理に分岐させます。
分岐処理の本体をusb_int()という関数にまとめ、ハード割込みで起動するようにしました
それぞれの処理に分岐させます。
分岐処理の本体をusb_int()という関数にまとめ、ハード割込みで起動するようにしました
void far usb_int_tst(void) /* USBN9603割込みハンドラ */ { static unsigned char x=0; _INT_ENTR(); usb_int(); /* 通信フロー */ led(x++); ei(); outp(IPFW,0x24); /* EOI command */ _INT_RET(); } void main(void) { int x; char str[32]; di(); devini(); /* 周辺初期化 */ InitUSB(); /* USB初期化 */ set_vect(0x24,usb_int_tst); /*割込みベクタ設定 */ outp(IMKW,0xef); /* INTR4 MASK解除 */ ei(); while(1){ }; }
USBN9603の割込み端子をモニタしてみると5ms間隔位で割り込みが発生してます