📄 irq.c
字号:
/*
*********************************************************
// Copyright (c)2004 Ark Pioneer Microelectronics Ltd.,
// All Rights Reserved
//
// Filename: irq.c
// Version: 1.0
// Created: 2004.01.18 By: Philip
*********************************************************
*/
#include <config.h>
#include <regs.h>
#include <soc.h>
#include <irq.h>
#include <usb.h>
// process other exception
void OtherExcProcess(void)
{
static WORD logInit = 0;
#ifdef DBG
OutputString("\n OtherExcProcess() \n");
#endif
}
// IRQ processing
void IrqProcess(void)
{
BYTE irqType;
// disable usb interrupt request
*(PWORD)USBIEN &= ~bmUSBIEN_TOTAL;
irqType = DetectUsbIrq();
switch (irqType)
{
/*case OUT2_IRQ: //process out2 irq, then clear out2 irq flag
{
/* dma((RAM512 + g_wDMACount * 64), OUT2BUF, 64);
g_wDMACount ++;
if(g_wDMACount == 8)
{
g_wDMACount = 0;
g_bDMA8Packet = TRUE;
}
// clear the IRQ
*(PWORD)OUTIRQ = 0xff;
}
break; */
/*case IN2_IRQ: //process in2 irq, then clear in2 irq flag
{
if(g_wDMACount == 8)
{
g_wDMACount = 0;
g_bDMA8Packet = TRUE;
}
else
{
g_wDMACount ++;
dma(IN2BUF, (RAM512 + g_wDMACount * 64), 64);
}
// clear the IRQ
*(PWORD)INIRQ = 0xff;
}
break; */
case SUDAV_IRQ:
{
*(PWORD)USBIRQ = bmSUDAV; // Clear SUDAV IRQ
//SetupCommand();
// 2004.08.23, philip add
// Maybe now there is an USB setup IRQ pending. So, don't do
// anything here that it consumes many CPU time.
//*(PWORD)USBIRQ = bmSUDAV; // Clear SUDAV IRQ
}
break;
default: // internal error
break;
}
*(PWORD)USBIEN |= bmUSBIEN_TOTAL;
//clear irq status registers
*(BYTE *)SCU_INTFLAG = bmSCU_ALL_INT_CLEAR; // clear SCU interrupt flag
}
BYTE DetectUsbIrq(void)
{
BYTE reVal = 0;
if( ((*(PWORD)OUTIRQ) & bmBIT2) == bmOUT2IRQ )
{
// out2 irq
reVal = OUT2_IRQ;
//return reVal;
}
if( ((*(PWORD)INIRQ) & bmBIT2) == bmIN2IRQ )
{
// in2 irq
reVal = IN2_IRQ;
//return reVal;
}
if( ((*(PWORD)USBIRQ) & bmBIT0) == bmSUDAV )
{
// Setup Data Available Interrupt
reVal = SUDAV_IRQ;
}
return reVal;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -