
Embedded Solutions
Page 16 of 50
Programming
Programming the PMC BiSerial-III-HW2 requires only the ability to read and write data
from the host. The base address of the module refers to the first user address for the
slot in which the PMC is installed. This address is determined during system
configuration of the PCI bus.
Depending on the software environment it may be necessary to set-up the system
software with the PMC BiSerial-III "registration" data. For example in WindowsNT there
is a system registry, which is used to identify the resident hardware.
In order to receive data the software is only required to enable the Rx channel and set
the frequency parameters. To transmit the software will need to load the message into
the appropriate Dual Port RAM, set the frequency and mode and enable the transmitter.
The interrupt service routine should be loaded and the interrupt mask set. The interrupt
service routine can be configured to respond to the channel interrupts on an individual
basis. After the interrupt is received, the data can be retrieved. An efficient loop can
then be implemented to fetch the data. New messages can be received even as the
current one is read from the Dual Port RAM.
The TX interrupt indicates to the software that a message has been sent and that the
message has completed. If more than one interrupt is enabled, then the interrupt
service routine (ISR) needs to read the status to see which source caused the interrupt.
The status bits are latched, and are explicitly cleared by writing a one to the
corresponding bit. It is a good idea to read the status register and write that value back
to clear all the latched interrupt status bits before starting a transfer. This will insure
that the interrupt status values read by the ISR came from the current transfer.
Refer to the Theory of Operation section above and the Interrupts section below for
more information regarding the exact sequencing and interrupt definitions.
The VendorId = 0x10EE. The CardId = 0x002E.
Flash design ID = 0x0002, Current Flash revision = 0x0002