Parcourir la source

Add warning in case an input behaves like an output

Baglio Tabifata il y a 4 ans
Parent
commit
a03926e8be
1 fichiers modifiés avec 13 ajouts et 1 suppressions
  1. 13 1
      src/net/hkzlab/dupal/boardio/DuPALAnalyzer.java

+ 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++) {