
Intelligent Eight-Channel Communications Controller
—
CD1865
Datasheet
33
If the condition that caused the request in the first place remains true, the CD1865 quickly
generates another service request. If no data is read, this is always the case. If some, but not all, of
the available data is read, Conditions 1 and 2 are not true, but Condition 3 may be true if an
exception condition is the cause of the Good Data Interrupt. If this becomes a problem, one
solution is to temporarily disable receiving interrupts on that channel. To avoid FIFO overflow, do
not disable the channel for very long.
5.4.1.2
Receive Exception
Unusual or exception conditions are reported to the host one character at a time through the
Receive Exception Service Request. As with normal receive processing, the host determines the
requesting channel by reading the GCR. It can then determine the specific exception(s) by reading
the Receive Character Status register.
Exception conditions are generated for parity errors, framing errors, FIFO overrun, special
character recognition, break detect, and for a special feature called the
‘
No New Data Timer
’
(NNDT).
NNDT is a receive timer option to generate a service request for the first receive data time-out
following the transfer of all data from the FIFO to the host. It is often useful, when managing
relatively large I/O buffers, for an I/O processor to determine that
‘
no data has arrived lately
’
. This
event is used to transfer the contents of the local buffer that has been storing data from the CD1865
FIFO for host-system processing.
This service request is a receive exception sub-type, and can be used to signal that it is time to
transfer the buffer. This feature can be enabled or disabled by controlling the NNDT bit in the
Service Request Enable register. As shown in
Figure 7
, every time a received character is loaded
into the FIFO, the timer is restarted. If the timer times-out, the CD1865 checks if there is any data
in the FIFO. If there is, a Good Data Service Request is posted to avoid
‘
stale data
’
. If there is no
data in the FIFO, the CD1865 checks that NNDT is enabled and
‘
armed
’
. Arming occurs when the
last character is transferred out of the FIFO to the host. If NNDT is on and armed, a Receive
Exception Service Request is posted to inform the host of this event. Note that the NNDT is not
armed if the last character removed from the FIFO is an exception character.
Every Receive Exception is a unique, one-character event. The Receive Data Count register has no
meaning, unlike the Receive Good Data case, the Status byte in the receive exception handling
routine must be read. The Receive Data Count register and the associated data character is
discarded by the CD1865 at the end of the service routine. The Status byte must be read before
reading the Data byte. Once the Data register is read, the Status byte is no longer available.