From 45f9878047c123dc1d561b7ee0b7b2918068934e Mon Sep 17 00:00:00 2001 From: paulmart-n Date: Wed, 29 May 2024 12:47:14 +0200 Subject: [PATCH] Import/Timer sleep --- .../fabrik/simulator/pic16f84/Commands.java | 24 ++++--- .../pic16f84/Controller_Frontend.java | 70 +++++++++++++------ .../fabrik/simulator/pic16f84/IOPorts.java | 6 ++ .../java/fabrik/simulator/pic16f84/Table.java | 4 +- .../java/fabrik/simulator/pic16f84/Timer.java | 2 +- .../fabrik/simulator/pic16f84/frontend.fxml | 4 +- 6 files changed, 75 insertions(+), 35 deletions(-) diff --git a/src/main/java/fabrik/simulator/pic16f84/Commands.java b/src/main/java/fabrik/simulator/pic16f84/Commands.java index aaefd96..a17ccad 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Commands.java +++ b/src/main/java/fabrik/simulator/pic16f84/Commands.java @@ -9,6 +9,20 @@ public class Commands { return wRegister; } + public static void addExecutionTime(int i) { + totalExecutionTime += i; + Timer.cycles(i); + EEPROM.registerTime(false); + } + + public static long getTotalExecutionTime() { + return totalExecutionTime; + } + + public static void resetTotalExecutionTime() { + totalExecutionTime = 0; + } + public static void decode(int instruction){ final int jumpaddr = 0x7FF; final int fileregaddr = 0x7F; @@ -255,16 +269,6 @@ public class Commands { addExecutionTime(1); } - public static void addExecutionTime(int i) { - totalExecutionTime += i; - Timer.cycles(i); - EEPROM.registerTime(false); - } - - public static long getTotalExecutionTime() { - return totalExecutionTime; - } - public static void MOVWF(int file) { DataRegister.setRegister(file, wRegister); } diff --git a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java index 69af3b7..14e8ba9 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java +++ b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java @@ -25,16 +25,11 @@ import java.io.FileReader; import javafx.scene.control.Label; import javafx.scene.control.TableView; -import javafx.scene.control.TextArea; import javafx.stage.Stage; import java.util.Arrays; -import java.util.Objects; - -import static fabrik.simulator.pic16f84.Commands.totalExecutionTime; - public class Controller_Frontend { @@ -83,9 +78,13 @@ public class Controller_Frontend { @FXML private CheckBox wdtCheck; - private static volatile boolean isAutoRunActive = true; + private static volatile boolean isAutoRunActive = false; private static volatile boolean isSleeping = false; + public static boolean isSleeping (){ + return isSleeping; + } + public static void stopRunFromBackend(String message){ isAutoRunActive = false; if (isSleeping) @@ -130,7 +129,6 @@ public class Controller_Frontend { Platform.runLater(() -> { try { stepintoButton(null); - } catch (IOException e) { e.printStackTrace(); } @@ -172,18 +170,8 @@ public class Controller_Frontend { selectedRowStyle = "-fx-background-color: red; -fx-text-fill: white;"; else selectedRowStyle = "-fx-background-color: teal; -fx-text-fill: white;"; - lstContentListView.setCellFactory(column -> new ListCell() { - @Override - protected void updateItem(String item, boolean empty) { - super.updateItem(item, empty); - setText(item); - if (getIndex() == currentIndex) { - setStyle(selectedRowStyle); - } else { - setStyle(""); - } - } - }); + + markSelectedRow(currentIndex, selectedRowStyle); // Befehle ausführen if (!isSleeping) { @@ -202,17 +190,51 @@ public class Controller_Frontend { totalExecutionTimeLabel.setText("Total Execution Time: " + Commands.getTotalExecutionTime() + "µs"); } + private void markSelectedRow(int currentIndex, String selectedRowStyle){ + lstContentListView.setCellFactory(column -> new ListCell() { + @Override + protected void updateItem(String item, boolean empty) { + super.updateItem(item, empty); + setText(item); + if (getIndex() == currentIndex) { + setStyle(selectedRowStyle); + } else { + setStyle(""); + } + } + }); + } + @FXML - protected void selectFileLST(ActionEvent event){ + protected void selectFileLST(ActionEvent event) throws IOException { File selectedFile = chooseLSTFile(); + stopAutoRun(null); if(selectedFile != null){ + DataRegister.initDataRegister(); + DataRegister.resetPC(); + initialize(); + toggleLEDs(null); + IOPorts.reset(); + for (ToggleButtonGroup toggleButtonGroup : allPORTbuttons) { + try { + toggleButtonGroup.getToggles().get(0).setSelected(true); + toggleButtonGroup.getToggles().get(1).setSelected(false); + IOPorts.setPORTfromUI(toggleButtonGroup); + } catch (NullPointerException ignored) {} + } + IOPorts.refreshUI(getTRISbuttons(), getPORTbuttons()); + Commands.resetTotalExecutionTime(); + WatchdogTimer.reset(); + wdtCheck.setSelected(false); + Table.refresh(); read = ParseFile.parseDatei(selectedFile.getAbsolutePath()); prog = read [0]; ind = read[1]; System.out.println(Arrays.toString(Arrays.stream(prog).toArray())); displayLSTFileContent(selectedFile); - } + markSelectedRow(0, "-fx-background-color: red; -fx-text-fill: white;"); + } } private File chooseLSTFile() { @@ -311,9 +333,15 @@ public class Controller_Frontend { Circle[] allLEDsA = {ledA0, ledA1, ledA2, ledA3, ledA4}; Circle[] allLEDsB = {ledB0, ledB1, ledB2, ledB3, ledB4, ledB5, ledB6, ledB7}; for (int i = 0; i tableView = new TableView<>(); tableView.setPrefWidth(TABLE_WIDTH); + tableView.setPrefHeight(TABLE_HEIGHT); diff --git a/src/main/java/fabrik/simulator/pic16f84/Timer.java b/src/main/java/fabrik/simulator/pic16f84/Timer.java index 634dd52..d8e1a18 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Timer.java +++ b/src/main/java/fabrik/simulator/pic16f84/Timer.java @@ -24,7 +24,7 @@ public class Timer { } public static void incrementFromPin (int register){ - if (DataRegister.getDirectBit(OPTION, T0CS) == 1){ + if ((DataRegister.getDirectBit(OPTION, T0CS) == 1) && !Controller_Frontend.isSleeping()){ int newpin = (register >> 4) & 1; if (newpin != oldpin) { System.out.println(newpin + " " + oldpin); diff --git a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml index d96fd3f..dbaedf1 100644 --- a/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml +++ b/src/main/resources/fabrik/simulator/pic16f84/frontend.fxml @@ -28,8 +28,8 @@ - - + +