📄 drv_dsp_adjust.c
字号:
gu08_ChkRfGain |= B00000001;
gu08_kind_Gain++;
// 僼僅乕僇僗/僩儔僢僉儞僌僎僀儞, APC REF揹埑
SetFoTrGain();
return 0xFA; // TRUE
}
}
return 0xF6; // FALSE
}
/*------------------------------------------------------------------------------
[NAME] :DownRfGain
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------*/
UINT08 DownRfGain( void )
{
if( gu08_kind_Gain != GAIN_X1 )
{
if( !(gu08_ChkRfGain & gu08_kind_Gain) )
{
gu08_ChkRfGain |= ( gu08_kind_Gain << 1 );
gu08_kind_Gain--;
// 僼僅乕僇僗/僩儔僢僉儞僌僎僀儞, APC REF揹埑
SetFoTrGain();
return 0xFA; // TRUE
}
}
return 0xF6; // FALSE
}
/*------------------------------------------------------------------------------
[NAME] :UpRfPosition
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------*/
UINT08 UpRfPosition( void )
{
if( gu08_9C_RfShift )
{
DrvDSP_BIOS_WriteReg( 0x9C, --gu08_9C_RfShift ); // Up Sweep / RF 僆僼僙僢僩挷惍
return FALSE;
}
return TRUE;
}
/*------------------------------------------------------------------------------
[NAME] :DownRfPosition
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------*/
UINT08 DownRfPosition( void )
{
if( gu08_9C_RfShift != 0x0F )
{
DrvDSP_BIOS_WriteReg( 0x9C, ++gu08_9C_RfShift );
return FALSE;
}
return TRUE;
}
/*******************************************************************************
Measure RF
*******************************************************************************/
/*------------------------------------------------------------------------------
[NAME] :MeasureRf
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------
UINT08 mu08_SweepFlag
+ bit[7-4] : Counter
+ F End Meas.
[3-0] : Meas. Status Counter
+ F Error
+ Other Status Counter
------------------------------------------------------------------------------*/
UINT08 MeasureRf( void )
{
switch ( mu08_MeasSC )
{
case MEAS_START: // Initialize
gu08_TimerAdjustMeasMain = 200; // GiveUp Timer
SendTable( (UINT08 *)Tbl_MEAS_RF, sizeof(Tbl_MEAS_RF) ); // YTC007 20050110
mu08_MeasSC = MEAS_RF_CHECK_1ST;
break;
case MEAS_RF_CHECK_1ST: // Check 1st. Meas. End
if( DrvDSP_BIOS_ReadBusy() )
{
// BUSY == HI
if( !( DrvDSP_BIOS_GetStatus( ) & 0x08 ) )
{
// Meas. Success
gu08_TimerAdjustMeasSub = 5;
mu08_MeasSC = MEAS_RF_INTERVAL;
}
else
{
// Meas. Error ( Remeas. )
SendTable( (UINT08 *)Tbl_RE_MEAS_RF, sizeof(Tbl_RE_MEAS_RF) ); // YTC008 20050110
}
}
break;
case MEAS_RF_INTERVAL: // Interval
if( gu08_TimerAdjustMeasSub == 0 )
{
// Time has come!
// Start next meas.
DrvDSP_BIOS_WriteReg( 0xD0, 0xC0 );
mu08_MeasSC = MEAS_RF_CHECK_2ND;
}
break;
case MEAS_RF_CHECK_2ND: // Check 2nd. Meas. End
// Waiting BUSY
if( DrvDSP_BIOS_ReadBusy() )
{
if( !( DrvDSP_BIOS_GetStatus( ) & 0x08 ) )
{
// Meas. Success -----------------------------------------------
// Read 0xDE 怣崋慖戰
// Read Result - - - - - - - - - - - - - - - - - - - - - - - - -
// Bottom
DrvDSP_BIOS_WriteReg( 0xD5, 0x01 );
mu08_MeasRfMin = DrvDSP_BIOS_ReadResult();
// Peak
DrvDSP_BIOS_WriteReg( 0xD5, 0x00 );
mu08_MeasRfMax = DrvDSP_BIOS_ReadResult();
MeasureRfEnd( );
return 0xF0;
}
else
{
// Meas. Error ( Remeas. from 1st. ) ---------------------------
SendTable( (UINT08 *)Tbl_RE_MEAS_RF, sizeof(Tbl_RE_MEAS_RF) ); // YTC008 20050110
mu08_MeasSC = MEAS_RF_CHECK_1ST;
}
}
}
if( gu08_TimerAdjustMeasMain == 0 )
{
// 僞僀儉傾僂僩
MeasureRfEnd( );
return 0xFF;
}
return 0x00;
}
/*------------------------------------------------------------------------------
[NAME] :MeasureRfEnd
[FUNCTION] :
[RETURN] :void
[PARAMETER]:UINT08* mu08_SweepFlag
------------------------------------------------------------------------------*/
void MeasureRfEnd( void )
{
SendTable( (UINT08 *)Tbl_MEAS_RF_END, sizeof(Tbl_MEAS_RF_END) ); // YTC007 20050110
}
/*******************************************************************************
Rough Focus Bias
*******************************************************************************/
void CheckSetNextFB( void )
{
if( mu08_index_FB == 0x09 )
{
mu08_MainSC = PRE_FB_ERROR;
return;
}
// Set Next FB
DrvDSP_BIOS_WriteReg( 0x98, Tbl_PRE_FB[++mu08_index_FB] );
gu16_TimerAdjustMain = 200;
// Set GFS OK Timer
if( mu08_index_FB == 0x05 )
{
// Center FB
gu16_TimerAdjustMain = 640;
}
}
/*------------------------------------------------------------------------------
[NAME] :AdjustFbRough
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
------------------------------------------------------------------------------*/
void AdjustFbRough( void )
{
UINT08 u08_DspStatus;
switch ( mu08_MainSC )
{
case ADJUST_GO:
// SetGainWithOffset( gu08_kind_Gain );
mu08_MainSC = WAIT_GFS;
mu08_SubSC = //0;
mu08_OnGFS = 0;
mu08_flg_GFS = 1;
DrvDSP_BIOS_HalfClv_On( );
DrvDSP_BIOS_Clv_On( );
AdjustAuto_SetTimer( ); // FB TimeUp
gu08_TimerAdjustMeasMain = TIMER_STABLE_GFS; // Set GFS OK Timer
gu08_TimerAdjustMeasSub = 32; // Set FOK NG Timer
break;
case WAIT_GFS:
u08_DspStatus = DrvDSP_BIOS_GetStatus( );
if( u08_DspStatus & B00000001 )
{
// bit0( GFS ) High ------------------------------------------------
mu08_OnGFS = 1;
if( gu08_TimerAdjustMeasMain == 0 )
{
// Fix FB
// mu08_MainSC =ADJUST_END;
mu08_MainSC = PRE_FB_FIX;
}
}
else
{
// bit0( GFS ) Low -------------------------------------------------
if( gu16_TimerAdjustMain == 0 )
{
// GFS Error in this FB ----------------------------------------
if( mu08_OnGFS )
{
// GFS, some time H
CheckSetNextFB( );
}
else
{
// GFS, still Low
mu08_MainSC = PRE_FB_ERROR;
}
}
else
{
// Retry ------------------------------------------------------
// Reset GFS OK Timer
gu08_TimerAdjustMeasMain = TIMER_STABLE_GFS;
if( u08_DspStatus & B00000010 )
{
// FOK H
gu08_TimerAdjustMeasSub = 32; // Reset FOK NG Timer
}
else
{
// FOK L
if( gu08_TimerAdjustMeasSub == 0 )
{
// FOK still Low
CheckSetNextFB( );
}
}
}
}
break;
case PRE_FB_ERROR:
AdjustAuto_NoDisc( );
gu08_sts_AdjustAuto = ADJUST_ERROR;
DrvDSP_BIOS_HalfClv_Off( );
break;
case PRE_FB_FIX:
mu08_MainSC = ADJUST_END;
DrvDSP_BIOS_HalfClv_Off( );
break;
}
}
/*------------------------------------------------------------------------------
[NAME] :AdjustAuto_NoDisc
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------*/
void AdjustAuto_NoDisc( void )
{
DrvDSP_BIOS_00End();
DrvDSP_BIOS_Stop( );
DrvDSP_BIOS_Tracking_Off( );
DrvDSP_BIOS_Nothing( );
DrvDSP_BIOS_NoDisc( );
}
/*******************************************************************************
RF Accurate
*******************************************************************************/
/*------------------------------------------------------------------------------
[NAME] :AdjustRfAccurate
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------*/
void AdjustRfAccurate( void )
{
// UINT08 u08_Temp;
switch ( mu08_MainSC )
{
case ADJUST_GO:
mu08_MainSC = EXECUTE_FIT_RF;
AdjustAuto_SetTimer( );
mu08_SweepFlag = 0x00;
MeasureRfRestart();
break;
case EXECUTE_FIT_RF:
// Meas. RF ============================================================
// u08_Temp =MeasureRf();
// switch( u08_Temp )
switch ( MeasureRf( ) )
{
case 0xFF: // RF Meas. Error --------------------------------------
// Retry
MeasureRfRestart();
break;
case 0xF0: // RF Meas. Success ------------------------------------
// RF Position - - - - - - - - - - - - - - - - - - - - - - - - - - -
if( FitRfPosition( ) == TRUE )
{
// Fit or Limit RF Position in this time
if( ( mu08_SweepFlag & 0xF0 ) == 0xF0 )
{
// Already Fited RF Amplitude
mu08_MainSC = WAIT_END;
stInfoArea.AdjustOffset[gu08_kind_Gain][11] = gu08_9C_RfShift;
break;
}
}
// RF Amplitude - - - - - - - - - - - - - - - - - - - - - - - - - -
if( ( mu08_SweepFlag & 0xF0 ) != 0xF0 )
{
if( FitRfAmplitude( ) == TRUE )
{
// Fit or Limit RF Amplitude
mu08_SweepFlag |= 0xF0;
// 怳暆偑崌偭偰傕埵抲崌傢偣宲懕
}
}
MeasureRfRestart();
}
if( gu16_TimerAdjustMain == 0 )
{
MeasureRfEnd( );
mu08_MainSC = WAIT_END;
}
break;
case WAIT_END:
if( DrvDSP_BIOS_ReadBusy( ) )
{
DrvDSP_BIOS_AdjEnd();
}
}
}
/*------------------------------------------------------------------------------
UINT08 mu08_SweepFlag
+ bit[7-4] : Counter
+ F End Meas.
[3-0] : Meas. Status Counter
+ F Error
+ Other Status Counter
------------------------------------------------------------------------------*/
UINT08 FitRfPosition( void )
{
if( mu08_MeasRfMin > RF_FOK_H )
{
return DownRfPosition();
}
else if( mu08_MeasRfMin <= RF_FOK_L )
{
return UpRfPosition();
}
else
{
// Fit! Position
return TRUE;
}
}
/*------------------------------------------------------------------------------
FitRfAmplitude
------------------------------------------------------------------------------*/
UINT08 FitRfAmplitude( )
{
UINT08 u08_RfAmplitude;
u08_RfAmplitude = mu08_MeasRfMax - mu08_MeasRfMin;
if( ( mu08_SweepFlag & 0xF0 ) == 0 )
{
// 1st. Try ------------------------------------------------------------
mu08_SweepFlag |= 0x10; // Flag Fix Direction
if( u08_RfAmplitude > RF_AMP_MAX )
{
// mu08_SweepFlag &= ~0x01; // Flag Down Sweep
}
else if( u08_RfAmplitude <= RF_AMP_MIN )
{
mu08_SweepFlag |= 0x01; // Flag Up Sweep
}
else
{
return TRUE;
}
}
else
{
// Loop ----------------------------------------------------------------
if( ( mu08_SweepFlag & 0x0F ) )
{
// Up Sweep
if( u08_RfAmplitude > RF_AMP_MIN )
{
return TRUE;
}
else
{
mu08_9D_RfGain += 2;
DrvDSP_BIOS_WriteRfGain();
if( mu08_9D_RfGain == 0x1F )
{
// Upper Limit, The end
return TRUE;
}
}
}
else
{
// Up Sweep
if( u08_RfAmplitude <= RF_AMP_MAX )
{
return TRUE;
}
else
{
mu08_9D_RfGain -= 2;
DrvDSP_BIOS_WriteRfGain();
if( mu08_9D_RfGain == 0x01 )
{
// Lower Limit, The end
return TRUE;
}
}
}
}
return FALSE;
}
////////////////////////////////////////////////////////////////////////////////
/*******************************************************************************
Focus Gain / Track Gain / Focus Bias
*******************************************************************************/
void AdjustGainBias( void )
{
switch ( mu08_MainSC )
{
case ADJUST_GO:
mu08_MainSC = EXECUTE_SWEEP;
mu08_SubSC = SWEEP_START;
switch( gu08_sts_AdjustAuto )
{
case ADJUST_FG:
gu08_AdjFgSweep =0x0A; // Backup FG Sweep Counter for Gainup
gu08_AdjResult[2] = 0x0F;
mu08_Kind = ADJUST_FG_CMD;
break;
case ADJUST_TG:
gu08_AdjTgSweep =0x0A; // Backup TG Sweep Counter for Gainup
gu08_AdjResult[3] = 0x0F;
mu08_Kind = ADJUST_TG_CMD;
break;
case ADJUST_FB:
gu08_AdjResult[0] = 0x80;
mu08_Kind = ADJUST_FB_CMD;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -