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

📄 hal1.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
        if (_dwHALTemp > __dwTemp)
            _dwHALTemp -= __dwTemp; 
        else
            _dwHALTemp = 0;
        
        //calculate Cb'=sqrt(Cb^2+Cb^2-Cr'^2) by traversing
        for (__bTemp=0; __bTemp<=0x7F; __bTemp++)
        {
	        if ( ((DWORD)__bTemp*__bTemp) >= _dwHALTemp ) 
		        break;
        }    
        _bHALTemp = __bTemp; //Cb'
#ifdef SUPPORT_PRINTF            
        printf("GAIN_YC: new Cb=%hx Cr=%hx\n", _bHALTemp, _bHALTemp1);
#endif    
        wLo = (WORD)(_bHALTemp)<<8 | _bHALTemp1; 
        W99AV_WriteTVERegDW(GAIN_YC, wLo, wHi);
    }
    else if (bReg==GAIN_CAV)
    {
        extern WORD    _wHALTemp, _wHALTemp1;

        _wHALTemp = (wHi & 0x1000)>>4 | (wLo & 0xFF00)>>8; //default Cb [28][15:8] 
        _wHALTemp1 = (wHi & 0x0100) | (wLo & 0x00FF); //default Cr [24][7:0]
#ifdef SUPPORT_PRINTF 
        printf("GAIN_CAV: org Cb=%x Cr=%x\n", _wHALTemp, _wHALTemp1);
#endif
        _dwHALTemp = (DWORD)_wHALTemp*_wHALTemp + (DWORD)_wHALTemp1*_wHALTemp1; //default Cb^2 + Cr^2
        
        //SETUP adjusts Cr'
        if (__SetupInfo.bChromPhaseOffset>SETUP_SCREEN_CHROM_PHASE_0)        
        {
            __bTemp = (__SetupInfo.bChromPhaseOffset-SETUP_SCREEN_CHROM_PHASE_0) * CHROM_PHASE_GAP_CAV;
            if (_wHALTemp1+__bTemp < 0x1FF)
                _wHALTemp1 += __bTemp; //Cr' 
            else
                _wHALTemp1 = 0x1FF; //Cr'
        }
        else
        {
            __bTemp = (SETUP_SCREEN_CHROM_PHASE_0-__SetupInfo.bChromPhaseOffset) * CHROM_PHASE_GAP_CAV;
            if (_wHALTemp1>__bTemp)
                _wHALTemp1 -= __bTemp; //Cr'
            else 
                _wHALTemp1 = 0; //Cr'
        }            
        
        __dwTemp = (DWORD)_wHALTemp1*_wHALTemp1;
        if (_dwHALTemp > __dwTemp)
            _dwHALTemp -= __dwTemp; 
        else
            _dwHALTemp = 0;

        //calculate Cb'=sqrt(Cb^2+Cb^2-Cr'^2) by traversing
        for (__wTemp=0; __wTemp<=0x1FF; __wTemp++)
        {
	        if ( ((DWORD)__wTemp*__wTemp) >= _dwHALTemp ) 
		        break;
        }    
        _wHALTemp = __wTemp; //Cb'
#ifdef SUPPORT_PRINTF
        printf("GAIN_CAV: new Cb=%x Cr=%x\n", _wHALTemp, _wHALTemp1);
#endif
        wHi &= ~0x1100;
        wHi |= (_wHALTemp & 0x0100)<<4 | (_wHALTemp1 & 0x0100);  
        wLo = (_wHALTemp & 0x00FF)<<8 | (_wHALTemp1 & 0x00FF);
        W99AV_WriteTVERegDW(GAIN_CAV, wLo, wHi);
    }  

} //end of _WriteTVEGainWithChromPhase()  
#endif



//  *******************************************************************************
//  Function    :   _TVModeSet
//  Description :   Set TVE 
//  Arguments   :   None
//  Return      :   None
//  Side Effect :   none
//  *******************************************************************************
#pragma NOAREGS         // may be called in ISR
void _TVModeSet(void) // LLY.051-1, it will reference __bTVType directly
{
    //Kevin1.05, add protection
    if ((__SetupInfo.bProgressiveScan == SETUP_PROGRESSIVE_SCAN_ON) && 
        (__SetupInfo.bVideoOutput == SETUP_SCREEN_VIDEO_OUTPUT_NORMAL))
    {
        __SetupInfo.bVideoOutput = SETUP_SCREEN_VIDEO_OUTPUT_YUV_PSCAN;
        SETUP_ChangeValue(SETUP_SCREEN_VIDEO_OUTPUT);
    }

    if ((__SetupInfo.bProgressiveScan == SETUP_PROGRESSIVE_SCAN_OFF) && 
        (__SetupInfo.bVideoOutput == SETUP_SCREEN_VIDEO_OUTPUT_VGA))
    {
        __SetupInfo.bVideoOutput = SETUP_SCREEN_VIDEO_OUTPUT_NORMAL;
        SETUP_ChangeValue(SETUP_SCREEN_VIDEO_OUTPUT);
    }


    _bVideoOutput=__SetupInfo.bVideoOutput;

    //Kevin1.05, GPCR2 bit17: Hsync/Vsync signal for VGA
    __dwHAL1Temp = W99AV_ReadRegDW(GPCR2);
    __dwHAL1Temp &= ~0x20000;

    //Kevin1.02-2, Radj=75ohm 
    if(__SetupInfo.bProgressiveScan == SETUP_PROGRESSIVE_SCAN_ON) //Progressive Scan
    {
        switch (__bTVType)
        {        
            case SETUP_SCREEN_TV_SYSTEM_NTSC:
                switch (_bVideoOutput)
                {
                    case SETUP_SCREEN_VIDEO_OUTPUT_YUV_PSCAN:
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0000);
                        //Kevin1.07a, disable 525p MV
                        //W99AV_WriteTVERegDW(TVE_CR1, 0xb002, 0x0000);
                        W99AV_WriteTVERegDW(TVE_CR1, 0xa002, 0x0000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_CAV, 0xa0a0, 0x00a4);
#else
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0xa0a0, 0x00a4);  //Kevin1.25, add
#endif
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_RGB_PSCAN:
                        #ifndef RGB_NO_SYNC_ON_G
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0040);
                        #else //kevin2.39, for SCART Macrovision: RGB sync is on the composite line
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0000);                         
                        #endif                        
                        //Kevin1.07a, disable 525p MV
                        //W99AV_WriteTVERegDW(TVE_CR1, 0xb004, 0x0000);
                        W99AV_WriteTVERegDW(TVE_CR1, 0xa004, 0x0000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_CAV, 0x1ce1, 0x10a4); 
#else
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0x1ce1, 0x10a4);  //Kevin1.25, add
#endif
                        W99AV_WriteTVERegDW(FAIN_G, 0x3772, 0x0000);     
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_VGA:
                        //Kevin0.87, Hsync/Vsync signal for VGA
                        __dwHAL1Temp |= 0x20000;
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0000);
                        //Kevin1.07a, disable 525p MV
                        //W99AV_WriteTVERegDW(TVE_CR1, 0xb004, 0x2000);
                        W99AV_WriteTVERegDW(TVE_CR1, 0xa004, 0x2000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_CAV, 0x1ce1, 0x10a4); 
#else
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0x1ce1, 0x10a4);  //Kevin1.25, add
#endif
                        W99AV_WriteTVERegDW(FAIN_G, 0x3772, 0x0000); 
                        break;
                }                                   
                break;
                
            case SETUP_SCREEN_TV_SYSTEM_PAL:
            case SETUP_SCREEN_TV_SYSTEM_PAL_M:
            case SETUP_SCREEN_TV_SYSTEM_PAL_N:            
                switch (_bVideoOutput) 
                {
                    case SETUP_SCREEN_VIDEO_OUTPUT_YUV_PSCAN:
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0000);
                        W99AV_WriteTVERegDW(TVE_CR1, 0xf002, 0x0000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_CAV, 0xa0a0, 0x00a4); 
#else
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0xa0a0, 0x00a4);  //Kevin1.25, add
#endif
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_RGB_PSCAN:
                        #ifndef RGB_NO_SYNC_ON_G
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0040);
                        #else //kevin2.39, for SCART Macrovision: RGB sync is on the composite line
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0000);                         
                        #endif 
                        W99AV_WriteTVERegDW(TVE_CR1, 0xf004, 0x0000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_CAV, 0x1ce1, 0x10a4); 
#else
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0x1ce1, 0x10a4);  //Kevin1.25, add
#endif
                        W99AV_WriteTVERegDW(FAIN_G, 0x3772, 0x0000); 
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_VGA:
                        //Kevin0.87, Hsync/Vsync signal for VGA
                        __dwHAL1Temp |= 0x20000;
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0000);
                        W99AV_WriteTVERegDW(TVE_CR1, 0xf004, 0x2000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_CAV, 0x1ce1, 0x10a4); 
#else
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0x1ce1, 0x10a4);   //Kevin1.25, add
#endif
                        W99AV_WriteTVERegDW(FAIN_G, 0x3772, 0x0000); 
                        break;
                }
                break;
        }
    }
    else //Interlaced Scan   
    {
        switch (__bTVType)
        {        
            case SETUP_SCREEN_TV_SYSTEM_NTSC:
//default is not 443, so the following parameters include no 7.5IRE & are not fine tuned.
#ifdef  SUPPORT_NTSC443
                switch (_bVideoOutput)
                {
                    case SETUP_SCREEN_VIDEO_OUTPUT_NORMAL: 
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0280);
#ifdef SUPPORT_2_CVBS 
                        W99AV_WriteTVERegDW(TVE_CR1, 0x0000, 0x0000);
#else //Kevin1.05, turn off AVO0                      
                        W99AV_WriteTVERegDW(TVE_CR1, 0x0400, 0x0000); 
#endif
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_YC, 0x4764, 0x0054);                         
#else
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x4764, 0x0054);    //Kevin1.25, add
#endif
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_YUV:
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0200);
                        W99AV_WriteTVERegDW(TVE_CR1, 0x2002, 0x0000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_YC, 0x4764, 0x0054);                
                        W99AV_WriteTVERegDW(GAIN_CAV, 0xa0a0, 0x00a4);                
#else
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x4764, 0x0054)     //Kevin1.25, add                    
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0xa0a0, 0x00a4);   //Kevin1.25, add
#endif
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_RGB:
                        #ifndef RGB_NO_SYNC_ON_G
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0240);
                        #else //kevin2.39, for SCART Macrovision: RGB sync is on the composite line
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0200);                         
                        #endif
                        W99AV_WriteTVERegDW(TVE_CR1, 0x2004, 0x0000);
#ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_YC, 0x4764, 0x0054);                 
                        W99AV_WriteTVERegDW(GAIN_CAV, 0x1ce1, 0x10a4); 
#else
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x4764, 0x0054)     //Kevin1.25, add                    
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0x1ce1, 0x10a4);   //Kevin1.25, add
#endif
                        W99AV_WriteTVERegDW(FAIN_G, 0x3772, 0x0000);                
                        break;   
                }
#else //#ifdef  SUPPORT_NTSC443
                switch (_bVideoOutput)
                {
                    case SETUP_SCREEN_VIDEO_OUTPUT_NORMAL:
#ifdef NTSC_IRE_75 //Kevin1.24DMTech 
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0020, 0x0200);
#ifdef SUPPORT_2_CVBS 
                        W99AV_WriteTVERegDW(TVE_CR1, 0x0000, 0x0000);
#else //Kevin1.05, turn off AVO0              
                        W99AV_WriteTVERegDW(TVE_CR1, 0x0400, 0x0000); 
#endif
                        #ifndef SUPPORT_ADJUST_CHROM_PHASE
                        //Kevin1.23DMTech, based on Joie 2004/2/9
						//W99AV_WriteTVERegDW(GAIN_YC, 0x425d, 0x004d); //without boost circuit  
                        W99AV_WriteTVERegDW(GAIN_YC, 0x4460, 0x0050);   //with boost circuit
                        #else
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x4460, 0x0050);    //Kevin1.25, add
                        #endif
#else //0 IRE                    
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0200);
#ifdef SUPPORT_2_CVBS 
                        W99AV_WriteTVERegDW(TVE_CR1, 0x0000, 0x0000);
#else //Kevin1.05, turn off AVO0              
                        W99AV_WriteTVERegDW(TVE_CR1, 0x0400, 0x0000); 
#endif
                        #ifndef SUPPORT_ADJUST_CHROM_PHASE
						//Kevin1.23DMTech, based on Joie 2004/2/9 
                        //W99AV_WriteTVERegDW(GAIN_YC, 0x4764, 0x0054); //without boost circuit
                        W99AV_WriteTVERegDW(GAIN_YC, 0x435d, 0x0058);   //with boost circuit
                        #else                        
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x435d, 0x0058);     //Kevin1.25, add
                        #endif
#endif //#ifdef IRE_75						
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_YUV:
#ifdef NTSC_IRE_75  //Kevin1.24DMTech                   
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0600);
                        W99AV_WriteTVERegDW(TVE_CR1, 0x2002, 0x0000);
                        #ifndef SUPPORT_ADJUST_CHROM_PHASE
						W99AV_WriteTVERegDW(GAIN_YC, 0x425d, 0x004d);                
                        W99AV_WriteTVERegDW(GAIN_CAV, 0xa0a0, 0x0098);    
                        #else
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x425d, 0x004d);     //Kevin1.25, add                    
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0xa0a0, 0x0098);    //Kevin1.25, add
                        #endif
#else     
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0200);
                        W99AV_WriteTVERegDW(TVE_CR1, 0x2002, 0x0000);
                        #ifndef SUPPORT_ADJUST_CHROM_PHASE
						W99AV_WriteTVERegDW(GAIN_YC, 0x4764, 0x0054);                
                        W99AV_WriteTVERegDW(GAIN_CAV, 0xa0a0, 0x00a4);                                                         
                        #else
                        _WriteTVEGainWithChromPhase(GAIN_YC, 0x4764, 0x0054);     //Kevin1.25, add                    
                        _WriteTVEGainWithChromPhase(GAIN_CAV, 0xa0a0, 0x00a4);    //Kevin1.25, add
                        #endif
#endif
                        break;
                    case SETUP_SCREEN_VIDEO_OUTPUT_RGB:
                        #ifndef RGB_NO_SYNC_ON_G
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0240);
                        #else //kevin2.39, for SCART Macrovision: RGB sync is on the composite line
                        W99AV_WriteTVERegDW(TVE_CR0, 0x0000, 0x0200);                         
                        #endif                        
                        W99AV_WriteTVERegDW(TVE_CR1, 0x2004, 0x0000);
                        #ifndef SUPPORT_ADJUST_CHROM_PHASE
                        W99AV_WriteTVERegDW(GAIN_YC, 0x4764, 0x0054);                 
                        W99AV_WriteTVERegDW(GAIN_CAV, 0x1ce1, 0x10a4); 
                        #else

⌨️ 快捷键说明

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