User's Manual

PMAC User Manual
Computational Features 147
Addresses
PMAC uses the Motorola DSP56001 as its processor. The 56001 has dual 16-bit address spaces (of 24-
bit data) for memory and I/O. (The I/O in PMAC is memory-mapped; it does not have a separate I/O
space as the PC does.) When specifying an address in PMAC, one must state which half of memory (X
or Y) – or both halves (L) for a long 48-bit word – followed by an optional colon, followed by the
numerical address itself. The numerical address is a constant that in the range of 0 - 65535 ($0-$FFFF if
specified in hex).
Do not confuse the memory and I/O addresses of PMAC itself with those of the host computer. Examples
of legal address specifications are:
Y:$FFC2 (word containing machine I/O)
X:1824 (interpolated encoder 1 position)
X$C003 (captured encoder 1 position)
Y49155 (DAC1 output value)
This form of address specification is used particularly in M- variable definitions and direct read (R) and
write (W) commands. There are I-variables that specify addresses, but these are usually pre-defined to the
X or Y space, so all that is needed is the numerical value. The data-gathering-address I- variables (I21-
I44) use an extra hex digit in front of the numerical value to specify the memory half (see I21
description).
Variables
PMAC has several types of variables. In PMAC, a variable is specified by a single letter (I, P, Q, or M)
followed by a number from 0 to 1023. Each letter denotes a different type of variable, each type with its
own properties. The different types share the characteristics that when their name is cited in an
expression, the current value of the variable is used (reading from them); and values can be assigned to
them in an equation (writing to them).
Variable names may not be specified on PMAC; however, the Editor in the PMAC Executive Program
has a substitution (macro) scheme that allows programs to be written using user-defined variable names,
but changes these names into PMAC-legal variable names during the download process.
I-Variables
I-Variables (initialization, or setup variables) determine the personality of the card for a given application.
They are at fixed locations in memory and have pre-defined meanings. Most are integer values, and their
range varies depending on the particular variable. There are 1024 I-variables from I0 to I1023, and they
are organized as follows:
I0 — I79: General card setup
I80 — I99: Geared Resolver setup
I185 — I199: Coordinate System 1 setup
I200 — I284: Motor #2 setup
I285 — I299: Coordinate System 2 setup
...
I800 — I884: Motor #8 setup
I885 — I899: Coordinate System 8 setup
I900 — I979: Encoder 1 - 16 setup
I980 — I1023: Reserved for future use