⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 misc.c

📁 realtek LCD monitor, TV开发源代码
💻 C
📖 第 1 页 / 共 3 页
字号:


#if(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)
//--------------------------------------------------
// Description  : ISP for RTD Embeded MCU Initial
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CDdcciInitial(void)
{

#if(_DDCCI_SUPPORT == _ON)
    if(GET_FACTORY_MODE())
        MCU_I2C_SET_SLAVE_FF23 = 0x7C;
    else
        MCU_I2C_SET_SLAVE_FF23 = 0x6E;
#else
    MCU_I2C_SET_SLAVE_FF23 = 0x6A;
#endif

    MCU_I2C_STATUS_FF27 = 0x00;
    MCU_I2C_IRQ_CTRL_FF28  = 0x0D;
    MCU_IRQ_PRIORITY_FF01 = 0x01;     //assign int1 (IRQ2)

    MCU_ADC_DDC_ENA_FF1B = 0x02;
    MCU_DVI_DDC_ENA_FF1E = 0x02;
    MCU_HDMI_DDC_ENA_FF2C = 0x02;

    MCU_I2C_CHANNEL_CTRL_FF2B = 0x00; // ADC DDC channel
    MCU_I2C_IRQ_CTRL2_FF2A  = 0xC0;//0x40;   // Rst_Data_buf  //ak
    MCU_CTRL_FFED          |= 0x80;
//    MCU_CTRL_FFED          = 0x8c;
    EA = 1;
    EX0 = 1;
    IE = 0x8e;
//    MCU_CTRL_FFED          = 0x8e;
//Anderson 080213 for Debug Message Support Start
#if(_DEBUG_MESSAGE_SUPPORT == _ON)
    CMiscDebugMessage("######    F/W START    ######", _NO_VALUE);//Anderson 080512 for Debug Message Support
#endif
//Anderson 080213 for Debug Message Support End


}
#endif  // End of #if(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)


//--------------------------------------------------
// Description  : Debug tool process
// Input Value  : None
// Output Value : None
//--------------------------------------------------
//Anderson 080512 for Debug Message Support Start
void CMiscIspDebugProc(void)
{
    CMiscIspack();

#if(_DEBUG_TOOL == _RS232)
    CUartHandler();
#endif

#if((_EDID_PRO == _ON) && ((_MCU_TYPE == _REALTEK_RTD2120) || (_MCU_TYPE == _REALTEK_RTD2122))) //Anderson 080107 for RTD2122
    CMiscEdidPoc();
#endif

#if((_DEBUG_MESSAGE_SUPPORT == _ON) && ((_DEBUG_TOOL == _ISP_FOR_RTD2120) || (_DEBUG_TOOL == _ISP_FOR_EMBEDDED)))
    CMiscDebugMessage("", _NO_VALUE);
#endif
//Anderson 080512 for Debug Message Support End
}


#if((_EDID_PRO == _ON) && ((_MCU_TYPE == _REALTEK_RTD2120) || (_MCU_TYPE == _REALTEK_RTD2122))) //Anderson 080107 for RTD2122
//--------------------------------------------------
// Description  : EDID process
//               (F/W will update EDID in Eeprom or Flash
//                if DDCRAM of MCU has been modified.)
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CMiscEdidPoc(void)
{
    BYTE cnt;

    pData[0] = MCU_I2C_STATUS_FF2B;

    if(pData[0] & 0xc0) //ADC DDC Change bit
    {
        MCU_I2C_STATUS_FF2B = pData[0] & 0x3f;

        do
        {
            MCU_I2C_STATUS_FF2B &= 0x3f;
            CTimerDelayXms(100);
        }
        while(MCU_I2C_STATUS_FF2B & 0xc0);

        pData[1] = 0;

        for(cnt = 0;cnt < 128;cnt++)
        {
            if(pData[0] & 0x80)
                pData[1] = (BYTE)(MCU_DDCRAM_VGA[cnt] + pData[1]);
            else if(pData[0] & 0x40)
                pData[1] = (BYTE)(MCU_DDCRAM_DVI[cnt] + pData[1]);
        }

        if(pData[1] == 0)  //updata
        {
        /*
#if((_EDID_PRO == _ON) && (_MEMORY_LOCATION == _EEPROM))
            CEepromSaveEDIDData();
#elif((_EDID_PRO == _ON) && (_MEMORY_LOCATION == _FLASH))
            CEepromSaveEDIDToFlash();
#endif*/
        }

    }
}
#endif  // End of #if((_EDID_PRO == _ON) && ((_MCU_TYPE == _REALTEK_RTD2120) || (_MCU_TYPE == _REALTEK_RTD2122)))
//Anderson 080107 for RTD2122

//Anderson 080512 for Debug Message Support Start
#if(_DEBUG_MESSAGE_SUPPORT == _ON)
//--------------------------------------------------
// Description  : Debug Message process
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CMiscDebugMessage(BYTE *pArray1, DWORD pArray2)
{
    bit halt = 0;
    BYTE index, length, checksum;

    if(ucDdcciData[0] == 0x55)
    {
        bDebugMessageEven = _TRUE;
    }

    if(bDebugMessageEven == _FALSE)
    {
        return;
    }

    if(*pArray1 == 0)
    {
        TxBUF = 0xFC;
        TxTemp = 0xFC;
        return;
    }

    halt = 1; // FW stop
    if(bDebugMessageStart == 0)
    {
        TxBUF = 0xF1;
        TxTemp = 0xF1;
    }

    for(index=0; index<4; index++)
    {
        pDebugMessageBUF[index] = 0;
    }

    do
    {
        if(bRunCommand)
        {
            switch(ucDdcciData[0])
            {
                case 0x20:  //Handshake Setting
                    TxBUF = TxTemp;
                    break;

                case 0x25:  //Debug Message Start
                    if(bDebugMessageStart == _FALSE)
                    {
                        if(*pArray1 != 0)
                        {
                            index = 0;      //Sending Index
                            length = 0;     //Total Length
                            checksum = 0;

                            do
                            {
                                checksum ^= pArray1[length];

                            }while((pArray1[length++] != 0) &&  (length < 240)); //To count the length of pArray1 and checksum

                            pDebugMessageBUF[0] = (BYTE)(pArray2 >> 24);
                            pDebugMessageBUF[1] = (BYTE)(pArray2 >> 16);
                            pDebugMessageBUF[2] = (BYTE)(pArray2 >> 8);
                            pDebugMessageBUF[3] = (BYTE)(pArray2);
                            checksum = checksum ^ pDebugMessageBUF[0] ^ pDebugMessageBUF[1] ^ pDebugMessageBUF[2] ^ pDebugMessageBUF[3];

                            length = (length - 1 + 4) + 4;    //Total Length = length of {Sending Data + Start Code(2) + Length Code(1) + CheckSum(1)}
                            bDebugMessageStart = 1; //Debug Message Start
#if(_DEBUG_TOOL == _ISP_FOR_RTD2120)
                            MCU_I2C_DATA_OUT_FF2A = 0xFA;
#elif(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)
                            MCU_I2C_DATA_OUT_FF26 = 0xFA;
#endif

                        }
                        else
                        {
                            //initial setting
                            bDebugMessageStart = 0;
                            bDataOutEnd = 0;
                            index = 0;
                            length = 0;
                            TxBUF = 0;
                        }
                    }
                    else
                    {
                        if((bDataOutEnd == 0) && (length != 0xff))
                        {
                            if(index == 0)
                            {
                                TxBUF = 0xFA;                   //Start of Check Code 1
                            }
                            else if(index == 1)
                            {
                                TxBUF = 0xF5;                   //Start of Check Code 2
                            }
                            else if(index == 2)
                            {
                                TxBUF = length - 4;             //Length Code
                            }
                            else if(index == length - 1)
                            {
                                TxBUF = checksum;               //CheckSum Code
                            }
                            else
                            {
                                if(index < length - 5)          //Sending Data
                                    TxBUF = pArray1[index - 3];
                                else
                                    TxBUF = pDebugMessageBUF[index - (length - 5)];

                            }

                            if(index < length)
                            {
                                index++;
                            }
                            else
                            {
                                index = 0;
                                TxBUF = 0xFA;
                            }

                            bDataOutEnd = 1;                    //End of Data Output
                        }
                    }
                    break;

                case 0x2A:  //Debug Message End
                    if(bDebugMessageStart)
                    {
                        bDebugMessageStart = 0; //Debug Message End
                        bDataOutEnd = 0;
                        halt = 0;               // FW run
                        TxBUF = 0xF7;
                    }
                    break;

                case 0x2F:  //Debug Message Event finsih
                    TxBUF = 0xF5;
#if(_DEBUG_TOOL == _ISP_FOR_RTD2120)
                    MCU_I2C_DATA_OUT_FF2A = 0xF5;
#elif(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)
                    MCU_I2C_DATA_OUT_FF26 = 0xF5;
#endif
                    bDebugMessageStart = 0;
                    bDataOutEnd = 0;
                    bDebugMessageEven = 0;
                    halt = 0;
                    break;

                default:
                    break;
            }

            bRunCommand = 0;
            ucDdcciCommandNumber = 0;
        }
    }
    while(halt != 0);

    bDebugMessageStart = 0;
    bDataOutEnd = 0;

}
#endif  // End of #if((_DEBUG_MESSAGE_SUPPORT == _ON) && (_DEBUG_TOOL == _ISP_FOR_RTD2120))
//Anderson 080512 for Debug Message Support End

#endif  // End of #if(_SCALER_SERIES_TYPE == _RTD2472D_SERIES)

//Anderson 071219 for 2545LR, 248xRD, 248xRD

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -