📄 frame_sync.i
字号:
#line 1229 "HEADER\VDC_CFG.H" /0 extern unsigned char code V_NOWORK[]; extern unsigned char code V_DISABLE[]; extern unsigned char code V_ENABLE[]; extern unsigned char code AV_DETECT[]; extern unsigned char code SV_DETECT[]; extern unsigned char code YUV_DETECT[]; extern unsigned char code AV_60_0[]; extern unsigned char code AV_60_1[]; extern unsigned char code AV_60_2[]; extern unsigned char code AV_60_3[]; extern unsigned char code AV_60_4[]; extern unsigned char code AV_50_0[]; extern unsigned char code AV_50_1[]; extern unsigned char code AV_50_2[]; extern unsigned char code AV_50_3[]; extern unsigned char code AV_50_4[]; extern unsigned char code AV_SECAM[]; extern unsigned char code SV_60_0[]; extern unsigned char code SV_60_1[]; extern unsigned char code SV_60_2[]; extern unsigned char code SV_60_3[]; extern unsigned char code SV_60_4[]; extern unsigned char code SV_50_0[]; extern unsigned char code SV_50_1[]; extern unsigned char code SV_50_2[]; extern unsigned char code SV_50_3[]; extern unsigned char code SV_50_4[]; extern unsigned char code SV_SECAM[]; extern unsigned char code VIDEO_ALL[]; extern unsigned char code VIDEO_YUV[]; extern unsigned char code VIDEO_60[]; extern unsigned char code VIDEO_50[]; extern unsigned char code TV_SOURCE_SEL[]; extern unsigned char code TV_SCAN_GAIN[]; extern unsigned char code TV_DISP_GAIN[]; #line 120 "Header\Config.h" /0 #line 124 "Header\Config.h" /1 #line 435 "Header\Config.h" /0 extern unsigned int code CAP_WIN[][5]; extern unsigned int code ADC_SD_SET[][3]; extern unsigned char code VGA_INI_SS[]; extern unsigned char code VGA_INI_CS[]; extern unsigned char code VGA_INI_SOG[]; extern unsigned char code VIDEO_INI[]; extern unsigned char code DVI_INI[]; extern unsigned char code VGA_SET_SS[]; extern unsigned char code VGA_SET_CS[]; extern unsigned char code VGA_SET_SOG[]; extern unsigned char code LVDS_POWERUP[]; extern unsigned char code LVDS_POWERDOWN[]; extern unsigned char code Palette_Open[]; extern unsigned char code Palette_Close[]; extern unsigned char code Palette_1[]; extern unsigned char code Palette_2[]; extern unsigned char code Palette_3[]; extern unsigned char code Palette_4[]; extern unsigned char code Palette_5[]; extern unsigned char code Palette_6[]; extern unsigned char code Palette_7[]; extern unsigned char code DCLK_OFFSET[16]; #line 7 "Code\Frame_Sync.c" /0 #line 1 "Header\Lcd_main.h" /0 #line 1 "HEADER\Timer.h" /0 #line 1 "HEADER\Main_def.h" /0 #line 1 "HEADER\CHAR_DEF.H" /0 #line 1 "HEADER\Main_def.h" /0 #line 1 "HEADER\MODE_DEF.H" /0 #line 2 "HEADER\Main_def.h" /0 #line 1 "HEADER\RTD_DEF.H" /0 #line 3 "HEADER\Main_def.h" /0 #line 1 "HEADER\CODE_DEF.H" /0 #line 4 "HEADER\Main_def.h" /0 #line 144 "HEADER\Main_def.h" /1 #line 155 "HEADER\Main_def.h" /0 #line 157 "HEADER\Main_def.h" /1 #line 159 "HEADER\Main_def.h" /0 #line 163 "HEADER\Main_def.h" /1 #line 165 "HEADER\Main_def.h" /0 #line 270 "HEADER\Main_def.h" /1 #line 272 "HEADER\Main_def.h" /0 #line 273 "HEADER\Main_def.h" /1 #line 275 "HEADER\Main_def.h" /0 #line 276 "HEADER\Main_def.h" /1 #line 278 "HEADER\Main_def.h" /0 #line 279 "HEADER\Main_def.h" /1 #line 281 "HEADER\Main_def.h" /0 #line 1 "HEADER\Timer.h" /0 #line 9 "HEADER\Timer.h" /1 #line 13 "HEADER\Timer.h" /0 #line 20 "HEADER\Timer.h" /1 #line 25 "HEADER\Timer.h" /0 #line 35 "HEADER\Timer.h" /1 #line 41 "HEADER\Timer.h" /0 #line 43 "HEADER\Timer.h" /1 #line 68 "HEADER\Timer.h" /0 extern bit bNotify_Timer0_Int; extern bit bNotify_Timer1_Int; extern void Delay_Xms(unsigned char x); #line 1 "Header\Lcd_main.h" /0 #line 1 "HEADER\Power_Ctrl.h" /0 #line 12 "HEADER\Power_Ctrl.h" /1 #line 20 "HEADER\Power_Ctrl.h" /0 extern bit bPower_Status; extern bit bPanel_Status; extern void PowerDown_ADC(void); extern void PowerUp_ADC(void); extern void PowerDown_VDC(void); extern void PowerUp_VDC(void); extern void PowerDown_LVDS(void); extern void PowerUp_LVDS(void); extern void PowerDown_TMDS(void); extern void PowerUp_TMDS(void); extern void Set_Panel(unsigned char status); extern bit Power_Control(unsigned char Notify); #line 2 "Header\Lcd_main.h" /0 #line 1 "HEADER\Mode_Detect.h" /0 #line 2 "HEADER\Mode_Detect.h" /1 #line 64 "HEADER\Mode_Detect.h" /0 extern bit bVpole_Curr; extern bit bHpole_Curr; extern bit bStable; extern bit bOverSpec; extern unsigned int idata usHsync; extern unsigned int idata usStdHS; extern unsigned int idata usVsync; extern unsigned char idata ucMode_Curr; extern unsigned char idata ucMode_Found; extern unsigned char idata ucMode_Times; extern unsigned char idata ucAV_Mode; extern unsigned char idata ucInputSrc; extern unsigned char idata ucRefresh; extern unsigned char idata ucModeCnt; extern unsigned char idata ucSync_Type; extern void Mode_Detector(void); extern void Measure_Mode(void); extern void Measure_Source(unsigned char SOURCE); extern void Input_Mode_Detector(void); extern unsigned char idata ucPE_Level; extern unsigned char idata ucCE_Value; extern void New_Mode_Auto(void); extern unsigned int idata ucfrist ; #line 3 "Header\Lcd_main.h" /0 #line 32 "Header\Lcd_main.h" /1 #line 86 "Header\Lcd_main.h" /0 extern bit bReload; #line 91 "Header\Lcd_main.h" /1 #line 94 "Header\Lcd_main.h" /0 extern unsigned int idata usOSD_Timer; extern unsigned int idata usTaskCnt; extern unsigned char idata ucID_Code; extern void ISP_Check_Sum(void); extern void Set_Task(unsigned char state); #line 8 "Code\Frame_Sync.c" /0 #line 1 "Header\LCD_OSD.h" /0 #line 24 "Header\LCD_OSD.h" /1 #line 90 "Header\LCD_OSD.h" /0 extern unsigned char idata ucOSD_Page_Index; extern unsigned char idata ucOSD_Item_Index0; extern unsigned char idata ucOSD_Item_Index1; extern unsigned char idata ucOSD_Item_Index2; extern unsigned char idata ucOSD_Pre_Page_Index; #line 98 "Header\LCD_OSD.h" /1 #line 102 "Header\LCD_OSD.h" /0 extern void OSD_Proc(unsigned char action); extern void OSD_Window(unsigned char win_no, unsigned int row_start, unsigned int row_end, unsigned int col_start, unsigned int col_end, unsigned char width, unsigned char height, unsigned char color, unsigned char color_sb, unsigned char gradient, unsigned char gra_level,unsigned char attr); extern void OSD_Line(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char indicate); extern void Get_OSD_Margin(void); extern void OSD_Opening(void); extern void OSD_Ending(void); extern void Show_Note(void); extern void Show_Hint(void); extern void OSD_Clear(unsigned char row_start, unsigned char height, unsigned char col_start, unsigned char width); extern void OSD_Show_Check(void); extern void rgb_OSD_Slider(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char range, unsigned char color, unsigned char color_slider); extern void OSD_Fact_Line(unsigned char row, unsigned char col, unsigned char length, unsigned char value, unsigned char indicate); extern void OSD_Fact_Clear(unsigned char row_start, unsigned char height, unsigned char col_start, unsigned char width); extern void OSD_Position(unsigned char para); extern void Value_Adjust(unsigned char *Var, unsigned char Key, unsigned char VMax, unsigned char VMin); #line 9 "Code\Frame_Sync.c" /0 bit Frame_Sync_Detector(void) { if (bPower_Status && bStable && 0 != ucMode_Curr && 255 != ucMode_Curr) { if (bFrameSync) { RTDRead(0x1F, 1, 1); ucStatus |= (Data[0] >> 6); if(Data[0]) RTDSetByte(0x1F,0x00); if (Data[0] & 0xc0) { ucSyncErrorCnt += 1; #line 32 "Code\Frame_Sync.c" /1 #line 34 "Code\Frame_Sync.c" /0 } } if (1 >= ucSyncErrorCnt) { RTDRead(0x01, 1, 1); ucStatus |= (Data[0] & 0xfc); if(Data[0]) RTDSetByte(0x01,0x00); if (Data[0] & 0x60) ucSyncErrorCnt += (1 + 1); if (0 == (stGUD1.INPUT_SOURCE & 0x07)) { if (Data[0] & 0x80) { ucSyncErrorCnt += 1; #line 68 "Code\Frame_Sync.c" /1 #line 70 "Code\Frame_Sync.c" /0 } else { RTDSetBit(0x3D, 0x7f, 0x20); Delay_Xms(1); RTDRead(0x3D, 1, 1); ucPE_Max = Data[0] & 0x1f; if((ucPE_Max > 0x10) && (ucPE_Level == 0)) { ucPE_Level = 1; Adjust_I_Code(); if((ucI_Code & 0x80) == 0x80) RTDSetBit(0xCA,0xdf,0x20); else RTDSetBit(0xCA,0xdf,0x00); ucI_Code = ucI_Code & 0x7f; RTDSetByte(0xC9,0x1c | ((ucI_Code & 0x07) << 5)); RTDSetBit(0xCA,0xfc,0x04 | ((ucI_Code & 0x18) >> 3)); RTDSetBit(0x3D, 0xdf, 0x00); RTDSetByte(0x3D,0x40); ucPE_Max = 0; } } } } if (1 < ucSyncErrorCnt) { Reset_Mode(); Set_Task(2); bNotify_Timer0_Int = 0; return 1; } if (bNotify_Timer0_Int && 2 == ucModeCnt) { if (ucSyncErrorCnt) ucSyncErrorCnt -= 1; } } return 0; } void AbortSync(void) { Data[0] = 5; Data[1] = 0; Data[2] = 0x22; Data[3] = (unsigned char)usDH_Total; Data[4] = (unsigned char)(usDH_Total >> 8); Data[5] = 0; RTDWrite(Data); RTDSetBit(0x2E, 0x07, 0x00); } unsigned char TestSync(unsigned int offset) { RTDSetByte(0x9a,(unsigned char)offset); RTDSetBit(0x9b,0xf0,(unsigned char)((offset >> 8) & 0x0f) | 0x20); Wait_For_Event(0x08); RTDSetByte(0x01,0x00); Wait_For_Event(0x08); Wait_For_Event(0x08); RTDRead(0x01, 1, 1); if(Data[0]) RTDSetByte(0x01,0x00); if (Data[0] & 0x60) { AbortSync(); return 1; } Data[0] &= 0x03; return 0; } unsigned char Frame_Sync(void) { unsigned int idata usBuffer,usDelta; unsigned char idata ucFine,ucTemp=0; #line 198 "Code\Frame_Sync.c" /1 #line 200 "Code\Frame_Sync.c" /0 RTDRead(0x9a , 2, 0); Data[2] = Data[1] & 0x0f; Data[3] = Data[0]; usBuffer = ((unsigned int*)Data)[1]; usDelta = usBuffer; if(((stGUD1.INPUT_SOURCE & 0x07) == 0) || ((stGUD1.INPUT_SOURCE & 0x07) == 1)) { while(usBuffer < (1228 + 14 * 32)) { RTDRead(0xD1,2,0); RTDSetByte(0xD1,Data[0]+1); RTDSetByte(0xD2,Data[1]); usBuffer = (unsigned int)((unsigned long)(32768 + (unsigned long)(Data[0] + 2) * usBuffer)/(unsigned long)(Data[0] + 3)); usDelta = usBuffer; } usDelta -= 128; } usBuffer = usDelta; for(ucFine =0;ucFine < 14;ucFine++) { if (TestSync(usDelta)) return 2; if(Data[0] & 0x03) { usDelta = (Data[0] & 0x02) ? usDelta - 32 : usDelta + 32; ucTemp += 1; } else if((Data[0] & 0x03) == 0) break; } if(Data[0] & 0x03) return 1; else if(usDelta < usBuffer) { if(TestSync(usDelta - 4)) return 2; if(Data[0] & 0x03) TestSync(usDelta); else usDelta -= 2; } else { if(TestSync(usDelta + 4)) return 2; if(Data[0] & 0x03) TestSync(usDelta); else usDelta += 2; } #line 298 "Code\Frame_Sync.c" /1 #line 417 "Code\Frame_Sync.c" /0 RTDSetBit(0x99,0x0f,(6 << 4)); if(TestSync(usDelta + DCLK_OFFSET[6])) return 2; if(Data[0] & 0x03) { if(TestSync((Data[0] & 0x02) ? (usDelta + DCLK_OFFSET[6] - 1) : (usDelta + DCLK_OFFSET[6] + 1))) return 2; else { if(Data[0] & 0x03) return 1; else return 0; } } #line 438 "Code\Frame_Sync.c" /1 #line 440 "Code\Frame_Sync.c" /0 return 0; } void Adjust_I_Code(void) { ((unsigned int*)Data)[0] = 24576/usHsync; ucI_Code = 14; Data[2] = ((unsigned long)ucCE_Value * 50737400 / (unsigned long)((unsigned int*)Data)[0]) >> 20; Data[3] = (4 == 0) ? (ucPE_Level ? (185 - ucP_Corr) : ((ucP_Corr >> 2) + 10)) : 4; while(1) { if(Data[2] > Data[3]) { Data[2] = Data[2] >> 1; ucI_Code -= 1; if(Data[2] <= Data[3]) break; } else { if((Data[2] << 1) > Data[3]) break; else { Data[2] = Data[2] << 1; ucI_Code += 1; } } } if((unsigned char)((unsigned int)Data[2]*3/2) <= Data[3]) { ucI_Code |= 0x80; } else { } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -