📄 int.c
字号:
if(--ucTimer0Cnt)
{
//1231 sephinroth start
if((GET_INPUTSOURCE_TYPE() == _SOURCE_DVI) && (bDDCSDADVI == _HIGH))
{
ucDdcSdaCnt = 0;
}
if((GET_INPUTSOURCE_TYPE() == _SOURCE_DVI) && (bDDCSDADVI == _LOW))
{
ucDdcSdaCnt++;
if(ucDdcSdaCnt >= 500)
{
CDdcSclToggle();
}
}
//1231 sephinroth end
}
else
{
if(bTimer0Ctrl == _FALSE)
{
CTimerDecreaseTimerCnt();
}
ucTimer0Cnt = 10;
#if(_DCR_MODE == _DCR_TYPE_3)
ucDcrTimer += 1; // 10msec, add by DCR add 20071219
#endif
}
}
#if(_DEBUG_TOOL == _RS232)
//-------------------------------------------------------------------------------------------------------------------
// UART interrupt function (4)
//-------------------------------------------------------------------------------------------------------------------
void IntProcUart(void) interrupt 4
{
if(TI)
TI = 0;
if(RI)
{
if(!bUartCommandStart)
{
pUartData[0] = SBUF;
switch(pUartData[0])
{
case 0x5a:
case 0x5b:
case 0x5c:
case 0x5d:
case 0x41:
bUartCommandStart = _TRUE;
ucUartCommandNum = 1;
break;
default:
bUartCommandStart = _FALSE;
break;
}
}
else
{
if(ucUartCommandNum < 5)
{
pUartData[ucUartCommandNum] = SBUF;
ucUartCommandNum++;
if(ucUartCommandNum == 5)
{
bUartCommandStart = _FALSE;
bUartCommandSuccess = _TRUE;
ucUartCommandNum = 1;
}
}
}
RI = 0;
}
}
#endif // End of #if(_DEBUG_TOOL == _RS232)
//-------------------------------------------------------------------------------------------------------------------
// UART interrupt function (2)
//-------------------------------------------------------------------------------------------------------------------
#if(_DEBUG_TOOL == _ISP_FOR_RTD2120)
//0811 sephinroth start
#if(_DDCCI_SUPPORT == _ON)
#define _I2C_COMMAND_LENGTH 4
void IntIspAndEdid(void) interrupt 2
{
BYTE FLAG;
FLAG=MCU_I2C_STATUS_FF2B;
EX1 = 0;
if((FLAG&0x01)!=0) // SLAVE MATCH
{
RamI2cCommandIndex=0;
}
else if((FLAG&0x04)!=0) // Receieved data
{
if(!GET_FACTORY_MODE())
{
if(RamI2cCommandIndex==0)
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF28;
if(RamI2cCommandIndex<9)//AK0816
{
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF29;
if(((RamI2cCommandData[1]&0x7F)+3)==RamI2cCommandIndex) bGetMcuDdcciCommand=_TRUE;
}
}
else
{ //I2C COMMAND FOR FACTORY MODE
if (RamI2cCommandIndex==0)
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF28;
if(RamI2cCommandIndex<9) //AK0816
{
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF29;
}
if(RamI2cCommandIndex==_I2C_COMMAND_LENGTH)
{
if(RamI2cCommandData[3]==(BYTE)(RamI2cCommandData[0]+ RamI2cCommandData[1] + RamI2cCommandData[2]))
{
bAlignmentDo=_TRUE;
RamI2cCommandData[3] =0xFC; //I2c Command
MCU_I2C_DATA_OUT_FF2A=RamI2cCommandData[2];
}
else
{
MCU_I2C_DATA_OUT_FF2A =0xFC; //CHECKSUM ERROR !
RamI2cCommandData[3]=0xAA;
}
}
}
}
else if((FLAG&0x08)!=0) // Transmit data
{
WORD i = 0xffff;
#if(_TMDS_SUPPORT==_ON)
if((GET_INPUTSOURCE_TYPE()==_SOURCE_VGA) || (!GET_POWERSTATUS()))//1211 sephinroth
{
do
{
Delay5us();
}while (bDDCSCLVGA && --i);
}
else
{
do
{
Delay5us();
}while (bDDCSCLDVI && --i);
}
#else
do
{
Delay5us();
}while (bDDCSCLVGA && --i);
#endif
if(GET_FACTORY_MODE())
{
MCU_I2C_DATA_OUT_FF2A=RamI2cCommandData[3];
}
else
{
if(((ucMcuDdcciReplyBuffer[1]&0x7F)+2)==(RamI2cCommandIndex))
{
ucMcuDdcciReplyBuffer[1]=0x80;
ucMcuDdcciReplyBuffer[2]=0xBE;
MCU_I2C_DATA_OUT_FF2A=0x6E;//ucMcuDdcciReplyBuffer[0];
RamI2cCommandIndex=0;
}
else
{
RamI2cCommandIndex++;
MCU_I2C_DATA_OUT_FF2A=ucMcuDdcciReplyBuffer[RamI2cCommandIndex];
}
}
}
MCU_I2C_STATUS_FF2B=0;
EX1 = 1;
}
#else
void IntProcDdcci(void) interrupt 2
{
BYTE tempbuf;
EA=0;
if(!bRunCommand)
{
tempbuf = MCU_I2C_STATUS_FF2B;
if(tempbuf & 0x08)
MCU_I2C_DATA_OUT_FF2A = TxBUF;
if(tempbuf & 0x01)
ucDdcciCommandNumber = 0;
if(tempbuf & 0x02)
ucDdcciCommandNumber=0;
if(tempbuf & 0x04)
{
if(ucDdcciCommandNumber==0)
ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_SUB_IN_FF28;
ucDdcciCommandNumber++;
ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_DATA_IN_FF29;
bRunCommand=_TRUE;
}
MCU_I2C_STATUS_FF2B = tempbuf & 0xc0;
}
EA=1;
}
#endif //End of #if(_DDCCI_SUPPORT == _ON)
#endif // #if(_DEBUG_TOOL == _ISP_FOR_RTD2120)
//0811 sephinroth end
#if(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)
#if(_DDCCI_SUPPORT == _ON)
#define _I2C_COMMAND_LENGTH 4
void IntIspAndEdid(void) interrupt 2
{
BYTE FLAG;
FLAG=MCU_I2C_STATUS_FF27;
if(GET_FACTORY_MODE())
MCU_I2C_IRQ_CTRL2_FF2A &= 0xDF; //host write/read enable
EX1 = 0;
if((FLAG&0x01)!=0) // SLAVE MATCH
{
RamI2cCommandIndex=0;
}
else if((FLAG&0x04)!=0) // Receieved data
{
if(!GET_FACTORY_MODE())
{
if(RamI2cCommandIndex==0)
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF24;
if(RamI2cCommandIndex<9)//AK0816
{
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF25;
if(((RamI2cCommandData[1]&0x7f)+3)==RamI2cCommandIndex)
bGetMcuDdcciCommand=_TRUE;
}
}
else //Factory mode
{ //I2C COMMAND FOR FACTORY MODE
if (RamI2cCommandIndex==0)
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF24;
if(RamI2cCommandIndex<9) //AK0816
{
RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF25;
}
if(RamI2cCommandIndex==_I2C_COMMAND_LENGTH)
{
MCU_I2C_IRQ_CTRL2_FF2A |= 0x20;
if(RamI2cCommandData[3]==(BYTE)(RamI2cCommandData[0]+ RamI2cCommandData[1] + RamI2cCommandData[2]))
{
bAlignmentDo=_TRUE;
RamI2cCommandData[3] =0xFC; //I2c Command
MCU_I2C_DATA_OUT_FF26=RamI2cCommandData[2];
}
else
{
MCU_I2C_DATA_OUT_FF26 =0xFC; //CHECKSUM ERROR !
RamI2cCommandData[3]=0xAA;
}
}
}
}
/*
else if((FLAG&0x02)!=0) // sub latch
{
if(((MCU_I2C_SET_SLAVE_FF23&0xFE)==0x7C))//slaver address
{
Delay5us();
Delay5us();
Delay5us();
Delay5us();
Delay5us();
Delay5us();
Delay5us();
if(MCU_I2C_SUB_IN_FF24==0x55) //sub adddress
{
MCU_I2C_IRQ_CTRL2_FF2A |= 0x20;
RamI2cCommandData[0]=MCU_I2C_SUB_IN_FF24;
bAlignmentDo=_TRUE; //0xBBの0x55ぃ浪琩CHECKSUM
MCU_I2C_DATA_OUT_FF26 =0x00; //CHECKSUM ERROR !
RamI2cCommandData[3]=0xFC; //I2c Command
}
}
}
*/
else if((FLAG&0x08)!=0) // Transmit data
{
if(GET_FACTORY_MODE())
{
MCU_I2C_IRQ_CTRL2_FF2A |= 0x20;
MCU_I2C_DATA_OUT_FF26=RamI2cCommandData[3];
}
else
{
if(((ucMcuDdcciReplyBuffer[1]&0x7F)+2)==(RamI2cCommandIndex))
{
ucMcuDdcciReplyBuffer[1]=0x80;
ucMcuDdcciReplyBuffer[2]=0xBE;
MCU_I2C_DATA_OUT_FF26=0x6E;//ucMcuDdcciReplyBuffer[0];
//RamI2cCommandIndex=0;
MCU_I2C_IRQ_CTRL2_FF2A = (MCU_I2C_IRQ_CTRL2_FF2A | _BIT6) & (~_BIT5); //host write/read enable
MCU_I2C_DATA_OUT_FF26 = 0x00;
}
else
{
RamI2cCommandIndex++;
MCU_I2C_DATA_OUT_FF26=ucMcuDdcciReplyBuffer[RamI2cCommandIndex];
}
}
}
MCU_I2C_STATUS2_FF29 = 0x00;
MCU_I2C_STATUS_FF27=0;
EX1 = 1;
}
#else
void IntProcDdcci(void) interrupt 2
{
BYTE tempbuf;
EA=0;
MCU_I2C_IRQ_CTRL2_FF2A &= 0xDF; //host write/read enable
if(!bRunCommand)
{
tempbuf = MCU_I2C_STATUS_FF27;
//Anderson 080215 for Debug Message Supported Start
#if(_DEBUG_MESSAGE_SUPPORT == _ON)
if(tempbuf & 0x08)
{
if(bDebugMessageStart == 0)
{
MCU_I2C_IRQ_CTRL2_FF2A |= 0xA0;
MCU_I2C_DATA_OUT_FF26 = TxBUF;
}
else
{
if(bDataOutEnd)
{
MCU_I2C_IRQ_CTRL2_FF2A |= 0xA0;
MCU_I2C_DATA_OUT_FF26 = TxBUF;
bDataOutEnd = 0;
}
}
}
#else
if(tempbuf & 0x08)
#if(_MCU_TYPE == _REALTEK_EMBEDDED)
MCU_I2C_DATA_OUT_FF26 = TxBUF;
#elif((_MCU_TYPE == _REALTEK_RTD2120) || (_MCU_TYPE == _REALTEK_RTD2122))
MCU_I2C_DATA_OUT_FF2A = TxBUF;
#endif
#endif
//Anderson 080215 for Debug Message Supported End
if(tempbuf & 0x01)
ucDdcciCommandNumber = 0;
if(tempbuf & 0x02)
ucDdcciCommandNumber=0;
if(tempbuf & 0x04)
{
if(ucDdcciCommandNumber==0)
ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_SUB_IN_FF24;
ucDdcciCommandNumber++;
ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_DATA_IN_FF25;
bRunCommand=_TRUE;
}
MCU_I2C_STATUS_FF27 = tempbuf & 0xc0;
}
EA=1;
}
#endif
#endif // #if(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -