Watchdog Label
This commit is contained in:
@ -30,6 +30,7 @@ import javafx.util.Callback;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static java.lang.Math.max;
|
||||
@ -121,20 +122,20 @@ public class Controller_Frontend {
|
||||
wakeUpFromSleep();
|
||||
else
|
||||
DataRegister.resetPC();
|
||||
// Stage stoppedStage = new Stage();
|
||||
// stoppedStage.setTitle("Programm unterbrochen!");
|
||||
// VBox vbox = new VBox();
|
||||
// vbox.setAlignment(javafx.geometry.Pos.CENTER);
|
||||
// Label grundlabel = new Label("Grund: " + message);
|
||||
// grundlabel.setStyle("-fx-font-size: 16px; -fx-font-weight: bold;");
|
||||
// Label ueberlabel = new Label("Programm unterbrochen!");
|
||||
// vbox.getChildren().add(ueberlabel);
|
||||
// vbox.getChildren().add(grundlabel);
|
||||
// VBox.setMargin(grundlabel, new javafx.geometry.Insets(10, 10, 10, 10));
|
||||
// Scene scene = new Scene(vbox, 300, 90);
|
||||
// stoppedStage.setAlwaysOnTop(true);
|
||||
// stoppedStage.setScene(scene);
|
||||
// stoppedStage.show();
|
||||
Stage stoppedStage = new Stage();
|
||||
stoppedStage.setTitle("Programm unterbrochen!");
|
||||
VBox vbox = new VBox();
|
||||
vbox.setAlignment(javafx.geometry.Pos.CENTER);
|
||||
Label grundlabel = new Label("Grund: " + message);
|
||||
grundlabel.setStyle("-fx-font-size: 16px; -fx-font-weight: bold;");
|
||||
Label ueberlabel = new Label("Programm unterbrochen!");
|
||||
vbox.getChildren().add(ueberlabel);
|
||||
vbox.getChildren().add(grundlabel);
|
||||
VBox.setMargin(grundlabel, new javafx.geometry.Insets(10, 10, 10, 10));
|
||||
Scene scene = new Scene(vbox, 300, 90);
|
||||
stoppedStage.setAlwaysOnTop(true);
|
||||
stoppedStage.setScene(scene);
|
||||
stoppedStage.show();
|
||||
}
|
||||
|
||||
public static void sleep() {
|
||||
@ -263,8 +264,8 @@ public class Controller_Frontend {
|
||||
Stage stage = (Stage) stepintoButton.getScene().getWindow();
|
||||
CreateWindow.refreshTable(stage);
|
||||
IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons());
|
||||
|
||||
|
||||
updateStack();
|
||||
updateWatchdog();
|
||||
long totalExecutionTime = Commands.getTotalExecutionTime();
|
||||
totalExecutionTimeLabel.setText("Total Execution Time: " + totalExecutionTime + "µs");
|
||||
}
|
||||
@ -317,6 +318,7 @@ public class Controller_Frontend {
|
||||
IOPorts.setPORTfromUI(toggleButtonGroup);
|
||||
} catch (NullPointerException ignored) {}
|
||||
}
|
||||
wakeUpFromSleep();
|
||||
breakpoints.clear();
|
||||
IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons());
|
||||
Commands.resetTotalExecutionTime();
|
||||
@ -326,6 +328,7 @@ public class Controller_Frontend {
|
||||
read = ParseFile.parseDatei(fileAddress);
|
||||
prog = read [0];
|
||||
ind = read[1];
|
||||
updateStack();
|
||||
System.out.println(Arrays.toString(Arrays.stream(prog).toArray()));
|
||||
displayLSTFileContent(selectedFile);
|
||||
markSelectedRow(0, "-fx-background-color: red; -fx-text-fill: white;");
|
||||
@ -577,6 +580,31 @@ public class Controller_Frontend {
|
||||
public void toggleLEDs (ActionEvent actionEvent) {
|
||||
IOPorts.setLEDs(new boolean[]{ledCheckA.isSelected(), ledCheckB.isSelected()});
|
||||
}
|
||||
|
||||
@FXML
|
||||
private Label stackIndex;
|
||||
|
||||
@FXML
|
||||
private ListView<String> stackVisual;
|
||||
|
||||
private static String format (String s) {
|
||||
return (s.length() == 1) ? "0" + s : s;
|
||||
}
|
||||
|
||||
private void updateStack (){
|
||||
stackIndex.setText("Stack-Pointer: " + ProgramStack.getStackPointer());
|
||||
ObservableList<String> observedList = FXCollections.observableArrayList();
|
||||
List<Integer> stackList = ProgramStack.getStack();
|
||||
for (Integer integer : stackList) {
|
||||
observedList.add("0x" + format(Integer.toHexString(integer).toUpperCase()));
|
||||
}
|
||||
stackVisual.setItems(observedList);
|
||||
}
|
||||
|
||||
private void updateWatchdog (){
|
||||
wdtCheck.setText("Watchdog-Timer: " + WatchdogTimer.get() + "µs");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -79,9 +79,9 @@ public class Table {
|
||||
Label fsrLabel = new Label("FSR: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getFSR())).toUpperCase()));
|
||||
Label pclathLabel = new Label("PCLATH: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getPCLATH())).toUpperCase()));
|
||||
Label intconLabel = new Label("INTCON: 0x" + format(Integer.toHexString(DataRegister.getRegister(DataRegister.getINTCON())).toUpperCase()));
|
||||
Label wRegisterLabel = new Label("W Register: 0x" + format(Integer.toHexString(Commands.get_wRegister()).toUpperCase()));
|
||||
Label wRegisterLabel = new Label("W-Register: 0x" + format(Integer.toHexString(Commands.get_wRegister()).toUpperCase()));
|
||||
Label PCLabel = new Label("PC: 0x" + format(Integer.toHexString(DataRegister.getPC()).toUpperCase()));
|
||||
Label Prescaler = new Label("Prescaler: " + format(Integer.toHexString(PreScaler.getScaler())).toUpperCase());
|
||||
Label Prescaler = new Label("Prescaler: 0x" + format(Integer.toHexString(PreScaler.getScaler())).toUpperCase());
|
||||
|
||||
|
||||
|
||||
|
||||
@ -4,6 +4,8 @@ public class WatchdogTimer {
|
||||
private static long watchdogTime;
|
||||
private static long lastReset = 0;
|
||||
private static boolean enabled = false;
|
||||
private static long rawtimer = 0;
|
||||
private static long realtimer = 0;
|
||||
|
||||
private static long getTimeFromRegister() {
|
||||
return (PreScaler.isPrescalerOnTimer()) ? 18L : PreScaler.getFactor() * 18L;
|
||||
@ -12,16 +14,22 @@ public class WatchdogTimer {
|
||||
public static void testAndTrigger() {
|
||||
watchdogTime = getTimeFromRegister() * 1000;
|
||||
if (enabled) {
|
||||
if (Commands.getTotalExecutionTime() >= (watchdogTime + lastReset - 1)) {
|
||||
if (realtimer >= (watchdogTime + lastReset - 1)) {
|
||||
DataRegister.clearBit(3, 4);
|
||||
lastReset = Commands.getTotalExecutionTime();
|
||||
Controller_Frontend.stopRunFromBackend("Watchdog Timer");
|
||||
}
|
||||
else {
|
||||
rawtimer++;
|
||||
realtimer = (long) (rawtimer * Controller_Frontend.getExecutionTimeMultiplier());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void reset (){
|
||||
lastReset = Commands.getTotalExecutionTime();
|
||||
rawtimer = 0;
|
||||
realtimer = 0;
|
||||
PreScaler.reset();
|
||||
DataRegister.setBit(3, 3);
|
||||
DataRegister.setBit(3, 4);
|
||||
@ -34,4 +42,8 @@ public class WatchdogTimer {
|
||||
public static void disable() {
|
||||
enabled = false;
|
||||
}
|
||||
|
||||
public static long get (){
|
||||
return realtimer;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user