1
0
Эх сурвалжийг харах

Add warning in case an input behaves like an output

Baglio Tabifata 4 жил өмнө
parent
commit
a03926e8be

+ 13 - 1
src/net/hkzlab/dupal/boardio/DuPALAnalyzer.java

@@ -231,10 +231,22 @@ public class DuPALAnalyzer {
 
         writePINs(idx);
         pins_1 = readPINs();
-           
+        
+        // Check that inputs really are inputs
+        if((pins_1 & pspecs.getIO_READMask() & ~IOasOUT_Mask) != (((idx & pspecs.getIO_WRITEMask()) >> 10) & IOasOUT_Mask)) {
+            logger.warn("Detected an input that is acting as output when in MS ["+ms+"] -> " + String.format("%02X", 
+            (pins_1 & pspecs.getIO_READMask() & ~IOasOUT_Mask) ^ (((idx & pspecs.getIO_WRITEMask()) >> 10) & IOasOUT_Mask)));
+        }
+        
         writePINs(idx | (IOasOUT_Mask << 10));
         pins_2 = readPINs();
 
+        // Check that inputs really are inputs
+        if((pins_2 & pspecs.getIO_READMask() & ~IOasOUT_Mask) != (((idx & pspecs.getIO_WRITEMask()) >> 10) & IOasOUT_Mask)) {
+            logger.warn("Detected an input that is acting as output when in MS ["+ms+"] -> " + String.format("%02X", 
+            (pins_2 & pspecs.getIO_READMask() & ~IOasOUT_Mask) ^ (((idx & pspecs.getIO_WRITEMask()) >> 10) & IOasOUT_Mask)));
+        }
+
         hiz_pins = (pins_1 ^ pins_2) & IOasOUT_Mask;
 
         for(int pin_idx = 0; pin_idx < 8; pin_idx++) {