메가아재 2017. 9. 1. 16:04
반응형

// 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

}

반응형