Chapter 6. Program Organization
Interrupt-Driven Blocks
6.3
Timed interrupts can be used to start a block's execution. These interrupts are generated by
the CPU based on a user-specified time interval with an initial delay (if specified) applied on
Stop-to-Run transition of the CPU.
6.3.1
Interrupt Handling
A Timed interrupt can be associated with any block except _MAIN, as long as the block has
no parameters other than an OK output. After an interrupt has been associated with a block,
that block executes each time the interrupt trigger occurs. A given block can have multiple
timed interrupt triggers associated with it. It is executed each time any one of its associated
interrupts triggers. For details on how interrupt blocks are prioritized, refer to Section 6.3.3,
Interrupt Block Scheduling.
If a parameterized block or external block is triggered by an interrupt, it inherits %P data as
its %L local data. For example, a %L00005 reference in the parameterized block or C block
actually references %P00005.
Blocks that are triggered by interrupts can make calls to other blocks. The application stack
used during interrupt-driven execution is different from the stack used during normal block-
structured program execution. In particular, the nested call limit is different from the limit
described for calls from the _MAIN block. If a call results in insufficient stack space to
complete the call, the CPU logs an Application Stack Overflow fault.
116
Interrupt-driven block execution can interrupt the execution
of non-interrupt-driven logic. Unexpected results may occur
if the interrupting logic and interrupted logic access the
same data. If necessary, Service Request #17 can be used to
temporarily mask Timed Interrupt-driven logic from
executing when shared data is being accessed.
Note:
Timer function blocks do not accumulate time if used in a block that is
executed as a result of an interrupt.
PACSystems* RXi Distributed IO Controller User Manual
Caution
GFK-2816F