⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l2_flens.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 3 页
字号:
//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 + -