7480 Group and 7481 Group User's Manual
2-43
2.8 Countermeasures against Noise
APPLICATIONS
2.8.7 Providing of Watchdog Timer Function by
Software
If a microcomputer runs away because of noise or
others, it can be detected by a software watchdog
timer and the microcomputer can be reset to normal
operation. This is equal to or more effective than
program runaway detection by a hardware watchdog
timer. The following shows an example of a watchdog
timer provided by software.
In the following example, to reset a microcomputer
to normal operation, the main routine detects errors
of the interrupt service routine and the interrupt service
routine detects errors of the main routine.
This example assumes that interrupt processing is
repeated multiple times in a single main routine
processing.
<Main Routine>
Assigns a single byte of RAM to a software
watchdog timer (SWDT) and writes the initial value
N in the SWDT once at each execution of the
main routine. The initial value N should satisfy
the following condition:
Figure 2.8.11 Watchdog Timer by Software
N+1
≥ (Counts of interrupt processing executed in each main routine)
As the main routine execution cycle may change because of an interrupt processing or others, the initial
value N should have a margin.
Watches the operation of the interrupt service routine by comparing the SWDT contents with counts of
interrupt processing count after the initial value N has been set.
Detects that the interrupt service routine has failed and determines to branch to the program initialization
routine for recovery processing in the following cases:
If the SWDT contents do not change after interrupt processing
<Interrupt Service Routine>
Decrements the SWDT contents by 1 at each interrupt processing.
Determines that the main routine operates normally when the SWDT contents are reset to the initial value
N at almost fixed cycles (at the fixed interrupt processing count).
Detects that the main routine has failed and determines to branch to the program initialization routine
for recovery when the contents of the SWDT reach 0 or less by continuative decrement without initializing
to the initial value N.
Main routine
(SWDT)
← N
CLI
Main processing
(SWDT)
Interrupt service
routine errors
=N
Interrupt service routine
(SWDT)
← (SWDT)—1
Interrupt processing
(SWDT)
Main routine
errors
>0
≤0
RTI
Return
=N?
≤0?
N
≠