From 6d0c47c6c09f3b924040b8ebcdc994546f63cfe5 Mon Sep 17 00:00:00 2001 From: paulmart-n Date: Mon, 27 May 2024 14:11:17 +0200 Subject: [PATCH] EEPROM-time --- .../fabrik/simulator/pic16f84/Commands.java | 3 +-- .../pic16f84/Controller_Frontend.java | 2 +- .../fabrik/simulator/pic16f84/EEPROM.java | 21 +++++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/fabrik/simulator/pic16f84/Commands.java b/src/main/java/fabrik/simulator/pic16f84/Commands.java index 057798f..aaefd96 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Commands.java +++ b/src/main/java/fabrik/simulator/pic16f84/Commands.java @@ -258,14 +258,13 @@ public class Commands { 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 d9d09ea..69af3b7 100644 --- a/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java +++ b/src/main/java/fabrik/simulator/pic16f84/Controller_Frontend.java @@ -135,7 +135,7 @@ public class Controller_Frontend { e.printStackTrace(); } }); - Thread.sleep(50); //Verzögerungszeit in Millisekunden + Thread.sleep(80); //Verzögerungszeit in Millisekunden } } catch (InterruptedException e) { e.printStackTrace(); diff --git a/src/main/java/fabrik/simulator/pic16f84/EEPROM.java b/src/main/java/fabrik/simulator/pic16f84/EEPROM.java index 39c6930..18141d3 100644 --- a/src/main/java/fabrik/simulator/pic16f84/EEPROM.java +++ b/src/main/java/fabrik/simulator/pic16f84/EEPROM.java @@ -11,6 +11,8 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; +import static fabrik.simulator.pic16f84.Commands.getTotalExecutionTime; + public class EEPROM { private static final int EEDATA = 0x08; private static final int EEADR = 0x09; @@ -26,6 +28,8 @@ public class EEPROM { private static boolean writeControl = false; private static boolean [] eecon2stages = {false, false}; + private static long startTime; + public static long read (int address) { FileReader reader; try { @@ -73,10 +77,19 @@ public class EEPROM { DataRegister.setDirectBit(EECON1, WRERR, 1); return; } - eecon2stages = new boolean[]{false, false}; - DataRegister.setDirectBit(EECON1, EEIF, 1); - DataRegister.setDirectBit(EECON1, WR, 0); - writeControl = false; + registerTime(true); + } + + public static void registerTime(boolean reset) { + if (reset) + startTime = getTotalExecutionTime(); + else if ((getTotalExecutionTime() >= (startTime + 1000)) && writeControl) { + eecon2stages = new boolean[]{false, false}; + DataRegister.setDirectBit(EECON1, EEIF, 1); + DataRegister.setDirectBit(EECON1, WR, 0); + writeControl = false; + startTime = 0; + } } public static void parse(int address, int content, int opcode) {