The 055 card has 16 settable registers, all of which are multiplexed onto a single output. The multiplexing is ordinarily controlled by the clock. The specific clock events that cause the card to switch from register to register are neither settable or readable.
The general approach is to assign a different data base device to each register. This device has the properties of Setting, Basic Status, and Basic Control. There are thus up to 16 different database devices for each 055 card. The Setting properties are truly independent-- sending a value to a specific device writes into a specific register on the card.
It is also possible to split up each register into different fields. When you do this you will have several logical multiplexers all operating in tandem.
|0||OID = 3E (hex)|
|3E (hex)||split code | subaddress|
The SSDN is the same for all the properties:
In the normal case the Setting property is a single word which can represent either a digital or analog value. It is written with an F(16)A(x) command and read back with an F(0)A(x) command.
To specify this normal mode you set split code = zero and split mask zero. There are already many devices in the data base which use the whole word for each device. These data base entries will not have to be changed.
If you want to split up a register among several devices you have to specify two items in the SSDN:
An example follows. Suppose you want to split your 055 registers into two bytes: the upper byte contains a signed binary number in the range -128 to +127 and the lower byte contains an unsigned number in the range 0 to 255. You would create two data base devices for each register:
Split Mask Split Code ---------- ---------- FF00 3 Device 1: upper byte, signed number 00FF 2 Device 2: lower byte, unsigned number
The Basic Status property returns a single word which looks like this:
M000/0000/ET00/SSSS SSSS Register no. selected for output at this very instant T 1 = TCLK present E 1 = Card enabled M 1 = THIS VERY DEVICE is the one selected for output at this instant.
The high order bit of the Basic Status word is derived by the front end, the rest is read from the card with an F(1)A(0) command.
For the original 055 card we adopted the convention of specifying the following scaling in the Basic Status PDB (bits are not inverted):
ON MASK = 0080 (card enabled) READY MASK = 0040 (TCLK present) POL + MASK = 8000 (This channel is selected)
This has the effect of providing a useful status on the parameter page. In particular the "Pol +" flag lets you watch, in real time, as the card switches between the various devices you have displayed on a parameter page.
Basic Control codes line up with the Basic Status. It is intended that the Basic Control PDB work as follows:
PDB SLOT CODE CAMAC CMD -------- ---- --------- OFF 1 F(24)A(0) Disable the card ON 2 F(26)A(0) Enable the card RESET 3 F(9)A(0) Reset the card POL + 4 F(27)A(x) Force mux to this very channel
By this mechanism it is possible to force the 055 card to switch to a specific register by interrupting under "Pol +" on the parameter page, which then shows up a "Pol +" status for as long as the register remains selected.