Exemple #1
0
void setupIRQEnv()
{
	//mask all interrupt
  	ClrIntStatus();
    //create interrupt handler table
  	creatIntHandlerTable();
    //register interrupt
  	setIRQHandler(nTIMER0_INT, Timer0_ISR); 
  	setIRQHandler(UART0_INT, UARTIrq); 
  	//setIRQHandler(nDMA0_INT, Dma0Done);
  	//setIRQHandler(nDMA1_INT, Dma1Done);
  	setIRQHandler(nDMA2_INT, IsrForUSBDma2);
  	//setIRQHandler(nDMA3_INT, Dma3Done);
  	setIRQHandler(nIIC_INT, IICInt);
  	setIRQHandler(nEXT8_23_INT,ExternIntDevice);
  	setIRQHandler(nUSBD_INT,usbIRQ);
  	
  	
  	
  	 //enable IRQ
  	enable_IRQ();
    //enable device interrupt
    Enable_EInt(IRQ_LAN);
  	Enable_Int(nTIMER0_INT);
  	Enable_Int(UART0_INT);
  	//Enable_Int(nDMA0_INT);
  	//Enable_Int(nDMA1_INT);
  	Enable_Int(nDMA2_INT);
  	//Enable_Int(nDMA3_INT);
  	Enable_Int(nIIC_INT);
  	Enable_Int(nEXT8_23_INT);
  	Enable_Int(nUSBD_INT);
}
Exemple #2
0
// IRQ割り込みハンドラ
void IRQ_handler(void){
	// IRQ割り込みを停止
	disable_IRQ();

	// printf("get IRQ in IRQ handler\n");
	// printf("CPSR (in IRQ_handler) = 0x%08x\n",getmode());

	// Basic IRQ pendingをチェック
	if(*INTERRUPT_IRQ_BASIC_PENDING & 0x01 != 0){
		// タイマー割り込み

		// デバッグ用
		// printf("Timer IRQ start\n");
		// printf("Timer Raw IRQ before: 0x%08x\n",*TIMER_RAWIRQ);
		// printf("irq_pending0 before : 0x%08x\n",*INTERRUPT_IRQ_BASIC_PENDING);

		// タイマ割り込み処理
		timerIRQ_func();

		// 割り込みフラグクリア
		*TIMER_IRQ_CLR = 0;

		// デバッグ用
		// フラグがクリアされたかチェック
		// printf("irq_pending0 after: 0x%08x\n",*INTERRUPT_IRQ_BASIC_PENDING);
		// printf("Timer Raw IRQ after: 0x%08x\n",*TIMER_RAWIRQ);
		// printf("Timer IRQ end\n");
	}
	// TODO: その他の割り込みも調べる

	// IRQ割り込みを許可
	enable_IRQ();
	return;
}
void Timer_attachInterrupt(void (*f)(void)){
	// 割り込みフラグクリア
	*TIMER_IRQ_CLR = 0;
	// 関数ポインタセット
	timerIRQ_func = f;

	// タイマー開始
	Timer_start();

	// 割り込み有効
	enable_timer_interrupt();
	enable_IRQ();
}
Exemple #4
0
void mouse_init()
{
	printf(LNG_MOUSE_SETUP);
	mouse_waitcmd(1);
	outportb(0x64,0xA8);
	mouse_waitcmd(1);
	outportb(0x64,0x20);
	unsigned char status_byte;
	mouse_waitcmd(0);
	status_byte = (inportb(0x60) | 2);
	mouse_waitcmd(1);
	outportb(0x64, 0x60);
	mouse_waitcmd(1);
	outportb(0x60, status_byte);
	mouse_write (0xF6);
	mouse_read();
	mouse_write (0xF4);
	mouse_read();
	add_IRQ_handler(12, mouse_IRQhandler);
	enable_IRQ(12);
	_kprintOK();
}