#include <rb8513_timebase.h>
Inherits RulbusDevice.
Generate short pulses with a programmable interval time.
Module RB8513 is a clock signal generator with a programmable interval time. It has a TTL trigger input and a TTL clock output.
The module can generate a clock signal with the following programmable interval times.
Programmable interval times -------------------------------- 50 ns 100 ns 200 ns 500 ns 1 us - 99 us, step 1 us 100 us - 9.9 ms, step 100 us 10 ms - 990 ms, step 10 ms
When a timebase is opened, it is configured as follows:
Here is a small example how you may use a timebase module.
Rulbus::RB8513_timebase timebase( "timebase" ); timebase.setIntervalTime( 1e-3 );
Module RB8515 contains a 20 MHz oscillator, several divider ICs and logic to select the output frequency.
The module has two registers:
Register | Offset Rd/Wr Description --------------+-------------------------------------------------------------- Multiplier | 0 write to set the clock rate multiplier (BCD) | 76543210 | 7654 : tens | 3210 : units | Selector | 1 write clock rate selector | 76543210 | 765 : (not used) | 4 : write 0 to reset clock gate, | 3 : (not used) | 210 : 0-7 (bit 4 must be 1) | 0: 1..99 us | 1: 0.1..9.9 ms | 2: 10..990 ms | 3: (not used) | 4: 50 ns | 5: 100 ns | 6: 200 ns | 7: 500 ns
Public Types | |
typedef Int | Value |
register value type | |
Public Member Functions | |
Construction | |
RB8513_timebase (NameCref name, Addr addr=DEF_ADDR, Rack rack=DEF_RACK) | |
constructor; may throw RulbusOpenError. | |
~RB8513_timebase () | |
destructor. | |
Accessors | |
Time | intervalTime () const |
the current interval time in s. | |
Value | clockRateMultiplier () const |
the current clock rate multiplier value (0..99). | |
Value | clockRateSelector () const |
the current clock rate selector value (0..6, for 50 ns, 100 ns, 200 ns, 500 ns, 1..99 us, 0.1..9.9 ms, 10..990 ms). | |
Mutators | |
void | stop () |
stop generating pulses. | |
void | setIntervalTime (Time aTime) |
set interval time to 50 ns, 100 ns, 200 ns, 500 ns, 1..99 us, 0.1..9.9 ms, 10..990 ms; may throw RulbusRangeError. | |
void | setClockRateMultiplier (Value aValue) |
set the clock rate multiplier to the specified value (0..99); may throw RulbusRangeError. | |
void | setClockRateSelector (Value aValue) |
set the clock rate selector to the specified value (0..6, for 50 ns, 100 ns, 200 ns, 500 ns, 1..99 us, 0.1..9.9 ms, 10..990 ms); may throw RulbusRangeError. | |
Static Public Attributes | |
Defaults | |
const Addr | DEF_ADDR = 0xB0 |
default address | |
const int | DEF_MUL = 1 |
default clock rate multiplier contents | |
const int | DEF_SEL = 4 |
default clock rate selector contents | |
Limits | |
const int | LIM_MULMIN = 0 |
lowest valid clock rate multiplier | |
const int | LIM_MULMAX = 99 |
highest valid clock rate multiplier | |
const int | LIM_SELMIN = 0 |
lowest valid clock rate selector | |
const int | LIM_SELMAX = 6 |
highest valid clock rate selector | |
const int | LIM_SELMAXFIXED = 3 |
highest fixed time clock rate selector | |
Protected Member Functions | |
Construction and Assignment | |
RB8513_timebase () | |
prevent default construction | |
RB8513_timebase (RB8513_timebaseCref rhs) | |
prevent copying | |
RB8513_timebaseRef | operator= (RB8513_timebaseCref rhs) |
prevent copying | |
Private Attributes | |
Data | |
Value | theMutiplyReg |
current clock rate multiplier register contents | |
Value | theSelectorReg |
current clock rate selector register contents | |
Static Private Attributes | |
Register offsets | |
const int | OFF_MUL = 0 |
clock rate multiplier register offset | |
const int | OFF_SEL = 1 |
clock rate selector register offset | |
const int | ADR_WIDTH = OFF_SEL + 1 |
address width | |
Selector-register masks | |
const int | MSK_SELSTP = 0x10 |
reset clock gate | |
Constant values | |
const Time | timeList [] |
list of fixed interval times and of base interval times [s] | |
const Value | selectorList [] |
list of selector register codes |
|
Initial value: { 0x14, 0x15, 0x16, 0x17, 0x10, 0x11, 0x12 } |
|
Initial value: { 50e-9, 100e-9, 200e-9, 500e-9, 1e-6, 100e-6, 10e-3, } |