|
|
|
@ -33,7 +33,7 @@ bool CApnCamera::Expose( double Duration, bool Light )
|
|
|
|
|
ULONG ExpTime;
|
|
|
|
|
unsigned short BitsPerPixel(0);
|
|
|
|
|
unsigned short UnbinnedRoiX;
|
|
|
|
|
unsigned short UnbinnedRoiY;
|
|
|
|
|
unsigned short UnbinnedRoiY;
|
|
|
|
|
unsigned short PreRoiSkip, PostRoiSkip;
|
|
|
|
|
unsigned short PreRoiRows, PostRoiRows;
|
|
|
|
|
unsigned short PreRoiVBinning, PostRoiVBinning;
|
|
|
|
@ -61,7 +61,7 @@ bool CApnCamera::Expose( double Duration, bool Light )
|
|
|
|
|
|
|
|
|
|
PostRoiSkip = m_ApnSensorInfo->m_TotalColumns -
|
|
|
|
|
m_ApnSensorInfo->m_ClampColumns -
|
|
|
|
|
PreRoiSkip -
|
|
|
|
|
PreRoiSkip -
|
|
|
|
|
UnbinnedRoiX;
|
|
|
|
|
|
|
|
|
|
TotalHPixels = UnbinnedRoiX + PreRoiSkip + PostRoiSkip + m_ApnSensorInfo->m_ClampColumns;
|
|
|
|
@ -71,9 +71,9 @@ bool CApnCamera::Expose( double Duration, bool Light )
|
|
|
|
|
|
|
|
|
|
UnbinnedRoiY = m_RoiPixelsV * m_RoiBinningV;
|
|
|
|
|
|
|
|
|
|
PreRoiRows = m_ApnSensorInfo->m_UnderscanRows +
|
|
|
|
|
PreRoiRows = m_ApnSensorInfo->m_UnderscanRows +
|
|
|
|
|
m_RoiStartY;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PostRoiRows = m_ApnSensorInfo->m_TotalRows -
|
|
|
|
|
PreRoiRows -
|
|
|
|
|
UnbinnedRoiY;
|
|
|
|
@ -133,14 +133,14 @@ bool CApnCamera::Expose( double Duration, bool Light )
|
|
|
|
|
{
|
|
|
|
|
PreRoiVBinning += PreRoiRows;
|
|
|
|
|
PostRoiVBinning = PostRoiRows;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PreRoiVBinning |= FPGA_BIT_ARRAY_FASTDUMP;
|
|
|
|
|
PostRoiVBinning |= FPGA_BIT_ARRAY_FASTDUMP;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PreRoiRows = 1;
|
|
|
|
|
PostRoiRows = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Issue the reset
|
|
|
|
|
RoiRegBuffer[0] = FPGA_REG_COMMAND_B;
|
|
|
|
@ -151,7 +151,7 @@ bool CApnCamera::Expose( double Duration, bool Light )
|
|
|
|
|
RoiRegData[1] = PreRoiSkip;
|
|
|
|
|
|
|
|
|
|
RoiRegBuffer[2] = FPGA_REG_ROI_COUNT;
|
|
|
|
|
// Number of ROI pixels. Adjust the 12bit operation here to account for an extra
|
|
|
|
|
// Number of ROI pixels. Adjust the 12bit operation here to account for an extra
|
|
|
|
|
// 10 pixel shift as a result of the A/D conversion.
|
|
|
|
|
if ( m_DataBits == Apn_Resolution_SixteenBit )
|
|
|
|
|
{
|
|
|
|
@ -282,7 +282,7 @@ bool CApnCamera::StopExposure( bool DigitizeData )
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned short CApnCamera::GetExposurePixelsH()
|
|
|
|
|
{
|
|
|
|
@ -365,10 +365,10 @@ void CApnCamera::write_ForceShutterOpen( bool ForceShutterOpen )
|
|
|
|
|
{
|
|
|
|
|
unsigned short RegVal;
|
|
|
|
|
Read( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( ForceShutterOpen )
|
|
|
|
|
RegVal |= FPGA_BIT_FORCE_SHUTTER;
|
|
|
|
|
else
|
|
|
|
|
else
|
|
|
|
|
RegVal &= ~FPGA_BIT_FORCE_SHUTTER;
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_OP_A, RegVal );
|
|
|
|
@ -492,7 +492,7 @@ void CApnCamera::write_CameraMode( Apn_CameraMode CameraMode )
|
|
|
|
|
Write( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch ( CameraMode )
|
|
|
|
|
{
|
|
|
|
|
case Apn_CameraMode_Normal:
|
|
|
|
@ -525,7 +525,7 @@ void CApnCamera::write_DataBits( Apn_Resolution BitResolution )
|
|
|
|
|
|
|
|
|
|
if ( m_CameraInterface == Apn_Interface_NET )
|
|
|
|
|
{
|
|
|
|
|
// The network interface is 16bpp only. Changing the resolution
|
|
|
|
|
// The network interface is 16bpp only. Changing the resolution
|
|
|
|
|
// for network cameras has no effect.
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -537,7 +537,7 @@ void CApnCamera::write_DataBits( Apn_Resolution BitResolution )
|
|
|
|
|
|
|
|
|
|
// Change bit setting after the reset
|
|
|
|
|
Read( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( BitResolution == Apn_Resolution_TwelveBit )
|
|
|
|
|
RegVal |= FPGA_BIT_DIGITIZATION_RES;
|
|
|
|
|
|
|
|
|
@ -547,7 +547,7 @@ void CApnCamera::write_DataBits( Apn_Resolution BitResolution )
|
|
|
|
|
Write( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
|
|
|
|
|
m_DataBits = BitResolution;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LoadClampPattern();
|
|
|
|
|
LoadSkipPattern();
|
|
|
|
|
LoadRoiPattern( m_RoiBinningH );
|
|
|
|
@ -578,16 +578,16 @@ Apn_Status CApnCamera::read_ImagingStatus()
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_IMAGING_ACTIVE) != 0 )
|
|
|
|
|
Active = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_IMAGE_EXPOSING) != 0 )
|
|
|
|
|
Exposing = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_IMAGE_DONE) != 0 )
|
|
|
|
|
Done = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_FLUSHING) != 0 )
|
|
|
|
|
Flushing = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_WAITING_TRIGGER) != 0 )
|
|
|
|
|
WaitOnTrigger = true;
|
|
|
|
|
|
|
|
|
@ -714,7 +714,7 @@ Apn_LedState CApnCamera::read_LedState( unsigned short LedId )
|
|
|
|
|
|
|
|
|
|
if ( LedId == 0 ) // LED A
|
|
|
|
|
RetVal = m_pvtLedStateA;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( LedId == 1 ) // LED B
|
|
|
|
|
RetVal = m_pvtLedStateB;
|
|
|
|
|
|
|
|
|
@ -779,7 +779,7 @@ Apn_CoolerStatus CApnCamera::read_CoolerStatus()
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_TEMP_AT_TEMP) != 0 )
|
|
|
|
|
CoolerAtTemp = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( (m_pvtStatusReg & FPGA_BIT_STATUS_TEMP_ACTIVE) != 0 )
|
|
|
|
|
CoolerActive = true;
|
|
|
|
|
|
|
|
|
@ -816,7 +816,7 @@ double CApnCamera::read_CoolerSetPoint()
|
|
|
|
|
double TempVal;
|
|
|
|
|
|
|
|
|
|
Read( FPGA_REG_TEMP_DESIRED, RegVal );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RegVal &= 0x0FFF;
|
|
|
|
|
|
|
|
|
|
TempVal = ( RegVal - APN_TEMP_SETPOINT_ZERO_POINT ) * APN_TEMP_DEGREES_PER_BIT;
|
|
|
|
@ -828,7 +828,7 @@ void CApnCamera::write_CoolerSetPoint( double SetPoint )
|
|
|
|
|
{
|
|
|
|
|
unsigned short RegVal;
|
|
|
|
|
double TempVal;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TempVal = SetPoint;
|
|
|
|
|
|
|
|
|
@ -839,7 +839,7 @@ void CApnCamera::write_CoolerSetPoint( double SetPoint )
|
|
|
|
|
TempVal = APN_TEMP_SETPOINT_MAX;
|
|
|
|
|
|
|
|
|
|
RegVal = (unsigned short)( (TempVal / APN_TEMP_DEGREES_PER_BIT) + APN_TEMP_SETPOINT_ZERO_POINT );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_TEMP_DESIRED, RegVal );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -852,7 +852,7 @@ void CApnCamera::write_CoolerBackoffPoint( double BackoffPoint )
|
|
|
|
|
{
|
|
|
|
|
unsigned short RegVal;
|
|
|
|
|
double TempVal;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TempVal = BackoffPoint;
|
|
|
|
|
|
|
|
|
|
// BackoffPoint must be a positive number!
|
|
|
|
@ -868,7 +868,7 @@ void CApnCamera::write_CoolerBackoffPoint( double BackoffPoint )
|
|
|
|
|
m_pvtCoolerBackoffPoint = TempVal;
|
|
|
|
|
|
|
|
|
|
RegVal = (unsigned short)( TempVal / APN_TEMP_DEGREES_PER_BIT );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_TEMP_BACKOFF, RegVal );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -902,7 +902,7 @@ double CApnCamera::read_TempCCD()
|
|
|
|
|
|
|
|
|
|
TempAvg = (unsigned short)(TempTotal / don);
|
|
|
|
|
|
|
|
|
|
m_pvtCurrentCcdTemp = ( (TempAvg - APN_TEMP_SETPOINT_ZERO_POINT)
|
|
|
|
|
m_pvtCurrentCcdTemp = ( (TempAvg - APN_TEMP_SETPOINT_ZERO_POINT)
|
|
|
|
|
* APN_TEMP_DEGREES_PER_BIT );
|
|
|
|
|
|
|
|
|
|
return m_pvtCurrentCcdTemp;
|
|
|
|
@ -931,7 +931,7 @@ double CApnCamera::read_TempHeatsink()
|
|
|
|
|
|
|
|
|
|
TempAvg = (unsigned short)(TempTotal / don);
|
|
|
|
|
|
|
|
|
|
m_pvtCurrentHeatsinkTemp = ( (TempAvg - APN_TEMP_HEATSINK_ZERO_POINT)
|
|
|
|
|
m_pvtCurrentHeatsinkTemp = ( (TempAvg - APN_TEMP_HEATSINK_ZERO_POINT)
|
|
|
|
|
* APN_TEMP_DEGREES_PER_BIT );
|
|
|
|
|
|
|
|
|
|
return m_pvtCurrentHeatsinkTemp;
|
|
|
|
@ -957,11 +957,11 @@ void CApnCamera::write_FanMode( Apn_FanMode FanMode )
|
|
|
|
|
OpRegA |= FPGA_BIT_TEMP_SUSPEND;
|
|
|
|
|
Write( FPGA_REG_OP_A, OpRegA );
|
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
Read( FPGA_REG_GENERAL_STATUS, RegVal );
|
|
|
|
|
} while ( (RegVal & FPGA_BIT_STATUS_TEMP_SUSPEND_ACK) == 0 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch ( FanMode )
|
|
|
|
@ -1006,7 +1006,7 @@ double CApnCamera::read_ShutterStrobePosition()
|
|
|
|
|
void CApnCamera::write_ShutterStrobePosition( double Position )
|
|
|
|
|
{
|
|
|
|
|
unsigned short RegVal;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( Position < APN_STROBE_POSITION_MIN )
|
|
|
|
|
Position = APN_STROBE_POSITION_MIN;
|
|
|
|
|
|
|
|
|
@ -1032,7 +1032,7 @@ void CApnCamera::write_ShutterStrobePeriod( double Period )
|
|
|
|
|
RegVal = (unsigned short)((Period - APN_STROBE_PERIOD_MIN) / APN_PERIOD_TIMER_RESOLUTION);
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_SHUTTER_STROBE_PERIOD, RegVal );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_pvtShutterStrobePeriod = Period;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1060,7 +1060,7 @@ bool CApnCamera::read_VariableSequenceDelay()
|
|
|
|
|
unsigned short RegVal;
|
|
|
|
|
Read( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
// variable delay occurs when the bit is 0
|
|
|
|
|
return ( (RegVal & FPGA_BIT_DELAY_MODE) == 0 );
|
|
|
|
|
return ( (RegVal & FPGA_BIT_DELAY_MODE) == 0 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CApnCamera::write_VariableSequenceDelay( bool VariableSequenceDelay )
|
|
|
|
@ -1088,7 +1088,7 @@ void CApnCamera::write_ImageCount( unsigned short Count )
|
|
|
|
|
Count = 1;
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_IMAGE_COUNT, Count );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_pvtImageCount = Count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1182,7 +1182,7 @@ void CApnCamera::write_TDIRate( double TdiRate )
|
|
|
|
|
|
|
|
|
|
if ( TdiRate < APN_TDI_RATE_MIN )
|
|
|
|
|
TdiRate = APN_TDI_RATE_MIN;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ( TdiRate > APN_TDI_RATE_MAX )
|
|
|
|
|
TdiRate = APN_TDI_RATE_MAX;
|
|
|
|
|
|
|
|
|
@ -1289,15 +1289,15 @@ void CApnCamera::write_TestLedBrightness( double TestLedBrightness )
|
|
|
|
|
OpRegA |= FPGA_BIT_TEMP_SUSPEND;
|
|
|
|
|
Write( FPGA_REG_OP_A, OpRegA );
|
|
|
|
|
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
do
|
|
|
|
|
{
|
|
|
|
|
Read( FPGA_REG_GENERAL_STATUS, RegVal );
|
|
|
|
|
} while ( (RegVal & FPGA_BIT_STATUS_TEMP_SUSPEND_ACK) == 0 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RegVal = (unsigned short)( (double)FPGA_MASK_LED_ILLUMINATION * (TestLedBrightness/100.0) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_LED_DRIVE, RegVal );
|
|
|
|
|
|
|
|
|
|
Read( FPGA_REG_OP_B, RegVal );
|
|
|
|
@ -1332,7 +1332,7 @@ long CApnCamera::LoadVerticalPattern()
|
|
|
|
|
RegData |= FPGA_BIT_VRAM_ENABLE;
|
|
|
|
|
Write( FPGA_REG_OP_B, RegData );
|
|
|
|
|
|
|
|
|
|
WriteMultiSRMD( FPGA_REG_VRAM_INPUT,
|
|
|
|
|
WriteMultiSRMD( FPGA_REG_VRAM_INPUT,
|
|
|
|
|
m_ApnSensorInfo->m_VerticalPattern.PatternData,
|
|
|
|
|
m_ApnSensorInfo->m_VerticalPattern.NumElements );
|
|
|
|
|
|
|
|
|
@ -1356,14 +1356,14 @@ long CApnCamera::LoadClampPattern()
|
|
|
|
|
|
|
|
|
|
if ( m_DataBits == Apn_Resolution_SixteenBit )
|
|
|
|
|
{
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_ClampPatternSixteen,
|
|
|
|
|
FPGA_REG_HCLAMP_INPUT,
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_ClampPatternSixteen,
|
|
|
|
|
FPGA_REG_HCLAMP_INPUT,
|
|
|
|
|
1 );
|
|
|
|
|
}
|
|
|
|
|
else if ( m_DataBits == Apn_Resolution_TwelveBit )
|
|
|
|
|
{
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_ClampPatternTwelve,
|
|
|
|
|
FPGA_REG_HCLAMP_INPUT,
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_ClampPatternTwelve,
|
|
|
|
|
FPGA_REG_HCLAMP_INPUT,
|
|
|
|
|
1 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1387,14 +1387,14 @@ long CApnCamera::LoadSkipPattern()
|
|
|
|
|
|
|
|
|
|
if ( m_DataBits == Apn_Resolution_SixteenBit )
|
|
|
|
|
{
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_SkipPatternSixteen,
|
|
|
|
|
FPGA_REG_HSKIP_INPUT,
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_SkipPatternSixteen,
|
|
|
|
|
FPGA_REG_HSKIP_INPUT,
|
|
|
|
|
1 );
|
|
|
|
|
}
|
|
|
|
|
else if ( m_DataBits == Apn_Resolution_TwelveBit )
|
|
|
|
|
{
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_SkipPatternTwelve,
|
|
|
|
|
FPGA_REG_HSKIP_INPUT,
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_SkipPatternTwelve,
|
|
|
|
|
FPGA_REG_HSKIP_INPUT,
|
|
|
|
|
1 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1418,14 +1418,14 @@ long CApnCamera::LoadRoiPattern( unsigned short binning )
|
|
|
|
|
|
|
|
|
|
if ( m_DataBits == Apn_Resolution_SixteenBit )
|
|
|
|
|
{
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_RoiPatternSixteen,
|
|
|
|
|
FPGA_REG_HRAM_INPUT,
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_RoiPatternSixteen,
|
|
|
|
|
FPGA_REG_HRAM_INPUT,
|
|
|
|
|
binning );
|
|
|
|
|
}
|
|
|
|
|
else if ( m_DataBits == Apn_Resolution_TwelveBit )
|
|
|
|
|
{
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_RoiPatternTwelve,
|
|
|
|
|
FPGA_REG_HRAM_INPUT,
|
|
|
|
|
WriteHorizontalPattern( &m_ApnSensorInfo->m_RoiPatternTwelve,
|
|
|
|
|
FPGA_REG_HRAM_INPUT,
|
|
|
|
|
binning );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1438,8 +1438,8 @@ long CApnCamera::LoadRoiPattern( unsigned short binning )
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
long CApnCamera::WriteHorizontalPattern( APN_HPATTERN_FILE *Pattern,
|
|
|
|
|
unsigned short RamReg,
|
|
|
|
|
long CApnCamera::WriteHorizontalPattern( APN_HPATTERN_FILE *Pattern,
|
|
|
|
|
unsigned short RamReg,
|
|
|
|
|
unsigned short Binning )
|
|
|
|
|
{
|
|
|
|
|
unsigned short i;
|
|
|
|
@ -1463,7 +1463,7 @@ long CApnCamera::WriteHorizontalPattern( APN_HPATTERN_FILE *Pattern,
|
|
|
|
|
DataArray[Index] = Pattern->RefPatternData[i];
|
|
|
|
|
Index++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for ( i=0; i<Pattern->BinNumElements[BinNumber]; i++ )
|
|
|
|
|
{
|
|
|
|
|
DataArray[Index] = Pattern->BinPatternData[BinNumber][i];
|
|
|
|
@ -1493,8 +1493,8 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
|
|
|
|
|
unsigned short PreRoiRows, PostRoiRows;
|
|
|
|
|
unsigned short PreRoiVBinning, PostRoiVBinning;
|
|
|
|
|
unsigned short UnbinnedRoiY; //Qt::Vertical ROI pixels
|
|
|
|
|
|
|
|
|
|
unsigned short UnbinnedRoiY; // Vertical ROI pixels
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Read the Camera ID register
|
|
|
|
|
Read( FPGA_REG_CAMERA_ID, CameraID );
|
|
|
|
@ -1640,7 +1640,7 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
// printf("ReportedGainTwelveBit = %lf\n",m_ApnSensorInfo->m_ReportedGainTwelveBit);
|
|
|
|
|
printf("ReportedGainSixteenBit = %lf\n",m_ApnSensorInfo->m_ReportedGainSixteenBit);
|
|
|
|
|
printf("MinSuggestedExpTime = %lf\n",m_ApnSensorInfo->m_MinSuggestedExpTime);
|
|
|
|
|
printf("CoolingSupported = %u\n",m_ApnSensorInfo->m_CoolingSupported);
|
|
|
|
|
printf("CoolingSupported = %u\n",m_ApnSensorInfo->m_CoolingSupported);
|
|
|
|
|
printf("RegulatedCoolingSupported = %u\n",m_ApnSensorInfo->m_RegulatedCoolingSupported);
|
|
|
|
|
printf("TempSetPoint = %lf\n",m_ApnSensorInfo->m_TempSetPoint);
|
|
|
|
|
// printf("TempRegRate = %u\n",m_ApnSensorInfo->m_TempRegRate);
|
|
|
|
@ -1675,21 +1675,21 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
LoadRoiPattern( m_RoiBinningH );
|
|
|
|
|
|
|
|
|
|
// Program default camera settings
|
|
|
|
|
Write( FPGA_REG_CLAMP_COUNT, m_ApnSensorInfo->m_ClampColumns );
|
|
|
|
|
Write( FPGA_REG_PREROI_SKIP_COUNT, m_ApnSensorInfo->m_PreRoiSkipColumns );
|
|
|
|
|
Write( FPGA_REG_ROI_COUNT, m_ApnSensorInfo->m_ImagingColumns );
|
|
|
|
|
Write( FPGA_REG_CLAMP_COUNT, m_ApnSensorInfo->m_ClampColumns );
|
|
|
|
|
Write( FPGA_REG_PREROI_SKIP_COUNT, m_ApnSensorInfo->m_PreRoiSkipColumns );
|
|
|
|
|
Write( FPGA_REG_ROI_COUNT, m_ApnSensorInfo->m_ImagingColumns );
|
|
|
|
|
Write( FPGA_REG_POSTROI_SKIP_COUNT, m_ApnSensorInfo->m_PostRoiSkipColumns +
|
|
|
|
|
m_ApnSensorInfo->m_OverscanColumns );
|
|
|
|
|
|
|
|
|
|
m_ApnSensorInfo->m_OverscanColumns );
|
|
|
|
|
|
|
|
|
|
// Since the default state of m_DigitizeOverscan is false, set the count to zero.
|
|
|
|
|
Write( FPGA_REG_OVERSCAN_COUNT, 0x0 );
|
|
|
|
|
Write( FPGA_REG_OVERSCAN_COUNT, 0x0 );
|
|
|
|
|
|
|
|
|
|
// Now calculate the vertical settings
|
|
|
|
|
UnbinnedRoiY = m_RoiPixelsV * m_RoiBinningV;
|
|
|
|
|
|
|
|
|
|
PreRoiRows = m_ApnSensorInfo->m_UnderscanRows +
|
|
|
|
|
PreRoiRows = m_ApnSensorInfo->m_UnderscanRows +
|
|
|
|
|
m_RoiStartY;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PostRoiRows = m_ApnSensorInfo->m_TotalRows -
|
|
|
|
|
PreRoiRows -
|
|
|
|
|
UnbinnedRoiY;
|
|
|
|
@ -1714,14 +1714,14 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Program the vertical settings
|
|
|
|
|
Write( FPGA_REG_A1_ROW_COUNT, PreRoiRows );
|
|
|
|
|
Write( FPGA_REG_A1_ROW_COUNT, PreRoiRows );
|
|
|
|
|
Write( FPGA_REG_A1_VBINNING, PreRoiVBinning );
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_A2_ROW_COUNT, m_RoiPixelsV );
|
|
|
|
|
Write( FPGA_REG_A2_VBINNING, (m_RoiBinningV | FPGA_BIT_ARRAY_DIGITIZE) );
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_A3_ROW_COUNT, PostRoiRows );
|
|
|
|
|
Write( FPGA_REG_A3_VBINNING, PostRoiVBinning );
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_A2_ROW_COUNT, m_RoiPixelsV );
|
|
|
|
|
Write( FPGA_REG_A2_VBINNING, (m_RoiBinningV | FPGA_BIT_ARRAY_DIGITIZE) );
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_A3_ROW_COUNT, PostRoiRows );
|
|
|
|
|
Write( FPGA_REG_A3_VBINNING, PostRoiVBinning );
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_VFLUSH_BINNING, m_ApnSensorInfo->m_VFlushBinning );
|
|
|
|
|
|
|
|
|
@ -1738,8 +1738,8 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
{
|
|
|
|
|
Read( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
|
|
|
|
|
RegVal |= FPGA_BIT_DISABLE_H_CLK;
|
|
|
|
|
|
|
|
|
|
RegVal |= FPGA_BIT_DISABLE_H_CLK;
|
|
|
|
|
|
|
|
|
|
Write( FPGA_REG_OP_A, RegVal );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1765,7 +1765,7 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
write_FanMode( Apn_FanMode_Medium );
|
|
|
|
|
|
|
|
|
|
// Initialize the LED states and the LED mode. There is nothing to output
|
|
|
|
|
// to the device since we issued our CLEAR early in the init() process, and
|
|
|
|
|
// to the device since we issued our CLEAR early in the init() process, and
|
|
|
|
|
// we are now in a known state.
|
|
|
|
|
m_pvtLedStateA = Apn_LedState_Expose;
|
|
|
|
|
m_pvtLedStateB = Apn_LedState_Expose;
|
|
|
|
@ -1790,7 +1790,7 @@ long CApnCamera::InitDefaults()
|
|
|
|
|
|
|
|
|
|
m_pvtImageInProgress = false;
|
|
|
|
|
m_pvtImageReady = false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1840,9 +1840,9 @@ void CApnCamera::UpdateGeneralStatus()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Read the general status register of the device
|
|
|
|
|
QueryStatusRegs( StatusReg,
|
|
|
|
|
HeatsinkTempReg,
|
|
|
|
|
CcdTempReg,
|
|
|
|
|
QueryStatusRegs( StatusReg,
|
|
|
|
|
HeatsinkTempReg,
|
|
|
|
|
CcdTempReg,
|
|
|
|
|
CoolerDriveReg,
|
|
|
|
|
VoltageReg,
|
|
|
|
|
TdiCounterReg,
|
|
|
|
@ -1859,13 +1859,13 @@ void CApnCamera::UpdateGeneralStatus()
|
|
|
|
|
m_pvtCoolerDrive = 100.0;
|
|
|
|
|
else
|
|
|
|
|
m_pvtCoolerDrive = ( (double)(CoolerDriveReg - 600) / 2600.0 ) * 100.0;
|
|
|
|
|
|
|
|
|
|
m_pvtCurrentCcdTemp = ( (CcdTempReg - APN_TEMP_SETPOINT_ZERO_POINT)
|
|
|
|
|
|
|
|
|
|
m_pvtCurrentCcdTemp = ( (CcdTempReg - APN_TEMP_SETPOINT_ZERO_POINT)
|
|
|
|
|
* APN_TEMP_DEGREES_PER_BIT );
|
|
|
|
|
|
|
|
|
|
m_pvtCurrentHeatsinkTemp = ( (HeatsinkTempReg - APN_TEMP_HEATSINK_ZERO_POINT)
|
|
|
|
|
m_pvtCurrentHeatsinkTemp = ( (HeatsinkTempReg - APN_TEMP_HEATSINK_ZERO_POINT)
|
|
|
|
|
* APN_TEMP_DEGREES_PER_BIT );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_pvtInputVoltage = VoltageReg * APN_VOLTAGE_RESOLUTION;
|
|
|
|
|
|
|
|
|
|
// Update ShutterState
|
|
|
|
|