38 lines
1.0 KiB
Java
38 lines
1.0 KiB
Java
package fabrik.simulator.pic16f84;
|
|
|
|
public class WatchdogTimer {
|
|
private static long watchdogTime;
|
|
private static long lastReset = 0;
|
|
private static boolean enabled = false;
|
|
|
|
private static long getTimeFromRegister() {
|
|
return (PreScaler.isPrescalerOnTimer()) ? 18L : PreScaler.getFactor() * 18L;
|
|
}
|
|
|
|
public static void testAndTrigger() {
|
|
watchdogTime = getTimeFromRegister() * 1000;
|
|
if (enabled) {
|
|
if (Commands.getTotalExecutionTime() >= (watchdogTime + lastReset - 1)) {
|
|
DataRegister.clearBit(3, 4);
|
|
lastReset = Commands.getTotalExecutionTime();
|
|
Controller_Frontend.stopRunFromBackend("Watchdog Timer", true);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void reset (){
|
|
lastReset = Commands.getTotalExecutionTime();
|
|
PreScaler.reset();
|
|
DataRegister.setBit(3, 3);
|
|
DataRegister.setBit(3, 4);
|
|
}
|
|
|
|
public static void enable() {
|
|
enabled = true;
|
|
}
|
|
|
|
public static void disable() {
|
|
enabled = false;
|
|
}
|
|
}
|