📄 drv_dsp_adjust.c
字号:
break;
case GAIN_X1:
#if CHECK_OFFSET
CheckOffset(gu08_kind_Gain);
#endif
gu08_sts_AdjustOffset = OFS_CLEAN_UP;
mu08_MoveLensSC = START_UP;
break;
}
#else
#if CHECK_OFFSET
CheckOffset(gu08_kind_Gain);
#endif
if( gu08_kind_Gain == GAIN_X1 )
{
gu08_sts_AdjustOffset = OFS_CLEAN_UP;
mu08_MoveLensSC = START_UP;
}else
{
gu08_sts_AdjustOffset = OFS_INPUT;
mu08_SubSC = OFFSET_START;
gu08_kind_Gain--;
}
#endif
break;
case OFS_CLEAN_UP:
gu08_sts_AdjustOffset = ADJUST_NOP;
break;
}
mu08_MainSC = ADJUST_GO;
}
else if( mu08_MainSC == ADJUST_ERROR )
{
gu08_sts_AdjustOffset = ADJUST_ERROR;
return;
}
}
switch ( gu08_sts_AdjustOffset )
{
case OFS_VCO:
MoveLens( );
OfsVco( );
break;
case OFS_READY:
MoveLens( );
ReadyOffset( );
break;
case OFS_INPUT:
AdjustOfsInput( );
break;
#if ROM // SDC 20050209
case OFS_DRIVE_TD_FD:
AdjustOfsTdFd( );
break;
#endif
case OFS_DRIVE_SD:
AdjustOfsSd( );
break;
// case OFS_FIT_RF_FOK:
// FitRfFok( );
// break;
case OFS_CLEAN_UP:
MoveLens( );
break;
}
#else //**********************************************************************
if( gu08_sts_DSPINIT && gu08_sts_AdjustOffset && ( gu08_sts_AdjustOffset != ADJUST_ERROR ))
{
if( gu08_sts_AdjustOffset == ADJUST_START )
{
mu08_MoveLensSC = START_DOWN;
gu08_sts_MovePickupIn=1; //YTC000 僗儗僢僪堷偒崬傒傪偙偙偱梫媮偡傞丅
gu08_sts_AdjustOffset = OFS_VCO;
mu08_MainSC = ADJUST_GO;
}
if( gu08_sts_AdjustOffset <= OFS_READY )
MoveLens();
AdjustOffset_seqTbl[(gu08_sts_AdjustOffset>>4)-1]();
if( mu08_MainSC == ADJUST_END )
{
switch( gu08_sts_AdjustOffset )
{
case OFS_VCO:
gu08_kind_Gain = GAIN_X5;
break;
case OFS_FIT_RF_FOK:
#if CHECK_OFFSET
CheckOffset(gu08_kind_Gain);
#endif
if( gu08_kind_Gain == GAIN_X1 )
{
gu08_sts_AdjustOffset = OFS_CLEAN_UP - 0x10;
mu08_MoveLensSC = START_UP;
}
else
{
gu08_sts_AdjustOffset = OFS_INPUT - 0x10;
gu08_kind_Gain--;
}
break;
}
gu08_sts_AdjustOffset += 0x10;
if( gu08_sts_AdjustOffset <= OFS_CLEAN_UP )
{
mu08_SubSC = OFFSET_START;
mu08_MainSC = ADJUST_GO;
}
else
{
gu08_sts_AdjustOffset = ADJUST_NOP;
}
}
}
#endif
}
//*------------------------------------------------------------------------------
#if !ROM // SDC 20050208
void MeasVcoMinMaxStart( void )
{
mu08_MeasSC = MEAS_START;
MeasVcoMinMax( );
}
void MeasVcoRestart( UINT08 sw )
{
// VCO僙儞僞乕揹棳掞峈抣
DrvDSP_BIOS_WriteReg( 0x9E + sw, gu08_Vco[sw] );
// VCO嵞應掕
mu08_MeasSC = MEAS_START;
MeasVcoMinMax( );
}
void SetMaxState( void )
{
DrvDSP_BIOS_WriteReg( 0x8B, 0x7F ); // Maxmam
mu08_MeasSC = MEAS_WAIT_VCO_MAX;
}
#endif
/*------------------------------------------------------------------------------
[NAME] :OfsVco
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
------------------------------------------------------------------------------*/
void OfsVco( void )
{
switch ( mu08_MainSC )
{
case ADJUST_GO:
SendTable( (UINT08 *)Tbl_MEAS_VCO_START, sizeof(Tbl_MEAS_VCO_START) ); // YTC007 20050110
gu08_Vco[VCO_OFFSET] = VCO_OFS_INIT;
gu08_Vco[VCO_GAIN] = VCO_GAIN_INIT;
DrvDSP_BIOS_WriteReg( 0x9E, gu08_Vco[VCO_OFFSET] ); //挷惍僙儞僞乕抣 梫専摙丅僆僼僙僢僩幚峴慜偼愝掕儕儘乕僪丠
DrvDSP_BIOS_WriteReg( 0x9F, gu08_Vco[VCO_GAIN] ); //挷惍僙儞僞乕抣
// mu08_MainSC = EXECUTE_VCO_GAIN;
mu08_MainSC = WAIT_STABLE_VCO; //YTC000 俢俽俹弶婜壔捈屻偺VCO敪怳埨掕懸偪丅
mu08_SweepFlag = 0;
// // VCO應掕梫媮 //YTC000 婰弎埵抲曄峏
// mu08_MeasSC = MEAS_START;
// MeasVcoMinMax( );
break;
//YTC000 怴僗僥乕僩捛壛
case WAIT_STABLE_VCO:
// if( gu08_TimerAdjustMeasMain )
// {
// break;
// }
if( mu08_MoveLensSC != DONE_LENS_MOVE )
{
break;
}
// VCO應掕梫媮
MeasVcoMinMaxStart( );
mu08_MainSC = EXECUTE_VCO_GAIN;
//YTC000 break;
//v. 懕偗偰丄壓偺張棟
case EXECUTE_VCO_GAIN:
if( MeasVcoMinMax( ) == MEAS_SUCCESS )
{
// Meas. End
if( ExecuteVcoGainAdjust( ) )
{
mu08_MainSC = EXECUTE_VCO_OFFSET;
MeasVcoMinMaxStart( );
}
}
break;
case EXECUTE_VCO_OFFSET:
if( MeasVcoMinMax( ) == MEAS_SUCCESS )
{
// Meas. End
if( ExecuteVcoOffsetAdjust( ) )
{
// EndVcoOffsetAdjust( );
// PLL愊暘儗僕僗僞抣
DrvDSP_BIOS_WriteReg( 0x8A, Tbl_CLV_HOLD[gu08_Mech] ); // 捠忢 // YTC007 20050108
DrvDSP_BIOS_WriteReg( 0x82, 0x00 ); // YTC011 20050218 OFFSET ADJ 偼僩儗乕僯儞僌忬懺偱應傞丅
mu08_MainSC = ADJUST_END;
}
}
break;
}
}
/*------------------------------------------------------------------------------
[NAME] :ExecuteVcoGainAdjust
[FUNCTION] :
[RETURN] :UINT08
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------
YTC001 20041224 Update
------------------------------------------------------------------------------*/
UINT08 ExecuteVcoGainAdjust( void )
{
UINT08 mu08_ResultVcoGain;
if( mu08_ResultVcoMin < 0x04 )
{
// VCOmin < 0x04(壓尷)
if( gu08_Vco[VCO_OFFSET] != 0x1F )
{
// 愝掕抣嵟戝偱側偄
gu08_Vco[VCO_OFFSET]++;
// VCO僙儞僞乕揹棳掞峈抣 / VCO嵞應掕
MeasVcoRestart( VCO_OFFSET );
return FALSE;
}
}
mu08_ResultVcoGain = mu08_ResultVcoMax - mu08_ResultVcoMin;
if( mu08_ResultVcoGain < VCO_GAIN_MAX )
{
// VCO Gain < VCO_GAIN_MAX
if( mu08_ResultVcoGain < VCO_GAIN_MIN )
{
// VCO Gain < VCO_GAIN_MIN (Too Low)
switch( mu08_SweepFlag & 0x0F )
{
case 0x00:
mu08_SweepFlag |= 0x08; // Up Sweep Flag On
case 0x08:
if( gu08_Vco[VCO_GAIN] != 0x0F )
{
// updatable Gain Parameter
gu08_Vco[VCO_GAIN]++;
// VCO僎僀儞掞峈抣 / VCO嵞應掕
MeasVcoRestart( VCO_GAIN );
return FALSE;
}
// case 0x04:
// // Finish
// return TRUE;
}
}
}
else
{
// VCO(max-min) >= VCO_GAIN_MAX (Too High)
switch( mu08_SweepFlag & 0x0F )
{
case 0x00:
mu08_SweepFlag |= 0x04; // Down Sweep Flag On
case 0x04:
if( gu08_Vco[VCO_GAIN] != 0x00 )
{
// Updatable Gain Parameter
gu08_Vco[VCO_GAIN]--;
// VCO僎僀儞掞峈抣 / VCO嵞應掕
MeasVcoRestart( VCO_GAIN );
return FALSE;
}
// case 0x08:
// return TRUE;
}
}
return TRUE;
}
/*------------------------------------------------------------------------------
[NAME] :ExecuteVcoOffsetAdjust
[FUNCTION] :
[RETURN] :UINT08
[PARAMETER]:void
[HISTORY] :
[NOTE] :
------------------------------------------------------------------------------
YTC001 20041224 Update
------------------------------------------------------------------------------*/
UINT08 ExecuteVcoOffsetAdjust( void )
{
if( mu08_ResultVcoMax < VCO_FREQ_MAX )
{
// VCOmax < VCO_FREQ_MAX(忋尷)
if( mu08_ResultVcoMax >= VCO_FREQ_MIN )
{
// VCOmax >= VCO_FREQ_MIN(壓尷)(揔惓斖埻)
// EndVcoOffsetAdjust( );
return TRUE;
}
// VCOmax < VCO_FREQ_MIN(壓尷) (Too Low)
switch( mu08_SweepFlag & 0xF0 )
{
case 0x00:
mu08_SweepFlag |= 0x80; // Up Sweep Flag On
case 0x80:
if( gu08_Vco[VCO_OFFSET] != 0x1F )
{
// Updatable Offset Parameter
gu08_Vco[VCO_OFFSET]++;
mu08_SweepFlag |= 0x80;
// VCO僙儞僞乕揹棳掞峈抣 / VCO嵞應掕
MeasVcoRestart( VCO_OFFSET );
return FALSE;
}
// case 0x40:
// // 忋徃拞偺壓崀
// return TRUE;
}
}
else
{
// VCOmax >= VCO_FREQ_MAX(忋尷) (Too High)
switch( mu08_SweepFlag & 0xF0 )
{
case 0x00:
mu08_SweepFlag |= 0x40; // Down Sweep Flag On
case 0x40:
if( gu08_Vco[VCO_OFFSET] != 0x00 )
{
// Updatable Offset Parameter
gu08_Vco[VCO_OFFSET]--;
mu08_SweepFlag |= 0x40;
// VCO僙儞僞乕揹棳掞峈抣 / VCO嵞應掕
MeasVcoRestart( VCO_OFFSET );
return FALSE;
}
// case 0x80:
// // 忋徃拞偺壓崀
// return TRUE;
}
}
return TRUE;
}
///*------------------------------------------------------------------------------
// [NAME] :EndVcoOffsetAdjust
// [FUNCTION] :
// [RETURN] :void
// [PARAMETER]:void
// [HISTORY] :
// [NOTE] :
//------------------------------------------------------------------------------*/
//void EndVcoOffsetAdjust( void )
//{
// // PLL愊暘儗僕僗僞抣
//// DrvDSP_BIOS_WriteReg( 0x8A, 0x00 | CLV_HOLD ); // 捠忢 // YTC007 20050108
// DrvDSP_BIOS_WriteReg( 0x8A, Tbl_CLV_HOLD[gu08_Mech] ); // 捠忢 // YTC007 20050108
//
//// BIOS_StartTraining();
// DrvDSP_BIOS_WriteReg( 0x82, 0x20 ); // Wide
// DrvDSP_BIOS_WriteReg( 0x82, 0x00 ); // YTC011 20050218 OFFSET ADJ 偼僩儗乕僯儞僌忬懺偱應傞丅
//
//// DrvDSP_BIOS_WriteReg(0x9E,0x18); //
//// DrvDSP_BIOS_WriteReg(0x9F,0x09); //
//
// return;
//}
/*******************************************************************************
Meassure VCO
*******************************************************************************/
/*------------------------------------------------------------------------------
[NAME] :MeasVcoMinMax
[FUNCTION] :
[RETURN] :UINT08
[PARAMETER]:void
------------------------------------------------------------------------------*/
UINT08 MeasVcoMinMax( void )
{
switch ( mu08_MeasSC )
{
case MEAS_START:
if( mu08_MainSC == EXECUTE_VCO_OFFSET )
{
SetMaxState();
gu08_TimerAdjustMeasMain = 3;
}else
{
DrvDSP_BIOS_WriteReg( 0x8B, 0x80 ); // Minimum
gu08_TimerAdjustMeasMain = 10;
mu08_MeasSC = MEAS_WAIT_VCO_MIN;
}
break;
case MEAS_WAIT_VCO_MIN:
case MEAS_WAIT_VCO_MAX:
if( !gu08_TimerAdjustMeasMain )
{
// Start VCO Meas.
DrvDSP_BIOS_WriteReg( 0xD0, 0xE0 );
mu08_MeasSC -= 0x10; // next state MEAS_VCO_MIN/MAX
}
break;
case MEAS_VCO_MIN:
if( DrvDSP_BIOS_ReadBusy( ) )
{
mu08_ResultVcoMin = GetMeasVco();
SetMaxState();
gu08_TimerAdjustMeasMain = 10;
}
break;
case MEAS_VCO_MAX:
if( DrvDSP_BIOS_ReadBusy( ) )
{
mu08_ResultVcoMax = GetMeasVco();
mu08_MeasSC = MEAS_SUCCESS;
break;
}
}
return mu08_MeasSC;
}
/*------------------------------------------------------------------------------
[NAME] :GetMeasVco
[FUNCTION] :
[RETURN] :UINT08
[PARAMETER]:void
------------------------------------------------------------------------------*/
UINT08 GetMeasVco( void )
{
gu32Work.b.ll = DrvDSP_BIOS_ReadResult();
DrvDSP_BIOS_EndMeasure( );
return gu32Work.b.ll;
}
/*------------------------------------------------------------------------------
[NAME] :MoveLens
[FUNCTION] :
[RETURN] :void
[PARAMETER]:void
------------------------------------------------------------------------------*/
void MoveLens( void )
{
switch ( mu08_MoveLensSC )
{
case START_UP:
DrvDSP_BIOS_Laser_Off( );
gu08_TimerAdjustSub = 0;
mu08_MoveLensSC = MOVING_UP;
mu08_Counter = 1;
break;
case START_DOWN:
gu08_sts_LON =0; // Init 0x60 Status // YTC_20041228
gu08_sts_LON &=~BIT_RF_PH_CPS; // RF_PH_CPS X1 // YTC_20041228
//YTC00G DrvDSP_BIOS_Laser_On( ); //20050129 Laser岝傜偣側偄偱僆僼僙僢僩挷惍偡傞偐傕丅
//B00004 if(( CPU_LCD_SIODR2 & B01000000)!=0) //TAP501 PIN23 LASER_SEL
if(( CPU_LCD_SIODR3 & B00000100)!=0) //TAP502 PIN27 LASER_SEL //B0004
{
DrvDSP_BIOS_Laser_On( );
}
//<<<
gu08_TimerAdjustSub = TIME_STABLE_LASER;
mu08_LensPosition = 0x00;
//B0003 DrvDSP_BIOS_MMute2_Off( );
// Set Initial Lens Position
#if ROM // SDC 20050209
DrvDSP_BIOS_WriteReg( 0xC8, mu08_LensPosition );
#else
DrvDSP_BIOS_WriteLensPosition();
#endif
// Manual Lens Ctrl.
DrvDSP_BIOS_WriteReg( 0xC0, 0x20 ); // Manual Ctrl
mu08_MoveLensSC = MOVING_DOWN;
mu08_Counter = 0; //
// break;
case MOVING_DOWN:
case MOVING_UP:
// Check & Update Counter
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -