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

📄 l2_fsnap.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 3 页
字号:
  XBYTE[0x2BA1] = 0x02;
  XBYTE[0x2BA2] = 0x90;       	//Set CCD Xv1fallcar
  XBYTE[0x2BA3] = 0x02;
  XBYTE[0x2BA4] = 0x9E;       	//Set CCD Xv2risecar
  XBYTE[0x2BA5] = 0x02;
  XBYTE[0x2BA6] = 0x38;       	//Set CCD Xv2fallcar
  XBYTE[0x2BA7] = 0x06;
  XBYTE[0x2BA8] = 0x4D;       	//Set CCD Xv3risecar
  XBYTE[0x2BA9] = 0x06;
  XBYTE[0x2BAA] = 0x00;       	//Set CCD Xv3fallcar
  XBYTE[0x2BAB] = 0x02;
  XBYTE[0x2BAC] = 0x77;       	//Set CCD Xv4risecar
  XBYTE[0x2BAD] = 0x06;
  XBYTE[0x2BAE] = 0x40;       	//Set CCD Xv4fallcar
  XBYTE[0x2BAF] = 0x02;

  XBYTE[0x2BD0] = 0xFF;       	//Set CCD Xsg1afallca
  XBYTE[0x2BD1] = 0x0F;
  XBYTE[0x2BD2] = 0xFF;       	//Set CCD Xsg1bfallca
  XBYTE[0x2BD3] = 0x0F;

  XBYTE[0x2BD4] = 0xD1;       	//Set CCD Xsg3afallca
  XBYTE[0x2BD5] = 0x02;
  XBYTE[0x2BD6] = 0xD1;       	//Set CCD Xsg3bfallca
  XBYTE[0x2BD7] = 0x02;

//  XBYTE[0x2BD4] = 0xFF;       	//Set CCD Xsg3afallca
//  XBYTE[0x2BD5] = 0x0F;
//  XBYTE[0x2BD6] = 0xFF;       	//Set CCD Xsg3bfallca
//  XBYTE[0x2BD7] = 0x0F;

  XBYTE[0X2000] = 0x00;
  XBYTE[0X2000] = 0x02;
  while((L2_CheckDRAMStatus()&0X02)!=0X02);

///////////////////////////////////////////////////////////////////
  XBYTE[0x2B71] = 0xD4;       	//Set CCD Xsg1afallm
  XBYTE[0x2B72] = 0x01;
  XBYTE[0x2B75] = 0x96;       	//Set CCD Xsg3afallm
  XBYTE[0x2B76] = 0x02;
  XBYTE[0X2B05] = 0x01;
  XBYTE[0x2B00] = 0x03;		//Set afen, progressen, ccdtgen
  XBYTE[0x2B09] = 0x10;		//Set Vsubctr menual enable
  XBYTE[0x2924] = 0xD0;     //Set 3 Field Enable, fieldsel


  L2_OpenMShutter();
  XBYTE[0X2A82]= 0X01;
  }
#endif



  #ifdef SONY406		  		// SONY 406 4M interlace CCDSENSOR
    UCHAR temp;
    //PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
	XBYTE[0X2B05] = 0x10 | SnapNum;
    XBYTE[0x270F] = 0x02;  //Set Field mode
    temp = L2_WCShutter();
	if (temp == 0)
	 {
      L2_CloseMShutter();
      //PRINT_FRONT ("            Close Shutter \n");
     }
	temp = L2_WOShutter();
	if (temp == 0)
	 {
      L2_OpenMShutter();
	  //PRINT_FRONT ("            Open Shutter \n");
	 }
	while((L2_CheckDRAMStatus()&0X02)!=0X02);
	XBYTE[0x270F] = 0x00;  //Set Field normal mode
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif

  #ifdef SONY262		  		// SONY 262 3M interlace CCDSENSOR
    UCHAR temp;
    //PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
	XBYTE[0X2B05] = 0x10 | SnapNum;
    XBYTE[0x270F] = 0x02;  //Set Field mode
    temp = L2_WCShutter();
	if (temp == 0)
	 {
      L2_CloseMShutter();
      //PRINT_FRONT ("            Close Shutter \n");
     }
	temp = L2_WOShutter();
	if (temp == 0)
	 {
      L2_OpenMShutter();
	  //PRINT_FRONT ("            Open Shutter \n");
	 }
	while((L2_CheckDRAMStatus()&0X02)!=0X02);
	XBYTE[0x270F] = 0x00;  //Set Field normal mode
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif
  #ifdef SONY232		  		// SONY 232 1.3M interlace CCDSENSOR
    XBYTE[0X2B05] = 0x10 | SnapNum;
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif
  #ifdef SONY442		  		// SONY 442 1.3M Progressive CCDSENSOR
    XBYTE[0X2B05] = 0x10 | SnapNum;
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif
  #ifdef SONY224		  		// SONY 224 2.0M interlace CCDSENSOR
  {
    UCHAR temp;
//XBYTE[0X203A] = XBYTE[0X203A] | 0x20;  //GPIO21 Output enable
//XBYTE[0X2032] = XBYTE[0X2032] | 0x20;  //GPIO21  = 1
//XBYTE[0X2032] = XBYTE[0X2032] & 0xDF;  //GPIO21  = 0
    XBYTE[0X2B05] = 0x10 | SnapNum;
    XBYTE[0x270F] = 0x02;  //Set Field mode
	temp = L2_WCShutter();
	if (temp == 0)
	 {
	 L2_CloseMShutter();
      //PRINT_FRONT ("            Close Shutter \n");
     }
	temp = L2_WOShutter();
	if (temp == 0)
	 {
      L2_OpenMShutter();
	  //PRINT_FRONT ("            Open Shutter \n");
	 }
	while((L2_CheckDRAMStatus()&0X02)!=0X02);
	XBYTE[0x270F] = 0x00;  //Set Field normal mode

	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  }
  #endif

  #ifdef MN39472		  		// PANASONIC 2.0M interlace CCDSENSOR
    UCHAR temp;
    XBYTE[0x2B71] = 0x00;       	//Set CCD Xsg1afallm
    XBYTE[0x2B72] = 0x00;
    XBYTE[0x2B73] = 0x00;       	//Set CCD Xsg1bfallm
    XBYTE[0x2B74] = 0x00;
    XBYTE[0x2B75] = 0x00;       	//Set CCD Xsg3afallm
    XBYTE[0x2B76] = 0x00;
    XBYTE[0x2B77] = 0x00;       	//Set CCD Xsg3bfallm
    XBYTE[0x2B78] = 0x00;
    XBYTE[0X2B05] = 0x10 | SnapNum;
    XBYTE[0x270F] = 0x02;  //Set Field mode

	temp = L2_WCShutter();
	if (temp == 0)
	 {
      L2_CloseMShutter();
      //PRINT_FRONT ("            Close Shutter \n");
     }
	temp = L2_WOShutter();
	if (temp == 0)
	 {
      L2_OpenMShutter();
	  //PRINT_FRONT ("            Open Shutter \n");
	 }

	while((L2_CheckDRAMStatus()&0X02)!=0X02);
	XBYTE[0x270F] = 0x00;  //Set Field normal mode
    XBYTE[0x2B71] = 0xFA;       	//Set CCD Xsg1afallm
    XBYTE[0x2B72] = 0x07;
    XBYTE[0x2B73] = 0x00;       	//Set CCD Xsg1bfallm
    XBYTE[0x2B74] = 0x00;
    XBYTE[0x2B75] = 0x88;       	//Set CCD Xsg3afallm
    XBYTE[0x2B76] = 0x07;
    XBYTE[0x2B77] = 0x00;       	//Set CCD Xsg3bfallm
    XBYTE[0x2B78] = 0x00;
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif

  //patch4.3@richie@mn0604 modify from ccfan
    #ifdef MN39470		  		// PANASONIC 2.0M interlace CCDSENSOR
    UCHAR temp;
    XBYTE[0x2B71] = 0x00;       	//Set CCD Xsg1afallm
    XBYTE[0x2B72] = 0x00;
    XBYTE[0x2B73] = 0x00;       	//Set CCD Xsg1bfallm
    XBYTE[0x2B74] = 0x00;
    XBYTE[0x2B75] = 0x00;       	//Set CCD Xsg3afallm
    XBYTE[0x2B76] = 0x00;
    XBYTE[0x2B77] = 0x00;       	//Set CCD Xsg3bfallm
    XBYTE[0x2B78] = 0x00;
    XBYTE[0X2B05] = 0x10 | SnapNum;
    XBYTE[0x270F] = 0x02;  //Set Field mode

	temp = L2_WCShutter();
	if (temp == 0)
	 {
      L2_CloseMShutter();
      //PRINT_FRONT ("            Close Shutter \n");
     }
	temp = L2_WOShutter();
	if (temp == 0)
	 {
      L2_OpenMShutter();
	  //PRINT_FRONT ("            Open Shutter \n");
	 }

	while((L2_CheckDRAMStatus()&0X02)!=0X02);
	XBYTE[0x270F] = 0x00;  //Set Field normal mode

    XBYTE[0x2B71] = 0x00;//FA;       	//Set CCD Xsg1afallm
    XBYTE[0x2B72] = 0x00;//07;
    XBYTE[0x2B73] = 0x88;//00;       	//Set CCD Xsg1bfallm
    XBYTE[0x2B74] = 0x07;//00;
    XBYTE[0x2B75] = 0x00;//88;       	//Set CCD Xsg3afallm
    XBYTE[0x2B76] = 0x00;//07;
    XBYTE[0x2B77] = 0xfa;//00;       	//Set CCD Xsg3bfallm
    XBYTE[0x2B78] = 0x07;//00;
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif

  #ifdef TASC5130		  			// TASC CMOS Sensor
    XBYTE[0X2B05] = 0x10 | SnapNum;
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif

  #ifdef HP2020		  			// HP2020 VGA CMOS Sensor
 // while(1)XBYTE[0X2B05] = 0x10 | SnapNum;
  XBYTE[0X2B05] = 0x10 | SnapNum;
  printf("            Snap %d Full frame Image \n", (USHORT)SnapNum);
	PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif

  #ifdef TASC5160		  			// TASC CMOS Sensor
  	UCHAR  reg_data[2];
    	PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
	if (SnapNum > 16) return 1;

	//		    	L2_WaitVD(0, 1);

	XBYTE[0x2A80] = 0x02;		//clk2x change sync with vd
  	XBYTE[0x2A81] = 0x00;      	//Set Clk1xDiv
  	XBYTE[0x2A82] = 0x03;     	//Set Clk2xDiv
  	XBYTE[0x2A41] = 0xdc;		//LineTotal=1500
  	XBYTE[0x2A42] = 0x05;
  	XBYTE[0x2A47] = 0xa0;	//ccfan//frame blank
 	XBYTE[0x2A48] = 0x01;//ccfan
  	XBYTE[0x2A43] = 0x03;//23;//ccfan		       	//Set LineBlank
  	XBYTE[0x2A44] = 0x00;//ccfan
  	XBYTE[0x2A45] = 0x1e;		//FrameTotalC=1054
  	XBYTE[0x2A46] = 0x04;
	//Use SSC to initializes CMOS sensor register///////////////////////////////////		  			// Ov9620 1.3M CMOS Sensor
  	XBYTE[0x2901] = 0x12;//0x02;
  	XBYTE[0x2903] = 0x02;
  	XBYTE[0x2904] = 0x30;      // Set Three-wire interface Frequence

	//reg_data[0] = 0x08; 		// Set Operation register
 	//reg_data[1] = 0x80;
  	//L2_WriteSI(reg_data, 0x00);
  	//XBYTE[0x2911]=0x08;
	//XBYTE[0x2913]=0x80;

	L2_AdjustGain(0x80, 0);//havd merged the above into this func

    	L2_WaitVD(0, 2);
    	XBYTE[0X2B05] = 0x10 | SnapNum;
	printf ("            Snap %d Full frame Image \n", (USHORT)SnapNum);

	PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif

  #ifdef YM3170		  			// TASC CMOS Sensor
    XBYTE[0X2B05] = 0x10 | SnapNum;
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif
//patch4.4@andrew@SHARP_LZ24
#ifdef SHARP_LZ24BP
	 XBYTE[0X2B05] = 0x10 | SnapNum;
        XBYTE[0x270F] = 0x00;  //Set Field mode
#endif


// patch4.5@andrew@MN39592
 #ifdef MN39592  // panasonic
    UCHAR temp;
    //PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
	XBYTE[0X2B05] = 0x10 | SnapNum;
    XBYTE[0x270F] = 0x02;  //Set Field mode
    temp = L2_WCShutter();
	if (temp == 0)
	 {
      L2_CloseMShutter();
      //PRINT_FRONT ("            Close Shutter \n");
     }
	temp = L2_WOShutter();
	if (temp == 0)
	 {
      L2_OpenMShutter();
	  //PRINT_FRONT ("            Open Shutter \n");
	 }
	while((L2_CheckDRAMStatus()&0X02)!=0X02);
	XBYTE[0x270F] = 0x00;  //Set Field normal mode
	//PRINT_FRONT ("            Snap %d Full frame Image \n", (USHORT)SnapNum);
  #endif




  return 0;
}

UCHAR L2_SetFlash(USHORT Width, USHORT Ftnum, UCHAR Mode) USING_0
{
  UCHAR   temp1, temp2;
  temp1   = (UCHAR) (Width & 0xFF);
  temp2   = (UCHAR) (Width >> 8);
  XBYTE[0X2A07]  = temp1;
  XBYTE[0X2A08]  = temp2;
  temp1   = (UCHAR) (Ftnum & 0xFF);
  temp2   = (UCHAR) (Ftnum >> 8);
  XBYTE[0X2A0A]  = temp1;
  XBYTE[0X2A0B]  = temp2;
  XBYTE[0X2A09]  = 0x10 | (Mode & 0x07);
  return 0;
}


//patch4.4@yichang for subsample mode snapping begin
UCHAR L2_SnapFrontSubSample(UCHAR SnapNum) USING_0
{

 //               UCHAR reg_addr[1], reg_data[1];
	//	UCHAR obvalue[1];
    //            UCHAR i, j;
#ifdef ICM107B		  			//IC-Media 1.0M CMOS Sensor

		if (SnapNum > 16)
                        return 1;


		XBYTE[0x2A20] = 0x36;       		//Set Hoffset
  		XBYTE[0x2A21] = 0x00;
  		XBYTE[0x2A22] = 0x0d;       		//Set Voffset
  		XBYTE[0x2A23] = 0x00;
  		XBYTE[0x2A24] = 0x60;       		//Set Hsize = 576
  		XBYTE[0x2A25] = 0x02;
  		XBYTE[0x2A26] = 0xbf;       		//Set Vsize = 432
  		XBYTE[0x2A27] = 0x01;

		reg_addr[0] = 0x52;
		reg_data[0] = 0x0D;
		L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

		reg_addr[0] = 0x00;
		reg_data[0] = 0x88;
		L3_WaitUpdate107();
		L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);


    		reg_addr[0]   = 0x01; 					//Enable Auto Dark
    		reg_data[0]   = 0x09;
    		L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);
 		L2_WaitVD(0, 1);
		reg_addr[0]   = 0x01; 					//Enable Auto Dark
		reg_data[0]   = 0x09;
		L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);


    		L2_WaitVD(0,2);
//		while(1)
    		XBYTE[0X2B05] = 0x10 | SnapNum;
    		L2_WaitVD(0, 1);

		if (STROBE)
		{
			L2_Wait(3);
			XBYTE[0x2030] &= 0xf7;
			XBYTE[0x2031] |= 0x10;
			XBYTE[0x2031] &= 0xef;
		}

      		L2_WaitVD(0, 1);
    		L2_ReadSSC(0x40, obvalue, 0x01, 0x01);   //Read back OFFSET
    		//XBYTE[0x292A] = obvalue[0]; // WWWW0409
    		//Calculate new OB value ///////////////////////////////////////////////
    		reg_addr[0]   = 0x01; 					//Disable Auto Dark
    		reg_data[0]   = 0x01;
    		L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);

    		reg_addr[0] = 0x40;
    		reg_data[0] = obvalue[0];	              //Set OB value
    		L2_WSSC107(reg_addr, reg_data, 0x01, 0x00);
#endif

#ifdef ICM109		  			//IC-Media 2.0M CMOS Sensor  //patch4.5@jhyu@subsample raw data

		if (SnapNum > 16)
                        return 1;
		XBYTE[0x2A20] = 0x36;       		//Set Hoffset
  		XBYTE[0x2A21] = 0x00;
  		XBYTE[0x2A22] = 0x09;       		//Set Voffset
  		XBYTE[0x2A23] = 0x00;
  		XBYTE[0x2A24] = 0x20;       		//Set Hsize = 800
  		XBYTE[0x2A25] = 0x03;
  		XBYTE[0x2A26] = 0x65;       		//Set Vsize = 613
  		XBYTE[0x2A27] = 0x02;

		reg_addr[0] = 0x52;
		reg_data[0] = 0x0D;
		L2_WSSC109(reg_addr, reg_data, 0x01, 0x00);

		reg_addr[0] = 0x00;
		reg_data[0] = 0x88;
		L3_WaitUpdate109();
		L2_WSSC109(reg_addr, reg_data, 0x01, 0x00);


		reg_addr[0]   = 0x01; 					//Enable Auto Dark
    		reg_data[0]   = 0x09;
    		L2_WSSC109(reg_addr, reg_data, 0x01, 0x00);
 		L2_WaitVD(0, 1);


    		XBYTE[0X2B05] = 0x10 | SnapNum;



#endif




#ifdef OV13		  			// Ov9620 1.3M CMOS Sensor

	if (SnapNum > 16) return 1;
	XBYTE[0x2A10] = 0x02;
	XBYTE[0x2A15] = 0x08;
	XBYTE[0x2A17] = 0x0a;

	XBYTE[0x2A26] = 0xed;       		//Set Vsize
  	XBYTE[0x2A27] = 0x01;
  	XBYTE[0x2A24] = 0x90;       		//Set Hsize
  	XBYTE[0x2A25] = 0x02;
  	XBYTE[0x2A20] = 0x84;       		//Set Hoffset
  	XBYTE[0x2A21] = 0x00;
  	XBYTE[0x2A22] = 0x0e;       		//Set Voffset
  	XBYTE[0x2A23] = 0x00;


	//printf("L2_SnapFront_Conti\n");


    reg_addr[0] = 0x12;
    reg_data[0] = 0x60;//20
    L2_WriteSSC(reg_addr, reg_data, 0x01, 0x01);
	//patch4.4@jhyu@0606
    reg_addr[0] = 0x17;
    reg_data[0] = 0x11;//1c
    L2_WriteSSC(reg_addr, reg_data, 0x01, 0x01);
    reg_addr[0] = 0x1a;
    reg_data[0] = 0x7b;//83;
    L2_WriteSSC(reg_addr, reg_data, 0x01, 0x01);


    L2_WaitVD(0, 2);
//    while(1)
//    	{
    XBYTE[0X2B05] = 0x10 | SnapNum;
//    	};
 //   printf("before iii\n\n");
    while((L2_CheckDRAMStatus()&0X02)!=0X02);
 //       printf("after iii\n\n");
  #endif


#ifdef OV2610    //patch4.5@jhyu@subsample raw data

	if (SnapNum > 16) return 1;
	XBYTE[0x2A10] = 0x02;
	XBYTE[0x2A15] = 0x08;
	XBYTE[0x2A17] = 0x0a;
/*
	XBYTE[0x2A26] = 0x65;       		//Set Vsize
  	XBYTE[0x2A27] = 0x02;
  	XBYTE[0x2A24] = 0x20;       		//Set Hsize
  	XBYTE[0x2A25] = 0x03;
  	XBYTE[0x2A20] = 0x80;       		//Set Hoffset
  	XBYTE[0x2A21] = 0x00;
  	XBYTE[0x2A22] = 0x0e;       		//Set Voffset
  	XBYTE[0x2A23] = 0x00;
*/
XBYTE[0x2A30] = 0x8b;
XBYTE[0x2A31] = 0x00;
XBYTE[0x2A34] = 0x0b;
XBYTE[0x2A35] = 0x00;

	//printf("L2_SnapFront_Conti\n");


    reg_addr[0] = 0x12;
    reg_data[0] = 0x60;//20
    L2_WriteSSC(reg_addr, reg_data, 0x01, 0x01);
	//patch4.4@jhyu@0606
    reg_addr[0] = 0x17;
    reg_data[0] = 0x01;//1c
    L2_WriteSSC(reg_addr, reg_data, 0x01, 0x01);
    reg_addr[0] = 0x1a;
    reg_data[0] = 0x98;//83;
    L2_WriteSSC(reg_addr, reg_data, 0x01, 0x01);


  //  L2_WaitVD(0, 2);

    XBYTE[0X2B05] = 0x10 | SnapNum;

    while((L2_CheckDRAMStatus()&0X02)!=0X02);

  #endif


		return 0;

}
//patch4.4@yichang for subsample mode snapping end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -