Files
PIC-Simu/src/main/java/fabrik/simulator/pic16f84/WatchdogTimer.java
2024-06-02 16:37:53 +02:00

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;
}
}