📄 debug.c
字号:
/******************************************************************************
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 + -