📄 servo.c
字号:
WrCoeff(BKRATIO,0x08);//0x06);
}
WrDSP(SPD_FIX,0x18);//0x20 0x28);
WrDSP(SPD_MODE,0x01);
WrDSP(TACTION,0x53);
}
else
{
WrCoeff(KTV1,0xb0);
WrCoeff(KCV1,0x2800);
WrCoeff(KCV3,0x2800);
if(jump_num>15000)
{
WrCoeff(KFPROF1,0x7fff);//0x7fff);
WrCoeff(BKRATIO,0x03);
}
else if(jump_num>9000)
{
WrCoeff(KFPROF1,0x7800);//0x7000);
WrCoeff(BKRATIO,0x03);
}
else if(jump_num>6000)
{
WrCoeff(KFPROF1,0x6800);//0x6000);
WrCoeff(BKRATIO,0x04);
}
/* else
{
WrCoeff(KFPROF1,0x6800);//0x4800);
WrCoeff(BKRATIO,0x04);
}
*/
WrDSP(SPD_FIX,0xe0);
WrDSP(SPD_MODE,0x01);
WrDSP(TACTION,0x13);
}
}
}
#else // v1.00
{ //CD disc
if(jump_num>20000){jump_num=20000;}
if((jump_num>2047) && (ibLongJumpErr>10)){jump_num=2047;}
if((jump_num>4096)&&fDVCDDisc) //R1808_COM_01
{jump_num=4096;} //R1808_COM_01
WrDSP(INIT_V_ERROR,0xC0);
if(jump_num<2048)
{ //CD short jump
fLongJump=0;
if(jump_num<128)
{ //R1808_COM_01***
if( (jump_num>5)&&(jump_num<20) )
jump_num=5;
WrCoeff(JMPTRKN,jump_num);
} //R1808_COM_01&&&
else
WrCoeff(JMPTRKN,128);
if(jump_dir==OUT_WARD)
WrDSP(TACTION,0x4D);
else
WrDSP(TACTION,0x0D);
}
else
{ //CD long jump
fLongJump=1;
WrCoeff(JMPTRKN,(jump_num/10)*8);
WrCoeff(KVFB,0x7f00);
WrSSI(FTGR,ibFTGR|0x03); //R1808_COM_01
WrSSI(CDR,(RdSSI(CDR)|0x20));//set DPD TE BW.
WrReg(PLLEN,0x08);
WrReg(PDTYPE,0x00);
if(jump_dir==OUT_WARD)
{
WrCoeff(KTV1,0x0260);////0x03E8); ---d030405
WrCoeff(KCV1,0x5000);
WrCoeff(KCV3,0x1900);//3200);//0x1900);
if(jump_num>14000)
{
WrCoeff(KFPROF1,0x7fff);
WrCoeff(BKRATIO,0x09);//0x04);
}
else if(jump_num>8000)
{
WrCoeff(KFPROF1,0x7000);
WrCoeff(BKRATIO,0x09);//0x04);
}
else if(jump_num>6000)
{
WrCoeff(KFPROF1,0x7000);
WrCoeff(BKRATIO,0x0a);//0x05);
}
else
{
WrCoeff(KFPROF1,0x7fff);
WrCoeff(BKRATIO,0x0c);//0x06);
}
WrDSP(SPD_FIX,0x18);//0x20 0x28);
WrDSP(SPD_MODE,0x01);
WrDSP(TACTION,0x53);
}
else
{
WrCoeff(KTV1,0x0110);
WrCoeff(KCV1,0x3b00);
WrCoeff(KCV3,0x3b00);
if(jump_num>19000)
{
WrCoeff(KFPROF1,0x7fff);
WrCoeff(BKRATIO,0x03);
}
else if(jump_num>13000)
{
WrCoeff(KFPROF1,0x7000);
WrCoeff(BKRATIO,0x03);
}
else if(jump_num>7000)
{
WrCoeff(KFPROF1,0x7000);
WrCoeff(BKRATIO,0x04);
}
else
{
WrCoeff(KFPROF1,0x7800);
WrCoeff(BKRATIO,0x05);
}
WrDSP(SPD_FIX,0xc0); //0x80);
WrDSP(SPD_MODE,0x01);
WrDSP(TACTION,0x13);
}
}
}
#endif
fS0=fS1=0;
bSKSubPhase++;
case 2:
status=RdStatus(CMD_COMP,200);
if(status!=BUSY)
{
if(fLongJump)
{
if(fCDDisc)
WrSSI(FTGR,ibFTGR);
else
{
if(fCurrentLayer)
WrSSI(CER,ibCER_1);
else
WrSSI(CER,ibCER);
}
ibLongJumpErr++;
WrReg(PLLEN,0x0C);
WrReg(PDTYPE,0x02);
if(!(RdReg(SVO_STATUS)&FOCUS_OK))
status=ERROR;
else if(status!=ERROR)
{
if( (RdReg(0x085)==0x00) && (RdReg(0x084)==0x08) ) //1b02a24j***
{
WrReg(0x051,0x8A);
WrReg(0x051,0x0A);
}
WrDSP(CAV_CLV,0x01);//CLV mode
WrDSP(SPD_MODE,0x04);
}
}
WrSSI(CBR,ibCBR);
WrSSI(CDR,(RdSSI(CDR)&0xDF));
WrSSI(CER,(RdSSI(CER)&0x7f));
WrCoeff(KC3,0x05DC);
if(fDVDDisc)
{
WrDSP(FSET,0x10);
WrDSP(TSET,0x17);
}
else
{
WrDSP(FSET,0x10);
WrDSP(TSET,0x17);
}
WrDSP(0x5F,0xd0);
fDisRdQ=0;
fLongJump=0;
fJumpTrack=0;
bSKSubPhase=0;
}
}
// copy_jump_dir = jump_dir;
// copy_long_jump = (jump_num>4000);
return status;
}
#else
/*-----------------------------------------------------------------------------
Function: -
Input: bit jump_dir, WORD jump_num
Output: READY,ERROR,BUSY
-----------------------------------------------------------------------------*/
BYTE JumpTracks(bit jump_dir,WORD jump_num)
{
BYTE status=BUSY;
//R1606_COM_03 WrDSP(LJPMODE,0x00);
WrDSP(0x5F,0x80); //1c13a02b
switch(bSKSubPhase)
{
case 0:
fDisRdQ=1;
fJumpTrack=1;
fCHKID=1;//R1703_COM_02
ibCBR=RdSSI(CBR);
WrSSI(CBR,ibCBR&0xDF);
//WrSSI(RFCR,(RdSSI(RFCR)|0x08));//R1606_COM_03 //enable AGC fast attact current.
WrDSP(0x22,0x36); //R1606_COM_03
WrDSP(LJPMODE,0x00);//R1606_COM_03
WrDSP(FSET,0x00);
if(fDVDDisc)
WrDSP(TSET,0x07);
else
WrDSP(TSET,0x06);
bSKSubPhase++;
case 1:
if(fDVDDisc)
{
if(jump_num>45000){jump_num=45000;}
WrDSP(INIT_V_ERROR,0xf0);//f0);
// if(jump_num<4096)
if(jump_num<1500)
{ //DVD short jump
fLongJump=0;
//R1703_COM_02 if(jump_num<15)
//R1703_COM_02 WrCoeff(JMPTRKN,1);
//R1703_COM_02 else
WrCoeff(JMPTRKN,jump_num);
/* //R1606_COM_03***
WrSSI(MRCR,0x04);
WrSSI(CAR,0x0D);
if(fDVDDual)
WrSSI(CDR,(dlCDR&0xDF));
else
WrSSI(CDR,(dCDR&0xDF));
*/ //R1606_COM_03&&&
/* if(fDVDDual) //2416a01j*** //2417a02j***
{
if(jump_num >= 10)
WrDSP(SEEKSET3,0x6a);
else
WrDSP(SEEKSET3,0x62);
}*/ //2416a01j&&& //2417a02j&&&
#if 1
// if(fDVDDual)
if((fDVDDual)&&(!fCurrentLayer)) // layer 0 1#~16#
{
/*
if(jump_num>256)
WrCoeff(KC3,0x500);
else
WrCoeff(KC3,0x420);
*/
WrDSP(SEEKSET3,0x69);
if(jump_num>300) jump_num=300;
if(jump_dir==OUT_WARD)
{
WrCoeff(KC3,0x200);
if(jump_num<=2)
{
WrDSP(INIT_V_ERROR,0x10);
WrDSP(SEEKSET1,0x61);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x300);
}
else
if(jump_num<=20)
{
WrDSP(INIT_V_ERROR,0x40);
WrDSP(SEEKSET1,0x62);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x300);
}
else if(jump_num<=256)
{
WrDSP(INIT_V_ERROR,0x80);
WrDSP(SEEKSET1,0x62);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x400);
}
else
{
jump_num=200;
WrDSP(INIT_V_ERROR,0xc0);
WrDSP(SEEKSET1,0x62);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x400);
}
}
else
{
WrCoeff(KC3,0x200);
if(jump_num<=2)
{
WrDSP(INIT_V_ERROR,0x10);
WrDSP(SEEKSET1,0x61);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x320);
}
else
if(jump_num<=20)
{
WrDSP(INIT_V_ERROR,0x40);
WrDSP(SEEKSET1,0x62);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x320);
}
else if(jump_num<=256)
{
WrCoeff(KC3,0x300);
// WrCoeff(KC3,0x200);
WrDSP(INIT_V_ERROR,0x80);
WrDSP(SEEKSET1,0x62);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x320);
}
else
{
jump_num=200;
WrCoeff(KC3,0x230);
// WrCoeff(KC3,0x200);
WrDSP(INIT_V_ERROR,0x90);
WrDSP(SEEKSET1,0x62);
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x320);
}
}
}
else
//#elif 1
if((fDVDDual)&&(fCurrentLayer)) // layer 1 17#~32#
// if(fDVDDual) //2419a01j***
{
if(jump_num>500) jump_num=500;
if(jump_dir==OUT_WARD)
{
WrDSP(INIT_V_ERROR,0x40); //2413a03j 0xf0-->0xc0
WrCoeff(KTSEEK1,0x800);
WrCoeff(KTSEEK2,0x400);
WrDSP(SEEKSET1,0x62);
WrDSP(SEEKSET3,0x69);
if(jump_num>256)
WrCoeff(KC3,0x0500);
else
WrCoeff(KC3,0x0450);
}
else
{
WrDSP(INIT_V_ERROR,0x40); //2413a03j 0xf0-->0xc0
WrCoeff(KTSEEK1,0x800);//0x600);
WrCoeff(KTSEEK2,0x400);
WrDSP(SEEKSET1,0x62);//0x82);
WrDSP(SEEKSET3,0x69);
if(jump_num>256)
WrCoeff(KC3,0x0500);
else
WrCoeff(KC3,0x0450);
}
}
else
#endif
{
if(jump_num>256)
WrCoeff(KC3,0x0620);
else
WrCoeff(KC3,0x05dc);
//WrDSP(SEEKSET1,0x63); //0x82 2305s02i 0xf1
WrDSP(SEEKSET3,0x69);
if(jump_dir==OUT_WARD)
{
WrDSP(INIT_V_ERROR,0x90);
WrDSP(SEEKSET1,0x82);
if(jump_num<=10)
WrCoeff(KTSEEK1,0x800);
else if(jump_num<=256)
WrCoeff(KTSEEK1,0x600);
else
WrCoeff(KTSEEK1,0x800);
}
else
{
if(jump_num<=10)
WrCoeff(KTSEEK1,0x400);
else if(jump_num<=256)
WrCoeff(KTSEEK1,0x600);
else
WrCoeff(KTSEEK1,0x800);
WrDSP(INIT_V_ERROR,0x90);
WrDSP(SEEKSET1,0x82);
}
//WrDSP(SEEKSET3,0x62);//R1606_COM_03
} //2419a01j&&&
if(jump_dir==OUT_WARD)
{
WrCoeff(JMPTRKN,jump_num);
if(jump_num > 2 )
WrDSP(TACTION,0x4D);
else
WrDSP(0x0B,0x40);
// WrDSP(TACTION,0x4D);
}
else
{
WrCoeff(JMPTRKN,jump_num);
if(jump_num > 2 )
WrDSP(TACTION,0x0D);
else
WrDSP(0x0B,0x0);
// WrDSP(TACTION,0x0D);
}
}
else
{ //DVD long jump
fLongJump=1;
WrCoeff(JMPTRKN,(jump_num/10)*8);
WrSSI(CER,0x10); //R1808_COM_10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -