📄 l2_fsnap.c
字号:
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 + -