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