2

I'm using an Arduino Uno to emulate an old Atari disk drive as described here: http://whizzosoftware.com/sio2arduino/

As both the Atari and the Arduino use 5V TTL serial communication, the hardware setup is pretty simple, RX and TX are crossed over, GND is connected an an additional line is used for status information.

All works fine when the Arduino is the only device connected to the Atari's serial port (called SIO). Since the SIO bus is a daisy-chain bus, I should be able to hook up serval devices after each other. However, once I connect an original floppy drive together with the Arduino, both the original floppy drive as well as the one emulated by the Arduino stop working.

What made me wonder is that the original drive couldn't be accessed even if the Arduino was turned off but the wiring left in place. Only after I removed the RX and TX pins from the connection, the original drive could be accessed.

I checked with a scope and realized that data transmission was still reaching both devices, however idle voltage was just around 2V instead of 5V. I then checked the resistance on the Arduino between the digital input pins as well as RX/TX in relation to GND and got (varying, depending on the scale I set my multimeter) values that probably have the effect of a voltage divider and thus reduced the voltage on the whole bus by about half.

I was thinking to add a resistor on the RX/TX lines coming from the SIO bus in order to maintain the voltage on the bus, but that would effectively mean that also less current reaches the Arduino RX/TX pins and might therefore render it useless if the voltage drops below the point where the Arduino can distinguish between logical high and low.

Or is there a way to circumvent these internal resitors between the digital inputs and GND? Does this have anything to do with the pull-up/pull-down resistors which I could probably only influence when the Arduino is on?

Thank you in advance for any pointers (other than adding another switch to physically remove RX/TX from the bus when the device is off ;) )!

3
  • 1
    Let me know if you need a more formal answer. But, in short, you can not connect unpowered logic circuits inputs to powered logic circuits.
    – st2000
    Jun 24, 2018 at 13:21
  • You could look at the atari 810 schematics and see how they did it: jsobola.atari8.info/dereatari/literatdere/810fsm.pdf
    – Craig
    Jun 25, 2018 at 18:34
  • Thans for the link, Craig, I'll have a look at it.
    – fredlcore
    Jun 26, 2018 at 5:54

2 Answers 2

4

To protect the internals of integrated circuits many contain diodes at most input and output pins to VCC. In normal operation where the voltage at these pins are not expected to become greater than VCC, these diodes are not in forward bias. However, should the unexpected happen and the voltage at these pins does become higher than VCC the diodes are in forward bias. That is to say, the diodes try to keep the voltage at the pin no higher than VCC.

When you removed the power from the Arduino you essentially lowered VCC to zero. This will likely forward biased the diodes inside the Arduino and drive the voltage at the pin toward zero.

There is a good discussion of this in this Electrical Engineering StackExchange question & answer.

1
  • Thanks, the diodes would probably also explain the varying Ohm readings I got depending on the scale of my multi-meter.
    – fredlcore
    Jun 26, 2018 at 5:44
1

Although st2000 already answered my question, I still wanted to add how I solved the problem in case someone else faces the same situation:

What in the end worked for me was to add a 560 Ohm resistor each at the entry points of the RX/TX lines. This was low enough that the Arduino was still be able to distinguish logical high and low, and high enough that the SIO bus is still working when the Arduino is powered off. 470 Ohms was already too low to shield the SIO bus, 680 Ohms was too high for the Arduino to function properly when in use. I don't know if there is a way to calculate these values properly, but at least they work for me.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.