I am working on an Arduino based GPIB controller and have come across a rather strange issue when two Arduinos are placed back-to-back on the GPIB bus along with another GPIB device. Let me explain.
I have been working on a GPIB controller and have pretty much completed controller mode with using my Solatron 7150 DMM as a test instrument and so far everything seemed to work as expected. I then moved on to implementing a device mode. This required that two Arduinos be connected to the GPIB bus simultaneously – one acting as a controller and the second as the device. Since the controller has a GPIB cable to connect to an instrument, I left this attached to my Solatron, but also I the controller to a prototype board. This allowed me to also connect the second Arduino as well as a logic analyser so that I could develop device mode using the second Arduino and see what was happening with the various GPIB wires. This did not prove to be quite as straightforward as I had hoped.
Firstly, I quickly discovered that the power draw exceeded USB limits which was resolved by using an externally powered USB hub. I then also found that the breadboard connections can be quite temperamental sometimes. Having noted that and working with it, I then discovered a further problem.
Now, I am aware that the Arduino has only sufficient current handling to drive two devices at most so maybe that is part of the issue. I’m also not sure whether the Logic Analyser adds something to the load but I quickly found some odd reliability issues. Sometimes I could read the meter, sometimes I could not. Sometimes I could send the meter commands, sometimes I could not. Sometimes the readings returned from the meter were corrupted. None of these issue occurred when just one Arduino was connected to the instrument.
Initially some work had to be done to ensure that the Arduino pins were in the correct state. For example that the "device" was not asserting signals when it should be listening. However, having got past these issues, the problems persisted. On the logic analyser I observed that when the second Arduino is turned off, all GPIB signals go high and occasionally the odd signal on a pin fluctuates rapidly. Disconnecting the second Arduino completely from the breadboard even without resetting the controller and instrument, restores normal operation between those two devices. On the other hand, just turning off the instrument allows successful communication between the two Arduinos. It seems like three is a crowd, but I can’t quite figure why that should be, and why when the second Arduino powered off, it still affects signal states between the remaining Arduino and instrument? As mentioned, disconnect that second Arduino from the circuit and everything works normally again.
Any thoughts?