This page is very old, we are now at:
cairn-research.co.uk.



Use of the Amplicon PC214 Cards to Control the Cairn Rrotor

Connector Specification

These notes should be read in conjunction with the manual for the PC214 card and the specification for the rotor control interface. All data values are in hexadecimal notation unless otherwise stated.

PC214 Assignments

Amplicon port
assignment
Signal specification
1PA0 Request position (LSB)
1PA1 Request position
1PA2 Request position (MSB)
1PA3 Goto
1PA4 Spin/stop
1PA5 Direction
1PA6 Step (positive edge triggered)
1PA7 Frequency
1PB0 Current position (LSB)
1PB1 Current position
1PB2 Current position (MSB)
1PB3 Ready
1PB4 Stopped
1PB5 Bus direction
1PB6 Mclock
1PB7 Rotor pulse
2PA0 1(Rotor speed(BCD 0 - 9))
2PA1 2
2PA2 4
2PA3 8
2PA4 1(BCD 0 - 90)
2PA5 2
2PA6 4
2PA7 8
2PB0 1(BCD 0 - 900)
2PB1 2
2PB2 4
2PB3 8
2PB4 Frequency range
2PB5 Reserved
2PB6 Reserved
2PB7 Enable internal frequency

The PC214 is addressed as a series of i/o ports. The base address of the ports - which we shall refer to as "ports" from now on - is controlled by switches on the card. The base address on cards supplied from Amplicon is currently 300, but on PC214 cards supplied by us it is normally 1B0 (use 300 hex for the PC214 card as 1B0 no longer works!), as this was the value used by Amplicon in the past, and which we still use as the default for our own software. Of course you can select any other value that does not conflict with other hardware, but we recommend that you use one of these two addresses as they are both likely to be available. Please refer to the Amplicon manual regarding IRQ (interrupt request) level selection. For our own applications we have always left it at the default level of 7, and we have checked the rotor status information by reading the appropriate port (see below) from time to time rather than trying to generate an inte rrupt, so we cannot offer any expert advice on interrupt programming of the card (it may well be possible, but polling is certainly much easier).

There are two identical sets of ports, where each set consists of A B and C ports, available on the card. The C ports can be used for data but are mainly for control purposes and so we use only the A and B ports. Each of these ports is eight bits wide, giving a total of 32 bits The port addresses are as follows:

We recommend that you map the connections to the PC214 in the order that they are defined in the rotor control interface specification, starting with the least significant bit of set 1, port A. This recommended configuration uses set 1, port A as an output to control the rotor position, and set 1, port B, as an input to read the rotor status information. This configuration is obtained by writing a (byte) value of 08B hex to Ports+3.

The rotor control interface also allows remote setting of the internal frequency generator that controls the continuous rotation speed (but please note that the rotor speed can also be synchronised to an external signal frequency). The second set of A and B ports can be used for this purpose, as low and high bytes respectively, i.e. you can write a 16-bit (word) value to Ports+4. To set both the A and B ports of this set as outputs, write a (byte) value of 089 hex to Ports+7. If you are not using this facility, then make both these ports inputs by writing 09B hex to Ports+7. This will prevent them affecting the rotor if they are connected to the control interface.

If you wish to make your own connections the PC214, please note that the physical pin connections are not in a linear sequence. However, we can supply an adapter pcb and 37-way D connector that allows a direct ribbon cable connection to the rotor control interface, using the signal assignments described above. If you use this option, please note that the adapter board increases the width of the card beyond that of a single slot. You should therefore not plug another card into the slot on the adapter pcb side of the board (but it may be possible to avoid losing a slot if you plug the card into the first slot, where the additional space for the pcb will probably be available).

For programming, please note the following points. When using a port as an output, it is not possible to read back the stored data value, so you should keep a copy in memory as a variable. This is important because you will need to change individual bits independently, but of course you must write an entire byte. The procedure to change a single bit is thus to read the memory copy, change the required bit(s), and to write the new data both to the port and to the memory copy. When programming a new rotor position, you should send the new position (on bits 0-2 of set 1 port A) BEFORE you flip the "goto" bit (bit 3 of that same port) high. This is because a short time must be allowed for the position bits to assume their new values and be read by the rotor control interface before the goto command is issued. In practice the delay incurred by making these separate instructions is likely to be sufficient. For further information or programming hints, please contact us. Our favo urite programming languages are FORTH and PASCAL (DELPHI), but we can also offer some advice on programming in other languages.





Contents | Next | Previous