📄 l2_flens.c
字号:
//richie@0402 MN39472
#ifdef MNLENS
if (Step == 1)
{
XBYTE[0X2032] = XBYTE[0X2032] & 0xDF; //Set GPIO21 = 0
XBYTE[0X2032] = XBYTE[0X2032] & 0x7F; //Set GPIO23 = 0
XBYTE[0X2034] = XBYTE[0X2034] & 0xF7; //Set GPIO35 = 0
XBYTE[0X2034] = XBYTE[0X2034] | 0x10; //Set GPIO36 = 1
L2_Wait(5);
XBYTE[0X2032] = XBYTE[0X2032] & 0xDF; //Set GPIO21 = 0
XBYTE[0X2032] = XBYTE[0X2032] & 0x7F; //Set GPIO23 = 0
XBYTE[0X2034] = XBYTE[0X2034] & 0xF7; //Set GPIO35 = 0
XBYTE[0X2034] = XBYTE[0X2034] & 0xEF; //Set GPIO36 = 0
}
else if (Step == 0)
{
XBYTE[0X2032] = XBYTE[0X2032] & 0xDF; //Set GPIO21 = 0
XBYTE[0X2032] = XBYTE[0X2032] & 0x7F; //Set GPIO23 = 0
XBYTE[0X2034] = XBYTE[0X2034] | 0x08; //Set GPIO35 = 1
XBYTE[0X2034] = XBYTE[0X2034] & 0xEF; //Set GPIO36 = 0
L2_Wait(5);
XBYTE[0X2032] = XBYTE[0X2032] & 0xDF; //Set GPIO21 = 0
XBYTE[0X2032] = XBYTE[0X2032] & 0x7F; //Set GPIO23 = 0
XBYTE[0X2034] = XBYTE[0X2034] & 0xF7; //Set GPIO35 = 0
XBYTE[0X2034] = XBYTE[0X2034] & 0xEF; //Set GPIO36 = 0
}
#endif
//richie@0410
#ifdef M91H2 // M91H2 Lens module
{
//Step means 0x0x => to large Iris
// 0x8x => to small Iris ygliu
UCHAR irispos;
UCHAR temp;
irispos = (XBYTE[0X292E] << 4) | (Step & 0x0F);
temp = Step & 0x80;
if (temp == 0x00)
{
switch (irispos)
{
case 0x01:L3_SetMotorCCW(4);
break;
case 0x02:L3_SetMotorCCW(5);
break;
case 0x03:L3_SetMotorCCW(6);
break;
case 0x04:L3_SetMotorCCW(10);
break;
case 0x41:L3_SetMotorCCW(1);
break;
case 0x42:L3_SetMotorCCW(2);
break;
case 0x43:L3_SetMotorCCW(6);
break;
case 0x51:L3_SetMotorCCW(1);
break;
case 0x52:L3_SetMotorCCW(5);
break;
case 0x61:L3_SetMotorCCW(4);
break;
default : break;
}
}
else
{
switch (irispos)
{
case 0xA1:L3_SetMotorCW(4);
break;
case 0xA2:L3_SetMotorCW(5);
break;
case 0xA3:L3_SetMotorCW(6);
break;
case 0xA4:L3_SetMotorCW(10);
break;
case 0x61:L3_SetMotorCW(1);
break;
case 0x62:L3_SetMotorCW(2);
break;
case 0x51:L3_SetMotorCW(1);
break;
case 0x41:L3_SetMotorCW(4);
break;
default : break;
}
}
}
#endif
#ifdef RICOH4T10 // Ricoh Lens module
{
UCHAR i;
XBYTE[0X2B07] = 0x11; // Set Mshutter enable by manual
for (i =0; i <255; i++);
for (i = 0; i < Step; i++)
{
L3_SetMotorCW(5);
L3_SetMotorCCW(5);
}
for (i =0; i <255; i++);
XBYTE[0X2B07] = 0x10; // Set Mshutter enable by manual
}
#endif
return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////
UCHAR L2_SetFocus(UCHAR Step, UCHAR Option) USING_0
{
// PRINT_FRONT (" Enter L2_SetFocus \n");
#ifdef RICOH4T10 // Ricoh Lens module
{
USHORT i;
XBYTE[0X2032] = XBYTE[0X2032] | 0x40; //Set GPIO22 = 1
for (i =0; i <500; i++);
if ((Option & 0x01) == 0x01)
L3_SetMotorCW(Step);
else
L3_SetMotorCCW(Step);
for (i =0; i <500; i++);
XBYTE[0X2032] = XBYTE[0X2032] & 0xBF; //Set GPIO22 = 0
}
#endif
#ifdef M91H2
// AF moto pahse keep in XBYTE[0X292A]
// phase 0 01
// phase 1 11
// phase 2 10
// phase 3 00
{
USHORT i;
UCHAR phase; //AF moto phase
//recover last time phase first
phase=XBYTE[0X292A];
// printf("last AF phase=%bx\n",phase);
switch(phase){
case 0: L3_SetMotorStep(0, 1, 0); break;
case 1: L3_SetMotorStep(1, 1, 0); break;
case 2: L3_SetMotorStep(1, 0, 0); break;
case 3: L3_SetMotorStep(0,0, 0); break;
}
XBYTE[0x2032] |= FMCNT_CTL; // enable Iris driver
L2_Wait(5);
for (i = 0; i < Step; i++)
{
if(Option){
phase++;
if(phase==4){
phase=0;
}
}
else{
if(phase==0){
phase=3;
}
else{
phase --;
}
}
switch(phase){
case 0: L3_SetMotorStep(0, 1, 20); break;
case 1: L3_SetMotorStep(1, 1, 20); break;
case 2: L3_SetMotorStep(1, 0, 20); break;
case 3: L3_SetMotorStep(0,0, 20); break;
}
//printf("step %x phase =%bx\n",i+1,phase);
}
XBYTE[0X292A]=phase;
L2_Wait(5);
XBYTE[0x2032] &= ~FMCNT_CTL;
//printf("exit AF control\n");
}
#endif
// PRINT_FRONT (" Exit L2_SetFocus \n");
return 0;
}
UCHAR L3_SetMotorCCW(UCHAR Number) USING_0
{
#ifdef RICOH4T10 // Ricoh Lens module
{
UCHAR i;
for (i = 0; i<Number; i++)
{
switch (XBYTE[0X292E])
{
case 0:L3_SetMotorStep(0, 0, 20);
L3_SetMotorStep(0, 1, 20);
L3_SetMotorStep(1, 1, 20);
L3_SetMotorStep(1, 0, 20);
break;
case 1:L3_SetMotorStep(1, 0, 20);
L3_SetMotorStep(0, 0, 20);
L3_SetMotorStep(0, 1, 20);
L3_SetMotorStep(1, 1, 20);
break;
case 2:L3_SetMotorStep(0, 1, 20);
L3_SetMotorStep(1, 1, 20);
L3_SetMotorStep(1, 0, 20);
L3_SetMotorStep(0, 0, 20);
break;
case 3:L3_SetMotorStep(1, 1, 20);
L3_SetMotorStep(1, 0, 20);
L3_SetMotorStep(0, 0, 20);
L3_SetMotorStep(0, 1, 20);
break;
default : break;
}
}
}
#endif
// patch4.4@andrew@M91H2_1 //update YGLiu code
#ifdef M91H2 // Lens module
{
UCHAR position;
position = (XBYTE[0X292E] << 4) | (Number & 0x0F);
switch (position)
{
case 0x0A:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase One
L3_SetMotorStep(0, 0, 25);
// Phase Two
L3_SetMotorStep(1, 0, 50);
// Phase Three
L3_SetMotorStep(1, 1, 50);
// Phase Four
L3_SetMotorStep(0, 1, 50);
// Phase Five
L3_SetMotorStep(0, 0, 50);
// Phase Six
L3_SetMotorStep(1, 0, 50);
// Phase Seven
L3_SetMotorStep(1, 1, 50);
// Phase Eight
L3_SetMotorStep(0, 1, 50);
// Phase Nine
L3_SetMotorStep(0, 0, 50);
// Phase Ten
L3_SetMotorStep(1, 0, 50);
L3_SetMotorStep(0, 0, 50);
// Set ENA to "Low" level, Motor off
L2_Wait(35);
XBYTE[0x2032] &= ~ENA_CTL;
XBYTE[0x2B07] = 0x10;
XBYTE[0x2034] &= ~(SVC_CTL); // 0xff-SVC_CTL
XBYTE[0X292E] = 0x0A;
break;
case 0x06:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase One
L3_SetMotorStep(0, 0, 25);
// Phase Two
L3_SetMotorStep(1, 0, 50);
// Phase Three
L3_SetMotorStep(1, 1, 50);
// Phase Four
L3_SetMotorStep(0, 1, 50);
// Phase Five
L3_SetMotorStep(0, 0, 50);
// Phase Six
L3_SetMotorStep(1, 0, 50);
// Phase A
L3_SetMotorStep(1, 1, 29);
// Phase B
L3_SetMotorStep(1, 0, 10);
L3_SetMotorStep(1, 1, 29);
// 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 0x05:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase One
L3_SetMotorStep(0, 0, 25);
// Phase Two
L3_SetMotorStep(1, 0, 50);
// Phase Three
L3_SetMotorStep(1, 1, 50);
// Phase Four
L3_SetMotorStep(0, 1, 50);
// Phase Five
L3_SetMotorStep(0, 0, 50);
// Phase A
L3_SetMotorStep(1, 0, 22);
// Phase B
L3_SetMotorStep(0, 0, 06);
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 0x04:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase One
L3_SetMotorStep(0, 0, 25);
// Phase Two
L3_SetMotorStep(1, 0, 50);
// Phase Three
L3_SetMotorStep(1, 1, 50);
// Phase Four
L3_SetMotorStep(0, 1, 50);
// Phase A
L3_SetMotorStep(0, 0, 20);
// Phase B
L3_SetMotorStep(0, 1, 8);
L3_SetMotorStep(0, 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] = 0x04;
break;
case 0x41:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Five
L3_SetMotorStep(0, 0, 25);
// Phase A
L3_SetMotorStep(1, 0, 24);
// Phase B
L3_SetMotorStep(0, 0, 6);
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[0X292E] = 0x05;
break;
case 0x42:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
L2_Wait(10);
// Phase Five
L3_SetMotorStep(0, 0, 25);
// Phase Six
L3_SetMotorStep(1, 0, 50);
// Phase A
L3_SetMotorStep(1, 1, 28);
// Phase B
L3_SetMotorStep(1, 0, 8);
L3_SetMotorStep(1, 1, 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] = 0x06;
break;
case 0x46:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Five
L3_SetMotorStep(0, 0, 25);
// Phase Six
L3_SetMotorStep(1, 0, 50);
// Phase Seven
L3_SetMotorStep(1, 1, 50);
// Phase Eight
L3_SetMotorStep(0, 1, 50);
// Phase Nine
L3_SetMotorStep(0, 0, 50);
// Phase Ten
L3_SetMotorStep(1, 0, 50);
// 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] = 0x0A;
break;
case 0x51:
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(1, 1, 20);
// Phase B
L3_SetMotorStep(1, 0, 8);
L3_SetMotorStep(1, 1, 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] = 0x06;
break;
case 0x55:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Six
L3_SetMotorStep(1, 0, 25);
// Phase Seven
L3_SetMotorStep(1, 1, 50);
// Phase Eight
L3_SetMotorStep(0, 1, 50);
// Phase Nine
L3_SetMotorStep(0, 0, 50);
// Phase Ten
L3_SetMotorStep(1, 0, 50);
// 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] = 0x0A;
break;
case 0x64:
XBYTE[0x2034] |= SVC_CTL;
XBYTE[0x2032] |= ENA_CTL;
XBYTE[0x2B07] = 0x11;
L2_Wait(10);
// Phase Seven
L3_SetMotorStep(1, 1, 25);
// Phase Eight
L3_SetMotorStep(0, 1, 50);
// Phase Nine
L3_SetMotorStep(0, 0, 50);
// Phase Ten
L3_SetMotorStep(1, 0, 50);
// 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] = 0x0A;
break;
default : break;
}
}
#endif
return 0;
}
UCHAR L3_SetMotorCW(UCHAR Number) USING_0
{
#ifdef RICOH4T10 // Ricoh Lens module
{
UCHAR i;
for (i = 0; i<Number; i++)
{
switch (XBYTE[0X292E])
{
case 0:L3_SetMotorStep(0, 0, 20);
L3_SetMotorStep(1, 0, 20);
L3_SetMotorStep(1, 1, 20);
L3_SetMotorStep(0, 1, 20);
break;
case 1:L3_SetMotorStep(1, 0, 20);
L3_SetMotorStep(1, 1, 20);
L3_SetMotorStep(0, 1, 20);
L3_SetMotorStep(0, 0, 20);
break;
case 2:L3_SetMotorStep(0, 1, 20);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -