GR740-UM-DS, Nov 2017, Version 1.7
149
www.cobham.com/gaisler
GR740
3. If the code is an interrupt code or extended interrupt code, the interrupt number’s corresponding bit
in RTR.ISR0 or RTR.ISR1 must be 0. If the code is an interrupt acknowledgment code, the corre-
sponding bit in RTR.ISR0 must be 1.
4. No previous distributed interrupt code with the same interrupt number is waiting to be distributed.
5. The ISR change timers (see section 13.2.18.2) are either globally disabled (RTR.RTRCFG.IC = 0)
or the interrupt number’s corresponding ISR change timer has expired.
The received code is discarded if one of the requirements above is not fulfilled. If all of the require-
ments above are fulfilled, however, the received code is placed in a queue. The queue is then serviced
in one of the four following ways, depending on the settings of the RTR.RTRCFG.IS and
RTR.RTRCFG.IP bits:
1. All interrupt codes have priority over all interrupt acknowledgment codes / extended interrupt
codes (RTR.RTRCFG.IP = 0) and the interrupt numbers are serviced through a round-robin scheme
(RTR.RTRCFG.IS = 0). This is the default service scheme after reset / power-up.
2. All interrupt codes have priority over all interrupt acknowledgment codes / extended interrupt
codes (RTR.RTRCFG.IP = 0) and the interrupt numbers are serviced with priority to lower interrupt
numbers (RTR.RTRCFG.IS = 1).
3. All interrupt acknowledgment codes / extended interrupt codes have priority over all interrupt
codes (RTR.RTRCFG.IP = 1) and the interrupt numbers are serviced through a round-robin scheme
(RTR.RTRCFG.IS = 0).
4. All interrupt acknowledgment codes / extended interrupt codes have priority over all interrupt
codes (RTR.RTRCFG.IP = 1) and the interrupt numbers are serviced with priority to lower interrupt
numbers (RTR.RTRCFG.IS = 1).
When a distributed interrupt code has been selected from the queue, it is forwarded to all ports (except
the port it was received on) that has interrupt distribution enabled (RTR.PCTRL.IC = 1) and that has
transmission of interrupt codes or interrupt acknowledgment codes / extended interrupt codes enabled
(RTR.PCTRL2.IT and RTR.PCTRL2.AT respectively).
13.2.18.2 Interrupt distribution timers
Each interrupt number has two corresponding timers called the ISR timer and ISR change timer:
The ISR timer is started and reloaded with the value from the RTR.ISRTIMER register each time a
received interrupt code / extended interrupt code sets the corresponding RTR.ISR0 / RTR.ISR1 bit to
1. If an interrupt acknowledgment code is received, the corresponding ISR timer is stopped. If the ISR
timer expires before an interrupt acknowledgment code is received, the corresponding bit in the
RTR.ISR0 or RTR.ISR1 register is cleared. The use of ISR timers is always enabled. In the interrupt
with acknowledgment mode, the purpose of the timers is to recover from situations where an interrupt
acknowledgment code is lost. In the extended interrupt mode, the purpose of the ISR timers is to limit
the rate of interrupt code forwarding. It is important to configure the reload value for the ISR timer
correctly. In the interrupt with acknowledgment mode, the reload value must not be less than the
worst propagation delay for the interrupt code, plus the maximum delay in the interrupt handler, plus
the worst propagation delay for the interrupt acknowledgment code. In the extended interrupt mode,
the reload value must not be less than the worst propagation delay for the interrupt code / extended
interrupt code.
The ISR change timers are timers that can optionally be used to control the minimum delay between
two consecutive changes to the same RTR.ISR0 / RTR.ISR1 bit. The purpose of the timers is the pro-
tection against unexpected codes that could occur, for example, due to a network malfunction or a
babbling idiot. If the use of ISR change timers is enabled (RTR.RTRCFG.IC = 1), the ISR change
timer for an RTR.ISR0 / RTR.ISR1 bit is started and reloaded with the value from the RTR.ISRC-
TIMER register every time a received distributed interrupt code makes the RTR.ISR0 / RTR.ISR1 bit
change its value. Until the timer has expired, the corresponding RTR.ISR0 / RTR.ISR1 bit is not