Copyright © Siemens AG 2016. All rights reserved
57
ERTEC 200P-2 Manual
Technical data subject to change
Version 1.0
2.3.2.9 Interrupt masking / priorisation
The ICU provides the capability to individually mask each interrupt. The setting is made
using the appropriate bit in the MASKREG register. The masking does not have any
effect on the Interrupt Request register. Masked interrupts are neither forwarded to the
CPU nor do they prevent the forwarding of non-masked interrupts with lower priority.
Each interrupt can be enabled and disabled by using the appropriate bit in the MASKREG
or INTB_MASKREG register. The interrupts are masked at the outputs of the Interrupt-
Request register (IRREG or INTB_IRREG). This means that a pending interrupt is also
entered in the Interrupt Request register when it is masked. After reset, all mask bits are
set und thus all interrupts disabled.
A single command can be used to disable all interrupts in the INTA as well as in the INTB
subblock as if all mask bits were set. However, to revoke the global masking of all inter-
rupts, only those interrupts not individually masked are activated.
Note that the reset value of the global mask bit differs in each subblock: The reset value
in INTA block is ‘1’ (all ints are masked by default), the reset value of the INTB block is
‘0’.
Not only each INTA but also each INTB receives its own freely selectable priority. The
software can set the priority using the INTA_PRIOREG0 –
INTA_PRIOREG<NUM_OF_INT-1>
or
INTB_PRIOREG0
–
INTB_PRIOREG<NUM_OF_FINT-1> register. The value range for the priorities is:
"0" to NUM_OF_INT-1 for INTAs and
"0" to NUM_OF_INT-1 for INTBs.
Where the "0" value means the highest priority. After reset, all registers have the lowest
priority.
The ICU treats all interrupts in their priority order. If several interrupts are present, the
ICU selects the interrupt with the highest priority. If in this case two priorities are identical,
the interrupt with the smaller number will be processed first.
The same priorities will be caught by the ICU as follows: when interrupts have the same
priorities, the interrupt number is used as second priority level, where the following rule
also applies here: the lower interrupt number has a higher priority than the higher inter-
rupt number. However, it remains true that when an interrupt is already being processed
by the CPU, it will not be interrupted by another interrupt of the same priority. This inter-
rupt will be processed only when the first interrupt has been processed and that with the
same priority is still present as next interrupt.
The ICU suppresses all interrupts whose priorities are less than or equal to the value that
the software has parameterized in the LOCKREG register. This function can be enabled
or disabled using the LOCKREG_ENABLE register bit. All interrupts locked using the
LOCKREG register will still be entered and stored in the Interrupt Request register, but no
longer participate in the priority resolution.
If concurrently to the write access to LOCKREG, an interrupt with an affected priority
occurs, the interrupt signal is initially set to the CPU, but will be cleared again after two
clocks at the latest. If the CPU, despite removed interrupt signal, performs an
acknowledge, the default vector will be returned as interrupt vector.
This also means: in the same clock in which the information is written from the AHB bus
into the LOCKREG register. If the interrupt request has already been pending longer
without it being acknowledged and the software now writes this LOCKREG with the same