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

📄 debug.c

📁 主要用于液晶电视解码,内置51单片机,全部代码用C编写,编译环境为KEILC
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************
 Copyright (c) 2003 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: Debug.c
 [Date]:
 [Comment]:
   Uart subroutines.
 [Reversion History]:
*******************************************************************************/

#define _DEBUG_C_

// Common
#include <math.h>
#include "types.h"
#include "global.h"
#include "irFunc.h"
#include "panel.h"
#include "misc.h"
#include "ms_rwreg.h"
#include "Reg52.h"
#include "ms_reg.h"
#include "power.h"
#include "msosd.h"
#include "nvram.h"
#include "i2c.h"
#include "msACE.h"
#include "menu.h"
#include "menufunc.h"
#include "UserPref.h"
#include "tv.h"
#include "devVD.h"
#include "msVD.h"
#include "M2_VD_Std_Lib.h"
#include "Maria2_FSC_Lib.h"
#include "Maria2_ACC_Lib.h"
#include "DevTuner.h"

#if(ENABLE_VD_DSP)
#include "Maria2_dsp_lib.h"
extern BYTE idata g_ucDSP_Ctl;
//#define DSP_MARIA_DEBUG
#ifdef DSP_MARIA_DEBUG
extern XDATA BYTE g_dspDebugFlag;
extern XDATA BYTE g_dspDebugInfoIdx;
extern XDATA BYTE g_dspDebugInfo[64];
#endif
#endif

////////////////////////////////////////////
// Debug FSC lib
extern XDATA WORD g_wFSCBurstMag;
extern  BYTE s_ucFSCBurstOn;
extern  BYTE s_ucFSCBurstOff;
extern XDATA BYTE g_ucFSCNoiseMag;
extern XDATA BYTE s_ucFSCNoiseOn;
extern XDATA BYTE s_ucFSCNoiseOff;
extern XDATA BYTE g_ucFSCPhaseErrorAvg;
extern XDATA BYTE s_ucFSCPhaseErrorLevelOn;
extern XDATA BYTE s_ucFSCPhaseErrorLevelOff;
/////////////////////////////////////////////
extern  BYTE OsdFontColor;

extern BYTE xdata g_ucAgcState;
extern HLdata xdata g_unSyncMagnitude; // average 64 lines Sync magnitude

// Internal
#include "debug.h"
///////////////////////////////////////////////////////
// Test command
///////////////////////////////////////////////////////
#if 0
void Test_CalClock( BOOL bInterlaceMode )
{
    XDATA WORD wInputHPeriod; // horizontal period
    XDATA WORD wHFreq;
    XDATA WORD wInputVTotal;
    XDATA WORD wVFreq;
    XDATA WORD wOutputHTotal;
    XDATA WORD wOutputVTotal;
    XDATA DWORD dwClockFactor; // clock factor

    BYTE ucBank;

    ucBank = msReadByte( BK0_00 );
    msWriteByte( BK0_00, REG_BANK_SCALER );

    wInputHPeriod = msGetHorizontalPeriod();
    wHFreq = msCalculateHFreqX10(wInputHPeriod); // Cal H freq
    wInputVTotal = msGetVerticalTotal();
    wVFreq = msCalculateVFreqX10( wHFreq, wInputVTotal )*2; // Cal V freq

    printf("\r\nInputHPeriod=%d", wInputHPeriod);
    printf("\r\nInputVTotal=%d", wInputVTotal);
    printf("\r\nInputHFreq=%d*10KHz", wHFreq);
    printf("\r\nInputVFreq=%d*10Hz", wVFreq);

    wOutputHTotal = PANEL_HTOTAL;
    wOutputVTotal = PANEL_VTOTAL;
    printf("\r\nClock:OutputHTotal=%d", wOutputHTotal);
    printf("\r\nClock:OutputVTotal=%d", wOutputVTotal);

    dwClockFactor = ((float)wInputHPeriod*wInputVTotal*524288ul*PANEL_MASTER_PLL_DIVIDER)/
                    ((float)wOutputHTotal*wOutputVTotal);
    if( IsSrcUseDigitalPort() || bInterlaceMode )
        dwClockFactor /= 2;
    printf("\r\nSET=%x,", (dwClockFactor>>16) );
    printf("%x", (WORD)dwClockFactor );

    dwClockFactor = ( ((DWORD)wInputVTotal-1) * 1048576ul / (wOutputVTotal-1) + 1 );
    if( IsSrcUseDigitalPort() || bInterlaceMode )
        dwClockFactor /= 2;
    printf("\r\nV ScalingRatio=%x,", (dwClockFactor>>16) );
    printf("%x", (WORD)dwClockFactor );

//    putstr("\r\n------------------------------------");
//    {
//        XDATA WORD wImgHeight;
//        wImgHeight = g_WindowInfo.V_CapSize;
//        printf("\r\nImgHigh=%d", wImgHeight);
//
//        dwClockFactor = ((float)wInputHPeriod*(wImgHeight - 1)*524288ul*PANEL_MASTER_PLL_DIVIDER) /
//                         ((float)wOutputHTotal * (540 - 1));
//        if( IsSrcUseDigitalPort() || bInterlaceMode )
//            dwClockFactor /= 2;
//        printf("\r\nSET2=%x,", (dwClockFactor>>16) );
//        printf("%x", (WORD)dwClockFactor );
//
//        dwClockFactor = ( ((DWORD)wImgHeight-1) * 1048576ul / (540-1) + 1 );
//        if( IsSrcUseDigitalPort() || bInterlaceMode )
//            dwClockFactor /= 2;
//        printf("\r\nV ScalingRatio2=%x,", (dwClockFactor>>16) );
//        printf("%x", (WORD)dwClockFactor );
//    }

    msWriteByte( BK0_00, ucBank );
}
#endif

/*
void PrintModeSetting(void)
{

    printf( "\r\nModeIndex=%d", g_ModeSetting.ModeIndex );
    printf( "\r\nHorizontalStart=%d", g_ModeSetting.HorizontalStart );
    printf( "\r\nVerticalStart=%d", g_ModeSetting.VerticalStart );
    printf( "\r\nHorizontalTotal=%d", g_ModeSetting.HorizontalTotal );
    printf( "\r\nPhase=%d", g_ModeSetting.Phase );
    printf( "\r\nDefaultHStart=%d", g_ModeSetting.DefaultHStart );
    printf( "\r\nAutoSign=%d", g_ModeSetting.AutoSign );
    printf( "\r\nModeSettingCS=%d", g_ModeSetting.ModeSettingCS );
}
*/

void ExecTestCommand(void)
{
    BYTE ucBank = msReadByte(0);

    switch( g_UartCommand.Buffer[_UART_CMD_INDEX1_] )
    {
#if 0
        case 1:
        {
        #if (DEV_CC_SEL == DEV_CC_ZILOG86129)
            BYTE acBuf[3];
            devVBIReadCurrent3( 0x28, acBuf);
            printf("\r\n[%x,", acBuf[0]);
            printf("%x,", acBuf[1]);
            printf("%x]", acBuf[2]);
        #endif
        }
            break;
        case 2: // Read ADC(SAR0)
        {
            BYTE ucADCVal = 0xff;
            ucADCVal = PKEYADC1;
            printf( "\r\nADC1=%d", ucADCVal );
            ucADCVal = 0xff;
            ucADCVal = PKEYADC2;
            printf( "\r\nADC2=%d", ucADCVal );
            ucADCVal = 0xff;
            ucADCVal = PKEYADC3;
            printf( "\r\nADC3=%d", ucADCVal );
        }
            break;
        case 3: // Test Delay1ms()
        {
            BYTE ucTimes = g_UartCommand.Buffer[_UART_CMD_INDEX2_];
            while(ucTimes--)
            {
                i2cSetSCL(_LOW);
                Delay1ms(1);
                i2cSetSCL(_HIGH);
                Delay1ms(1);
            }

//            ClrPinI2cSCL();
//            Delay1ms( g_UartCommand.Buffer[_UART_CMD_INDEX2_] );
//            SetPinI2cSCL();
        }
            break;
        case 4:
        {
#ifdef ENABLE_MCU_USE_INTERNAL_CLOCK
            McuUseInternalClock();
//            XDATA DWORD dTmp1;
//            XDATA DWORD dClk;
//            XDATA WORD wTmp3;
//            BYTE ucDiv;
//            BYTE ucEEVal;
//
//            ucDiv = g_UartCommand.Buffer[_UART_CMD_INDEX2_];
//            printf("\r\nDiv=%d", ucDiv );
//
//            dClk = 216000000ul/ucDiv;
//            printf("\r\nClk=%dMHz", dClk/1000000ul );
//
//            ucEEVal = 0x80|(((ucDiv-4)/2)<<4);
//            printf("\r\nEEVal=%x", ucEEVal);
//
//            dTmp1 = ((DWORD)UART_BAUD_RATE*(32 * 4)); // 4 clock
//            wTmp3 = (dClk+(dTmp1/2))/dTmp1;
//            printf("\r\nnew TIMER1_MODE2_TH1=%d", wTmp3);
//
//            msWriteByte( BK0_00, 0x00 );
//            msWriteByte( BK0_EE, ucEEVal );
//
//            ES = 0;
//            TR1 = 0;
//            RI = 0;
//            TI = 0; // clear transfer flag
//
//            TH1 = 256 - wTmp3;
//
//            TR1 = 1;
//            ES = 1;
//
//            putstr("\r\nMcu clock change!!");
#endif
        }
            break;

        case 7:
        #if 0//( ENABLE_SW_WRITE_PROTECT )
            msSPI_CheckWriteProtect();
        #endif
            break;
        case 8:
        {/*
            msOsdDrawBlockCodeAttr( 4, 4,
            g_UartCommand.Buffer[_UART_CMD_INDEX2_],
            g_UartCommand.Buffer[_UART_CMD_INDEX3_],
            0x8000|g_UartCommand.Buffer[_UART_CMD_INDEX4_],
            0x8000|g_UartCommand.Buffer[_UART_CMD_INDEX5_] );
            */
            break;
        }
    #if(ENABLE_CBCR)
        case 9:
        {
            printf("\r\nCb=%x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            printf(",Cr=%x", g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
            msAdjustVideoCbCr( g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_] );
            break;
        }
    #endif
        case 0x0a:
        {
            WORD i = 10000;
            putstr("\r\nC.P ...");
            while( i -- )
            {
                P0 = 0;
                P1 = 0;
                P2 = 0;
                P4 = 0;
                P0 = 0xff;
                P1 = 0xff;
                P2 = 0xff;
                P4 = 0xff;
            }
            break;
        }
        case 0x0b:
            msVDAcc_Ctl(g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            printf("\r\nAccCtl=%x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            break;
        case 0x0c:
            printf("\r\nAccChrom=%x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            msVAAcc_SetTargetChrom(g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            break;

        case 0x12:
            ////msWriteByte_Bank( 1, BK1_2F, 0x00 );
            AdjustSource();
            break;
        case 0x13:
            //msWriteByte_Bank( 1, BK1_2F, 0x08 );
            AdjustSource();
            break;
        case 0x1C: // Test 4 color font
        {
            BYTE i;

            putstr("\r\nTest 4 color font");
            for( i = 0; i < 0xff; ++ i )
            {
                OsdFontColor = i;
                Osd_DrawChar(i%16, i/16, 0xF0+(2*(i%3)));
            }
        }
            break;
        case 0x1D: // Test mono font
        {
            BYTE i;

            putstr("\r\nTest mono font");
            for( i = 0; i < 0xff; ++ i )
            {
                OsdFontColor = i;
                Osd_DrawChar(i%16, i/16, 'A');
            }
        }
            break;
        case 0x1E:
        {
            OsdFontColor = g_UartCommand.Buffer[_UART_CMD_INDEX2_];
            Osd_DrawChar(
                g_UartCommand.Buffer[_UART_CMD_INDEX3_],
                g_UartCommand.Buffer[_UART_CMD_INDEX4_],
                g_UartCommand.Buffer[_UART_CMD_INDEX5_] );
        }
            break;
    #if 1//(PANEL_TYPE_SEL!=PNL_DAC_CRT)
        case 0x20:
            Power_TurnOnPanel();//pwPanelOnSequence();
            break;
        case 0x21:
            Power_TurnOffPanel();//pwPanelOffSequence();
            break;
        case 0x22:
            i2cBurstWriteBytes(0x80, g_UartCommand.Buffer[_UART_CMD_INDEX2_], NULL, 0);
            break;
        case 0x23:
			{
            BYTE tmp;
            //tmp = i2cReadCurrent(0x80);
            i2cBurstCurrentBytes(0x80,&tmp,1);
            printf("\r\n MTS=%x", tmp);
			}
            break;
    #endif
        case 0x24:
            printf("\r\n ucBurstOn=%x",g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            printf("\r\n ucBurstOff=%x",g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
            printf("\r\n ucNoiseOn=%x",g_UartCommand.Buffer[_UART_CMD_INDEX4_]);
            printf("\r\n ucNoiseOff=%x",g_UartCommand.Buffer[_UART_CMD_INDEX5_]);
            msVD_FSC_SetColorKillLevel(g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_], g_UartCommand.Buffer[_UART_CMD_INDEX4_],g_UartCommand.Buffer[_UART_CMD_INDEX5_] );

⌨️ 快捷键说明

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