- AGC 함수_2
// 10ms 타이머함수
void AGC_Ct_tech(void) // 용호 2017-08-28 오후 4:34:19
{
static XDATA unsigned char AGC_Count;
static XDATA unsigned int Sync_Temp;
XDATA unsigned char Read_Sync;
static XDATA unsigned char Read_Sync_Old;
static XDATA unsigned char AGC_Level = 0;
static XDATA unsigned int Gain = 0;
Read_Sync = msReadByte_Bank(REG_BANK3_VBI, 0x75); // Sync
// Read_Sync = msReadByte_Bank(REG_BANK3_VBI, 0x77); // Burst
#if 0
if(Read_Sync > 75 && Read_Sync <= 100)
{
if(Gain >= 16144)
{
;
}
else
{
Gain = 10000 + (1024 * AGC_Level);
VD_AGC_ResetGain(Gain);
AGC_Level++;
}
}
else if(Read_Sync < 60)
{
if(Gain <= 10000)
{
;
}
else
{
Gain = 16144 - (1024 * (12 - AGC_Level));
AGC_Level--;
VD_AGC_ResetGain(Gain);
}
}
#else
if(++AGC_Count >= 5)
{
AGC_Count = 0;
Read_Sync = Sync_Temp / 5;
Read_Sync = (Read_Sync + Read_Sync_Old) / 2;
Read_Sync_Old = Read_Sync;
Sync_Temp = 0;
if(Read_Sync > 23 && Read_Sync <= 43)
{
if(Gain >= 15500)
{
;
}
else
{
Gain = 5000 + (500 * AGC_Level);
VD_AGC_ResetGain(Gain);
AGC_Level++;
}
}
#if 1
else if(Read_Sync < 13)
{
if(AGC_Level)
{
Gain = 15500 - (500 * (22 - AGC_Level));
AGC_Level--;
VD_AGC_ResetGain(Gain);
}
else
{
VD_AGC_ResetGain(5000);
}
}
#endif
}
else
{
Sync_Temp += Read_Sync;
return;
}
#endif
#if 0
if(g_VdInfo.ucVideoSystem != SIG_NONE)
{
msOsdShow();
msOsdDrawNumber(0, 3, 5, Read_Sync); // g_SysSetting.DayNight
msOsdDrawNumber(0, 4, 5, AGC_Level); // g_SysSetting.DayNight
}
#endif
}