📄 l2_flens.c
字号:
L3_SetMotorStep(0, 0, 20);
L3_SetMotorStep(1, 0, 20);
L3_SetMotorStep(1, 1, 20);
break;
case 3:L3_SetMotorStep(1, 1, 20);
L3_SetMotorStep(0, 1, 20);
L3_SetMotorStep(0, 0, 20);
L3_SetMotorStep(1, 0, 20);
break;
default : break;
}
}
}
#endif
#ifdef M91H2 // Lens module
{
UCHAR position;
position = (XBYTE[0X292E] << 4) | (Number & 0x0F);
switch (position)
{
case 0xAA:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Ten
L3_SetMotorStep(1, 0, 25);
// Phase Nine
L3_SetMotorStep(0, 0, 15);
// Phase Eight
L3_SetMotorStep(0, 1, 12);
// Phase Seven
L3_SetMotorStep(1, 1, 12);
// Phase SIX
L3_SetMotorStep(1, 0, 12);
// Phase Five
L3_SetMotorStep(0, 0, 12);
// Phase Four
L3_SetMotorStep(0, 1, 12);
// Phase Three
L3_SetMotorStep(1, 1, 12);
// Phase Two
L3_SetMotorStep(1, 0, 12);
// Phase One
L3_SetMotorStep(0, 0, 12);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x00;
break;
case 0xA4:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Ten
L3_SetMotorStep(1, 0, 25);
// Phase Nine
L3_SetMotorStep(0, 0, 15);
// Phase Eight
L3_SetMotorStep(0, 1, 12);
// Phase A
L3_SetMotorStep(1, 1, 6);
// Phase B
L3_SetMotorStep(0, 1, 10);
L3_SetMotorStep(1, 1, 6);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x06;
break;
case 0xA5:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Ten
L3_SetMotorStep(1, 0, 23);
// Phase Nine
L3_SetMotorStep(0, 0, 13);
// Phase Eight
L3_SetMotorStep(0, 1, 10);
// Phase Seven
L3_SetMotorStep(1, 1, 10);
// Phase A
L3_SetMotorStep(1, 0, 5);
// Phase B
L3_SetMotorStep(1, 1, 9);
L3_SetMotorStep(1, 0, 5);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x05;
break;
case 0xA6:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Ten
L3_SetMotorStep(1, 0, 23);
// Phase Nine
L3_SetMotorStep(0, 0, 13);
// Phase Eight
L3_SetMotorStep(0, 1, 10);
// Phase Seven
L3_SetMotorStep(1, 1, 10);
// Phase SIX
L3_SetMotorStep(1, 0, 10);
// Phase A
L3_SetMotorStep(0, 0, 5);
// Phase B
L3_SetMotorStep(1, 0, 12);
L3_SetMotorStep(1, 0, 10);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x04;
break;
case 0x66:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase SIX
L3_SetMotorStep(1, 0, 25);
// Phase Five
L3_SetMotorStep(0, 0, 15);
// Phase Four
L3_SetMotorStep(0, 1, 12);
// Phase Three
L3_SetMotorStep(1, 1, 12);
// Phase Two
L3_SetMotorStep(1, 0, 12);
// Phase One
L3_SetMotorStep(0, 0, 12);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x00;
break;
case 0x61:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase A
L3_SetMotorStep(0, 0, 18);
// Phase B
L3_SetMotorStep(1, 0, 8);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x05;
break;
case 0x62:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase SIX
L3_SetMotorStep(1, 0, 25);
// Phase A
L3_SetMotorStep(0, 0, 4);
// Phase B
L3_SetMotorStep(1, 0, 10);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x04;
break;
case 0x51:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase A
L3_SetMotorStep(0, 1, 12);
// Phase B
L3_SetMotorStep(0, 0, 10);
L3_SetMotorStep(0, 1, 12);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x04;
break;
case 0x55:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Five
L3_SetMotorStep(0, 0, 25);
// Phase Four
L3_SetMotorStep(0, 1, 15);
// Phase Three
L3_SetMotorStep(1, 1, 12);
// Phase Two
L3_SetMotorStep(1, 0, 12);
// Phase One
L3_SetMotorStep(0, 0, 12);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x00;
break;
case 0x44:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Four
L3_SetMotorStep(0, 1, 25);
// Phase Three
L3_SetMotorStep(1, 1, 15);
// Phase Two
L3_SetMotorStep(1, 0, 12);
// Phase One
L3_SetMotorStep(0, 0, 12);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0x2B07] = 0x10;
XBYTE[0X292E] = 0x00;
break;
default : break;
}
}
#endif
return 0;
}
UCHAR L3_SetMotorStep(UCHAR IN1, UCHAR IN2, USHORT PlusTime) USING_0 //PlusTime unit is 0.1ms
{
#ifdef RICOH4T10 // Ricoh Lens module
{
ULONG temp;
UCHAR temp1;
temp1 = ((IN1) | (IN2 << 1)) & 0x03;
temp = 600 * (ULONG)PlusTime;
XBYTE[0X2090] = (UCHAR)temp;
XBYTE[0X2091] = (UCHAR)(temp >> 8);
XBYTE[0X2092] = (UCHAR)(temp >> 16);
XBYTE[0X209E] = 0x02; //Trigger
if (temp1 == 0x00)
XBYTE[0X2032] = XBYTE[0X2032] & 0x5F;
else if (temp1 == 0x01)
{
XBYTE[0X2032] = XBYTE[0X2032] & 0x7F;
XBYTE[0X2032] = XBYTE[0X2032] | 0x20;
}
else if (temp1 == 0x02)
{
XBYTE[0X2032] = XBYTE[0X2032] & 0xDF;
XBYTE[0X2032] = XBYTE[0X2032] | 0x80;
}
else
XBYTE[0X2032] = XBYTE[0X2032] | 0xA0;
//XBYTE[0X2B07] = 0x11; //Set Mshutteren = 1
while (XBYTE[0X209F] == 0x00);
}
#endif
#ifdef M91H2 // M91H2 Lens module
{
UCHAR temp1;
ULONG dt, temp2;
temp1 = ((IN1) | (IN2 << 1)) & 0x03;
dt = 10 * (ULONG)PlusTime;
XBYTE[0x2073] = 0x01; //Timer unit 10 us
XBYTE[0x20C0] &= 0xFB; //Clear timer interrupt
XBYTE[0x2070] = 0x00; //Write Gtimer
XBYTE[0x2071] = 0x00;
XBYTE[0x2072] = 0x00;
if (temp1 == 0x00)
XBYTE[0X2032] = XBYTE[0X2032] & (~IN1_CTL) & (~IN2_CTL);
else if (temp1 == 0x01)
{
XBYTE[0X2032] = XBYTE[0X2032] & (~IN2_CTL);
XBYTE[0X2032] = XBYTE[0X2032] | IN1_CTL;
}
else if (temp1 == 0x02)
{
XBYTE[0X2032] = XBYTE[0X2032] & (~IN1_CTL);
XBYTE[0X2032] = XBYTE[0X2032] | IN2_CTL;
}
else
XBYTE[0X2032] = XBYTE[0X2032] | IN1_CTL | IN2_CTL;
XBYTE[0x2074] = 0x01; //Start timer
do
{
temp2 = (ULONG)XBYTE[0x2070] | (ULONG)(XBYTE[0x2071] << 8) | (ULONG)(XBYTE[0x2072] << 16);
}
while(temp2 < dt);
XBYTE[0x2074] = 0x00; //Stop timer
}
#endif
#ifdef RICOH4T16 // RICOH Lens module
{
UCHAR temp1;
ULONG dt, temp2;
temp1 = ((IN1) | (IN2 << 1)) & 0x03;
dt = 10 * (ULONG)PlusTime;
XBYTE[0x2073] = 0x01; //Timer unit 10 us
XBYTE[0x20C0] &= 0xFB; //Clear timer interrupt
XBYTE[0x2070] = 0x00; //Write Gtimer
XBYTE[0x2071] = 0x00;
XBYTE[0x2072] = 0x00;
if (temp1 == 0x00)
{
XBYTE[0X2B07] = XBYTE[0X2B07] & (~IN1_CTL);
XBYTE[0X2034] = XBYTE[0X2034] & (~IN2_CTL);
}
else if (temp1 == 0x01)
{
XBYTE[0X2034] = XBYTE[0X2034] & (~IN2_CTL);
XBYTE[0X2B07] = XBYTE[0X2B07] | IN1_CTL;
}
else if (temp1 == 0x02)
{
XBYTE[0X2B07] = XBYTE[0X2B07] & (~IN1_CTL);
XBYTE[0X2034] = XBYTE[0X2034] | IN2_CTL;
}
else
{
XBYTE[0X2B07] = XBYTE[0X2B07] | IN1_CTL;
XBYTE[0X2034] = XBYTE[0X2034] | IN2_CTL;
}
XBYTE[0x2074] = 0x01; //Start timer
do
{
temp2 = (ULONG)XBYTE[0x2070] | (ULONG)(XBYTE[0x2071] << 8) | (ULONG)(XBYTE[0x2072] << 16);
}
while(temp2 < dt);
XBYTE[0x2074] = 0x00; //Stop timer
}
#endif
#ifdef VQAF // Lens module
{
UCHAR temp1;
ULONG dt, temp2;
temp1 = ((IN1) | (IN2 << 1)) & 0x03;
dt = 10 * (ULONG)PlusTime;
XBYTE[0x2073] = 0x01; //Timer unit 10 us
XBYTE[0x20C0] &= 0xFB; //Clear timer interrupt
XBYTE[0x2070] = 0x00; //Write Gtimer
XBYTE[0x2071] = 0x00;
XBYTE[0x2072] = 0x00;
if (temp1 == 0x00)
XBYTE[0X2032] = XBYTE[0X2032] & (~IN1_CTL) & (~IN2_CTL);
else if (temp1 == 0x01)
{
XBYTE[0X2032] = XBYTE[0X2032] & (~IN2_CTL);
XBYTE[0X2032] = XBYTE[0X2032] | IN1_CTL;
}
else if (temp1 == 0x02)
{
XBYTE[0X2032] = XBYTE[0X2032] & (~IN1_CTL);
XBYTE[0X2032] = XBYTE[0X2032] | IN2_CTL;
}
else
XBYTE[0X2032] = XBYTE[0X2032] | IN1_CTL | IN2_CTL;
XBYTE[0x2074] = 0x01; //Start timer
do
{
temp2 = (ULONG)XBYTE[0x2070] | (ULONG)(XBYTE[0x2071] << 8) | (ULONG)(XBYTE[0x2072] << 16);
}
while(temp2 < dt);
XBYTE[0x2074] = 0x00; //Stop timer
}
#endif
return 0;
}
UCHAR L3_FindAFHome() USING_0 //PlusTime unit is 0.1ms
{
#ifdef M91H2
UCHAR i, j;
i = 0;
XBYTE[0x2032] |= FMCNT_CTL;
L2_Wait(5);
if (XBYTE[0X2044] & PI_SENSE) //PI = 1
{
while (XBYTE[0X2044] & PI_SENSE)
{
i = i + 1;
if (i == 4) i = 0;
if (i == 0)
L3_SetMotorStep(1, 1, 20);
else if (i ==1)
L3_SetMotorStep(1, 0, 20);
else if (i ==2)
L3_SetMotorStep(0, 0, 20);
else if (i ==3)
L3_SetMotorStep(0, 1, 20);
}
for (i = 0; i < 15; i++)
{
if (i == 0)
L3_SetMotorStep(1, 1, 20);
else if (i ==1)
L3_SetMotorStep(1, 0, 20);
else if (i ==2)
L3_SetMotorStep(0, 0, 20);
else if (i ==3)
L3_SetMotorStep(0, 1, 20);
}
while (!(XBYTE[0X2044] & PI_SENSE))
{
i = i + 1;
if (i == 4) i = 0;
if (i == 0) L3_SetMotorStep(0, 0, 20);
else if (i ==1) L3_SetMotorStep(1, 0, 20);
else if (i ==2) L3_SetMotorStep(1, 1, 20);
else if (i ==3) L3_SetMotorStep(0, 1, 20);
}
for (i = 0; i < 15; i++)
{
if (i == 0)
L3_SetMotorStep(0, 0, 20);
else if (i ==1)
L3_SetMotorStep(1, 0, 20);
else if (i ==2)
L3_SetMotorStep(1, 1, 20);
else if (i ==3)
L3_SetMotorStep(0, 1, 20);
}
}
else
{
while (!(XBYTE[0X2044] & PI_SENSE))
{
i = i + 1;
if (i == 4) i = 0;
if (i == 0) L3_SetMotorStep(0, 0, 20);
else if (i ==1) L3_SetMotorStep(1, 0, 20);
else if (i ==2) L3_SetMotorStep(1, 1, 20);
else if (i ==3) L3_SetMotorStep(0, 1, 20);
}
for (i = 0; i < 15; i++)
{
if (i == 0)
L3_SetMotorStep(0, 0, 20);
else if (i ==1)
L3_SetMotorStep(1, 0, 20);
else if (i ==2)
L3_SetMotorStep(1, 1, 20);
else if (i ==3)
L3_SetMotorStep(0, 1, 20);
}
}
L2_Wait(5);
XBYTE[0x2032] &= ~FMCNT_CTL;
XBYTE[0X292A]=0x00; //keep AF moto phase
#endif
//patch4.5@ada@add return value begin
return 0;
//patch4.5@ada@add return value end
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -