This is written for John Monnier of the University of Michigan, who asked for a GenIII system (ARC22 and ARC64) to operate traditional two-channel IR video boards. He wants the fiber optic speed to be able to read out quickly. He also asked for subarray readout capability, so portions of Phil Hinz's NICMOS code are adopted. The file "timIRmisc.asm" written for the IRx8 video board = ARC46 will be used, as will the ARC22 file "timboot.asm" from /V1.8/Release_Code, and the utility board support will be left in. Summary: - Gen III operation of two-channel IR video board - HAWAII subarray readout Whole array readout has the same timing as has been used for many years for PICNIC readout. READ is asserted high 5 millisec before readout begins The pixel time is 3.0 microsec LINE alternates high and low for each line's readout Whole array readout will occur if COL_OFFSET = 0 Multiple reads per pixel is not implemented There is a delay of RST_DLY = 50 milliseconds after the end of reset before the first read Subarray readout occurs if col_offset > 0, as follows - The pixel time is 1.0 microsec Multiple reads per pixel is implemented SSA specifies the subarray In both cases number of columns is determined by the value of Y:1 = and the number of rows is determined by Y:2, which are written directly using the write memory command WRM The subroutine to read the array is called RD_ARRAY and is located in the file named "tim.asm". It has these two sets of code interleaved throughout it, one for subarray, fast, multiple read per pixel and the other for slow, whole image readout. This subroutine reads the array once, and is called by the routine START_EXPOSURE located in the "timIRmisc.asm" file. This routine handles the continous readout, samples the trigger if needed, calls array reset and array read. Software commands (1) 'SOS' Ch# To select the output source(s) to be read out. Ch# = 0, 1, 2, 3 or 'ALL' The quadrants are labeled clockwise from the upper left, # 0 to 3 - 0 1 3 2 (2) 'SSA' row_offset col_offset To select subarray mode and set the x- and y- offsets from the edge of the quadrant where readout is to begin (3) 'SNR' number Set the number of reads per pixel, only active in subarray mode (4) 'STM' 0 or 1 A '1' argument will put the controller in trigger mode wherein a TTL pulse on the front panel BNC connector is required to start the exposure. The pulse must be of duration 200 nsec or greater, and the exposure will start about 200 nsec after its rising edge. Default is 0 => trigger not required. (5) 'CDS' 0 or 1 Set readout mode to correlated double sample or not. In correlated double sample mode a frame readout will occur both before and after the timed exposure. (6) 'SRD' 0 or 1 The PICNIC array requires the signal named READ to be turned on during readout. However, it generates a certain glow that gets quite strong for long exposure times. It alse requires a few milliseconds settling time after it is turned on to settle. Therefore, the user is given the option of turning it on and off depending on system requirements. The default is to turn it on and off ('CDS' 1). (7) 'SFR' # Specify number of frames that will be read out per reset operation. Then there are two commands to support continuous readout, which is more fully described in the accompanying document 'ContinuousReadout.doc' - (7) 'SNC' # Sepcify the number of frames to coadd in the current sequence. (8) 'FBP' # Specify the number of frames that will fit into the host computer frame buffer that has been allocated. The main area where I feel uncertain is with the resetting of the array. I've put in a delay of 50 milliseconds between the reset and the first read in correlated double sample mode to allow the reset noise to settle down. This is the RST_DLY parameter defined at the end of the "tim.asm" file and used in the START_EXPOSURE routine. The core code for controlling the array readout is as follows - JSR