#include <CSIS3820.h>
class CSIS3820 {CSIS3820(unsigned long base, int crate = 0) throws std::string;
const double getRevision();
const void LightOn();
const void LightOff();
const unsigned int getCsr();
const unsigned long getAcqMode();
const void Reset();
const void setOperatingMode(OperatingMode mode);
const OperatingMode getOperatingMode();
const void setInputMode(InputMode mode);
const InputMode getInputMode();
const void setLatchSource(LNESource mode);
const LNESource getLatchSource();
const void Arm();
const bool isArmed();
const void Enable();
const void Disable();
const bool isEnabled();
const void EnableReferencePulser();
const void DisableReferencePulser();
const bool isReferencePulserEnabled();
const void EnableTestCounter();
const void DisableTestCounter();
const bool isTestCounterOn();
const void ClearChannels();
const void DisableClearOnLatch();
const void> EnableClearOnLatch();
const unsigned long ReadChannel(unsigned int num);
const void ReadAllChannels(unsigned long* buffer);
const void Latch();
const unsigned long ReadLatchedChannel(unsigned int num);
void ReadAllLatchedChannels(unsigned long* buffer);
const void LatchAndRead(unsigned long* buffer);
}
The CSIS3820 is a 32 channel latching scaler with several different modes of operation. At the NSCL we usually need to run scalers as simple latching scalers. That mode is the one best supported and tested.
Creates an object that can control an SIS 3820 scaler. The base
parameter is the base address programmed into the rotary switches of the module,
while the crate
parameter is the VME crate number.
If crate
is not supplied it defaults to zero which
is exactly right for a system with a single VME crate.
Returns the firmware revision from the Id/firmware revision register.
Turns on the user LED.
Turns the user led off.
Returns the contents of the control status register.
Returns the contents of the acquisition mode register.
Does a software reset on the module.
Set the modue operating mode. See "Types and public data" below for a description of the OperatingMode data type.
Returns the module operating mode. See "Types and public data" for a description of the OperatingMode data type.
Set the module's input mode. This governs the meaning of the control inputs. See "Types and public data" for a description of the InputMode data type.
Returns the module's current input mode. The input mode determines the meaning of the inputs on the module's control bus. The InputMode data type and its allowed values are decribed further in "Types and public data" below.
Set the source of the "load next event" signal. This signal determines when to latch data For more information about the LNESource data type and its allowed values, see the section "Types and public data" below
Returns the current source of the "load next event" signal.
See setLatchSource
for more information about
this.
Arms the module. The module cannot be enabled until it is armed.
Returns true if the module is armed for data taking.
Enables the module. Once the module is armed and enabled, events can be latched into it using the Load next event source.
Disables the module. When disabled, the module cannot take data (ignores its load next event source).
Returns true if the module is enabled for data taking.
Enales the reference pulser to channel 0 of the scaler. The reference pulser is a 50Mhz data source that can be routed into the first of the scaler channels. Note that the manual numbers channels from 1, however we use the more conventionaly 0 based numbering.
Disables the reference pulser. See EnableReferencePulser
above for more information about the reference pulser.
Returns true if the reference pulser is enabled.
See EnableReferencePulser
and DisableReferencePulser
for more information about how to turn this on and off.
Enables the test counter. The test counter is a 25Mhz pulser that can be enabled into all channels of the scaler.
Disables the test counter. See
EnableTestCounter
for more information about the
test counter.
Returns true if the test counter is enabled.
Clears the counters of all the channels of the scaler. Note that this does not clear the multi-event memory.
By default, the Latch next event pulse clears the counters. This makes the event buffers incremental scaler values, which is what scaler programs at the NSCL expect. This disables that function making the scaler values read 'absolute' values..at least until they roll over.
Enables the scalers to clear counters on the "Load next event" signal.
Reads a single channel from the scaler. Note that this function reads the live counters, rather than the event memory or latches. The live counters may be unstable.
Reads all of the scaler channels. Note that this uses
ReadChannel
to operate. This means
that the raw counters are read, not the latched values so
there is at least time skew between channel 0 anbd channel 31,
and there may be some instability in the counter values.
Latches the scaler counters in to the latches and the event buffer.
Once latched the values are stable. The counters will be cleared if
clear on latch is enabled
(see DisableClearOnLatch
and
EnableClearOnLatch
).
Reads one of the latched channel registers. This will hold the value of a channel counter at the time of the last Load Next Event operation.
Reads all 32 latch registers into buffer
.
These registers will hold the values of the counters as of the
most recent "Load Next Event" signal.
Peforms a load next event and reads all latch registers into the
buffer
.
The CSIS3820.h defines several enumerated data types that are passed to the various setup functions of the module.
This enumerated type defines the module operating modes:
The module will operate as a latching scaler. This is the only mode that is really supported at the NSCL.
In this mode, the scaler takes data for fixed repetetive time periods and then latches the values into its event memory. This mode is not really supported (yet), as there is no mechanims to access the multievent memory.
In this mode, the scaler performs much like the multiscaler mode described above except that the events saved are sums over all of the time periods.
This enumerated type defines the possible input modes for the device. Input modes determine the meaning of the control inputs. Section 7.18.2 of the SIS3820 manual provides a detailed description of the input modes. Possible values for this type include:
The inputs have no function (mode 0).
Input 1 is an external load next event pulse. Input 2 and 3 are external user inputs that are available in the control register. Input 4 is an inhibit for the Load Next Event input. (Mode 1).
(Mode 2). Input 1 is an external load next event input, input 2 is external user bit 1 in the status register, Input 3 inhibits counting in all channels of the scaler and Input4 inhibits te load nexte event input.
(Mode 3). Input 1 is the extneral latch next event. Inputs 2 and 3 are the user input bits 1 and 2 respectively in the control register and input 4 inhibits counting in all channels of the scaler.
(Mode 4). Each input inhibits a group of 8 channels. Input 1 inhibits channels 0-7, input 2 inhibits channels 8-15 etc.
Mode 5: Input 1 is the load next event input while input two starts the module's histogramming scaler data taking. All other inputs have no function.
Mode 6: Input 1 is the load next event input. Input 2 inhibits counting in all counters. input 3 clears all counters.
Sets source of the latch next event signal. This can have any of the following values:
Next event an only be latched from the VME (via calls to functions
that latch the event such as Latch
).
Latch only on front panel input. This requires an input mode be set that enables one of the front panel inputs as a Load next event signal.
Latches based on the 10Mhz internal clock divided by the latch preset register (not really supported)
Latch on the overflow of a channel selected by the LNE channel select register.
Latch on counts in the selected scaler register divided by the preset register value.