User's Manual
PMAC2 User Manual
76 Setting Up PMAC2 for MLDT Feedback
MLDT Feedback Select: I9n0
For proper decoding of the MLDT signal, I9n0 for Channel n must be set to 12. With this setting, the
pulse timer is cleared to zero at the falling edge of the output pulse. It then counts up at 117.96 MHz until
a rising edge on the return pulse is received, at which time the timer's value is latched into a memory-
mapped register that the processor can read. The addresses of these registers are:
Channel 1:
Y:$C000
Channel 5:
Y:$C020
Channel 2:
Y:$C008
Channel 6:
Y:$C028
Channel 3:
Y:$C010
Channel 7:
Y:$C030
Channel 4:
Y:$C018
Channel 8:
Y:$C038
Note:
The MLDT feedback uses the same circuitry that would be used for quadrature
encoder feedback on that channel, so an encoder and MLDT cannot be
simultaneously connected to the same channel’s feedback on PMAC2. In this
mode, it is the pulse timer that is used as a position measurement for feedback, not
the pulse counter that is used with encoders. The counter still registers the number
of pulses returned, but does not represent a position measurement here.
PMAC2 Conversion Table Processing Setup
To use this latched timer value for position feedback, the value must be processed through the Encoder
Conversion Table.
Method and Address: Entry First Line
These timer registers are processed as parallel feedback just as an absolute encoder would be. Using the
Executive program Encoder Table Configure window, select the Parallel Y Data with Filtering conversion
method. If writing directly to the table, this is the $30 format. The source address is the address of the
appropriate timer as shown above ($C000, $C008, etc.)
Bits Enabled: Entry Second Line
The second line of the conversion table entry is the Bits Enabled Mask word. This should be set to
$07FFFF, specifying use of 19 bits of the timer. Note that this does not necessarily limit the absolute
position range to 19 bits (2
19
LSBs, or 524,288 LSBs); the full range is set by the number of bits read by
Ix10 at power-up/reset; this is suggested to be 23 bits for a range of 2
23
LSBs, or 8,388,608 LSBs (see
below).
Maximum Change: Entry Third Line
The third line of the conversion table entry is the Maximum Change filter value. This value, expressed in
bits per servo cycle, specifies the maximum change in the source data that will be accepted as real. This
is an important protection against extra or missing return pulses. It should be set to a value slightly
greater than the maximum real velocity expected in the application.
Table Result Register
The result of this conversion is in the X-register of the last (third) line of the entry. Any function using
this value should address this register. For example, if this were the first entry in the table, which starts at
$0720, the result would be in X:$0722.
Example:
To set up the encoder conversion table to process MLDTs on Channels 1 to 8 only, with a maximum change
per servo cycle of 32 LSBs per servo cycle, the following direct memory write commands could be used:
WY:$0720,$30C000,$07FFFF,32 ; Parallel read of Timer 1
WY:$0723,$30C008,$07FFFF,32 ; Parallel read of Timer 2
WY:$0726,$30C010,$07FFFF,32 ; Parallel read of Timer 3