From e4367eb1b0054e0dcdb38bdc5d6554d30a7c7b50 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 20 Jul 2017 17:31:22 +0200 Subject: [PATCH] fixed a bug in the power supply --- .../neemann/digital/core/io/PowerSupply.java | 25 ++++++++++++------- .../java/de/neemann/digital/gui/Main.java | 2 ++ src/main/resources/lang/lang_de.xml | 2 +- src/main/resources/lang/lang_en.xml | 2 +- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/neemann/digital/core/io/PowerSupply.java b/src/main/java/de/neemann/digital/core/io/PowerSupply.java index f9e41cf27..f12a17f64 100644 --- a/src/main/java/de/neemann/digital/core/io/PowerSupply.java +++ b/src/main/java/de/neemann/digital/core/io/PowerSupply.java @@ -14,7 +14,7 @@ import static de.neemann.digital.core.element.PinInfo.input; * Enforces a power supply * Created by hneemann on 15.07.17. */ -public class PowerSupply implements Element { +public class PowerSupply extends Node implements Element { /** * Enforces a power supply @@ -24,6 +24,9 @@ public class PowerSupply implements Element { .addAttribute(Keys.ROTATE) .addAttribute(Keys.LABEL); + private ObservableValue vcc; + private ObservableValue gnd; + /** * Creates a new instance * @@ -34,13 +37,8 @@ public class PowerSupply implements Element { @Override public void setInputs(ObservableValues inputs) throws NodeException { - check(inputs.get(0).checkBits(1, null, 0), 1); - check(inputs.get(1).checkBits(1, null, 1), 0); - } - - private void check(ObservableValue val, int expected) throws NodeException { - if (!val.isConstant() || val.getValue() != expected) - throw new NodeException(Lang.get("err_errorInPowerSupply"), val); + vcc = inputs.get(0).checkBits(1, null, 0).addObserverToValue(this); + gnd = inputs.get(1).checkBits(1, null, 1).addObserverToValue(this); } @Override @@ -49,6 +47,15 @@ public class PowerSupply implements Element { } @Override - public void registerNodes(Model model) { + public void readInputs() throws NodeException { + if (vcc.getValue() != 1 || vcc.isHighZ()) + throw new NodeException(Lang.get("err_errorInPowerSupply", "VCC"), vcc); + if (gnd.getValue() != 0 || gnd.isHighZ()) + throw new NodeException(Lang.get("err_errorInPowerSupply", "GND"), gnd); } + + @Override + public void writeOutputs() throws NodeException { + } + } diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index db3ad858d..f0b6d667c 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -9,6 +9,7 @@ import de.neemann.digital.core.element.ElementAttributes; import de.neemann.digital.core.element.Key; import de.neemann.digital.core.element.Keys; import de.neemann.digital.core.io.In; +import de.neemann.digital.core.io.InValue; import de.neemann.digital.core.io.Out; import de.neemann.digital.core.io.PowerSupply; import de.neemann.digital.core.memory.ROM; @@ -732,6 +733,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS .setShapeFactory(shapeFactory) .setAttribute(Keys.LABEL, "VCC") .setAttribute(Keys.PINNUMBER, maxNum) + .setAttribute(Keys.INPUT_DEFAULT, new InValue(1)) .setPos(new Vector(0, 0))); list.add(new VisualElement(In.DESCRIPTION.getName()) .setShapeFactory(shapeFactory) diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index e9db528c8..06eeb6280 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -555,7 +555,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Signal {0} wurde mehrfach verwendet! Fehler beim Einlesen der Testdaten. Die Modelkomponente {0} kann nicht analysiert werden. - Fehler in der Stromversorgung. + Fehler in der Stromversorgung an {0}. Adress-Bits Anzahl der Adress-Bits die verwendet werden. diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index f86c7b0d7..4b57aa35a 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -543,7 +543,7 @@ The names of the variables may not be unique. Signal {0} is used twice! Error parsing the test data. The model component {0} can not be analysed. - Error in wiring of power supply. + Error in wiring of power supply at {0}. Address Bits Number of address bits used.