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

📄 l2_flens.c

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