+johnnywc Posted August 29, 2019 Share Posted August 29, 2019 Hello all, I know it's been a while (busy summer!) but Nathan T. and I are back at trying to get this multi-joystick circuit working. Right now we are using the design where the joysticks are connected in parallel and activated by hooking the select line to ground through a diode. Although this did work by removing the interference, there was a control issue where one player was able to move the other player when both where pressing in the same direction or action (holding down the button for example). It was recommended above to put diodes on all of the inputs from the joystick (which Nathan @gauauu) has done in the latest design. The good news is that the control issues seem to be fixed, but there is an issue with diagonal movements. They don't always register for some directions and for others (when you're pressing RIGHT for example), the diagonals never register. Here is a schematic of what Nathan is testing with; any ideas would be greatly appreciated! Seems like we're getting close! Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4338910 Share on other sites More sharing options...
ChildOfCv Posted August 29, 2019 Share Posted August 29, 2019 What's the voltage on the affected pins when you do a diagonal? It has to be pretty low to be registered as a low. There's a grey area between low and high voltages that registers as whatever it feels like, when the voltage is in that range. So you have to make sure your lows are low and your highs are high. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339045 Share on other sites More sharing options...
+johnnywc Posted August 29, 2019 Share Posted August 29, 2019 6 minutes ago, ChildOfCv said: What's the voltage on the affected pins when you do a diagonal? It has to be pretty low to be registered as a low. There's a grey area between low and high voltages that registers as whatever it feels like, when the voltage is in that range. So you have to make sure your lows are low and your highs are high. Thanks for the quick feedback! I'll mention this to Nathan @gauauu so he can measure the voltage; unfortunately I don't have the circuit built over here. Looking at the schematic, do you see anything obvious that may be causing the issue? It seems that the directions work fine if done individually (up, down, left, right) but only cause issues when they're diagonal. I'm not sure what the difference would be if 1 or 2 are activate at the same time. Speaking from someone who has very little experience with this; the circuit I built with the octal buffers had pull up resisters on the joystick inputs. Would those be needed too plus the diodes that were added to ensure the current flow was going to the right way (we previously had the issue where one joystick could control both players sometimes). Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339054 Share on other sites More sharing options...
gauauu Posted August 29, 2019 Author Share Posted August 29, 2019 (edited) Thanks for chiming in. I'll measure it and see when I get a chance. Edited August 29, 2019 by gauauu Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339055 Share on other sites More sharing options...
ChildOfCv Posted August 29, 2019 Share Posted August 29, 2019 23 minutes ago, johnnywc said: Thanks for the quick feedback! I'll mention this to Nathan @gauauu so he can measure the voltage; unfortunately I don't have the circuit built over here. Looking at the schematic, do you see anything obvious that may be causing the issue? It seems that the directions work fine if done individually (up, down, left, right) but only cause issues when they're diagonal. I'm not sure what the difference would be if 1 or 2 are activate at the same time. Speaking from someone who has very little experience with this; the circuit I built with the octal buffers had pull up resisters on the joystick inputs. Would those be needed too plus the diodes that were added to ensure the current flow was going to the right way (we previously had the issue where one joystick could control both players sometimes). Do diagonals work better on player 2? The one issue I see is the inverter taking the diode input. When you press a direction, you now have diode->diode->inverter or diode->diode->RIOT. Either way, that's two diodes in a row and that has the possibility of putting your 6532 inputs into the "iffy" zone. I can't remember: Have you tried open-collector variants of your logic gates in the past? For instance, the 74ls156 instead of the 74ls157? I'm wondering if it's the act of driving a pin up that's causing the static issues. Open-collector variants have states of disconnected or low, instead of high or low. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339064 Share on other sites More sharing options...
ChildOfCv Posted August 29, 2019 Share Posted August 29, 2019 Oh wow. According to the 6532 datasheet, a low must be less than 0.8V and a high must be 2V or more. So two diodes in series will definitely put an input's voltage in the weird zone. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339066 Share on other sites More sharing options...
emerson Posted August 29, 2019 Share Posted August 29, 2019 Looking at the datasheets for the 7404 and 1n4446 I see that the maximum logic low voltage of the 7404 is 0.8 volts but the forward voltage of the 1n4446 is 1.0 volts. I don't know how diodes act while in parallel but pressing two or more buttons on the same joystick would effectvely put them in parallel. The forward voltage of the 1n4446 would make it so the ground reference inside the joystick is 1.0 volts and not console ground. http://www.ti.com/lit/ds/symlink/sn54ls04-sp.pdf http://www.mouser.com/ds/2/149/1N4446-81810.pdf Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339068 Share on other sites More sharing options...
gauauu Posted August 30, 2019 Author Share Posted August 30, 2019 Thanks all. Quote Do diagonals work better on player 2? Yeah, they're more reliable on player 2 than player 1. What y'all are saying makes a lot of sense, and seems to match up with what I'm experiencing. Quote I can't remember: Have you tried open-collector variants of your logic gates in the past? For instance, the 74ls156 instead of the 74ls157? I'm wondering if it's the act of driving a pin up that's causing the static issues. Open-collector variants have states of disconnected or low, instead of high or low. I haven't -- I didn't realize that that existed (I'm a newbie to this sort of thing, thinking this would be a fun project to learn on -- which I'm starting to regret). I'll definitely take a look at that. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339158 Share on other sites More sharing options...
ChildOfCv Posted August 30, 2019 Share Posted August 30, 2019 Well I had to see what hasn't been obsoleted yet (a lot of the 74xx line is). But I came up with this as a sample: You'll notice the other benefit of OC logic is that they can both drive the same outputs without arm-wrestling over them. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339226 Share on other sites More sharing options...
ChildOfCv Posted August 30, 2019 Share Posted August 30, 2019 And just thinking about it, I realized that the TIA's input could be used to select the direction instead. That way you don't have to change how the 6532 ports are used, and the result is usable on either port. There's a pull-up resistor on the port which will almost immediately charge up the Atari's timer capacitor for port I0. To read the second input, set bit 0x80 on the TIA's blank register. This pulls all ports I0-I3 down, which swaps bus transceivers. 1 Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339229 Share on other sites More sharing options...
+johnnywc Posted August 30, 2019 Share Posted August 30, 2019 12 hours ago, ChildOfCv said: Well I had to see what hasn't been obsoleted yet (a lot of the 74xx line is). But I came up with this as a sample: You'll notice the other benefit of OC logic is that they can both drive the same outputs without arm-wrestling over them. Hello there! Thanks so much for this; I think it's very similar to the one above that uses the octal buffer? One issue is that the select line is on port 2; the ultimate goal is to multiplex two joysticks on 1 port so the other port is free for the Atarivox, but I see you have a solution for that below. My concern is that we'll still have the interference with this design since it is similar to the one above that uses the octal buffer (I did the design with 2 SN74HC244N chips). The control was great but the interference was bad. Is there less of a power draw from the 74ALS641? Also it looks like those chips are very expensive if I'm reading it right; about $4 each, almost 10 times more than the 74HC244N! ?What is the advantage between using a bus transceiver vs. an octal buffer? 12 hours ago, ChildOfCv said: And just thinking about it, I realized that the TIA's input could be used to select the direction instead. That way you don't have to change how the 6532 ports are used, and the result is usable on either port. There's a pull-up resistor on the port which will almost immediately charge up the Atari's timer capacitor for port I0. To read the second input, set bit 0x80 on the TIA's blank register. This pulls all ports I0-I3 down, which swaps bus transceivers. Wow that's a very good idea about using the TIA blank register and dumping the pots using the VBLANK register! One benefit I would think would be that you could use a joystick plugged into the adapter for games that aren't doing the switching since that bit would always be low (assuming the game is not dumping the ports) so it would always read from one joystick. Regarding the 20K resistor network; I had bought a bunch of 4.7K RNs for the octal buffer design; do you think that would be suitable for this design as well? Thanks again! I'll need to order a couple of the bus transceivers to test this; in the meantime I'm going to test my octal buffer solution using the VBLANK dump pots as the select line. I assume I should be able to do the following: During vertical blank: - read joystick 1 - dump pots (VBLANK bit 8 = 0x80, SEL = 1) During overscan: - read joystick 2 - disable dump pots (VBLANK bit 8 = 0, SEL = 0) In this way both joysticks can be read every frame and there is a sizable amount of time between VBLANK dump pots being set/reset. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339527 Share on other sites More sharing options...
ChildOfCv Posted August 30, 2019 Share Posted August 30, 2019 (edited) 1 hour ago, johnnywc said: Thanks so much for this; I think it's very similar to the one above that uses the octal buffer? One issue is that the select line is on port 2; the ultimate goal is to multiplex two joysticks on 1 port so the other port is free for the Atarivox, but I see you have a solution for that below. My concern is that we'll still have the interference with this design since it is similar to the one above that uses the octal buffer (I did the design with 2 SN74HC244N chips). The control was great but the interference was bad. Is there less of a power draw from the 74ALS641? Also it looks like those chips are very expensive if I'm reading it right; about $4 each, almost 10 times more than the 74HC244N! ?What is the advantage between using a bus transceiver vs. an octal buffer? What I'm wondering about is if the interference comes from the fact that highs on your run-of-the-mill logic gates push current. This open-collector variant does not do that. It works in much the same way as the joystick would: On a high, it acts like it's disconnected. On a low, it shorts the output to ground. Of course, that fact alone probably means it takes less power to run, since it's not trying to supply any voltage. But it may just be that absence of the pull-up that makes the difference. If there were an open-collector equivalent to the 74ls157, I'd suggest an experiment of pulling the one out of your Genesis joystick and replacing it with that. But alas, it appears that bus transceivers are the most straightforward open-collector alternatives. There is a 74als760 which only goes in one direction, but they seem to be similarly priced. Maybe a buck cheaper, but still a lot more than your standard logic. Of course, if the proof of concept works, we may be able to search for a cheaper (but probably more total chips) alternative. Oh, and about the resistor network: I just chose 20K because it should allow enough current to turn the input on. 4.7K should work too. Edited August 30, 2019 by ChildOfCv Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339563 Share on other sites More sharing options...
+johnnywc Posted August 30, 2019 Share Posted August 30, 2019 (edited) 2 hours ago, ChildOfCv said: What I'm wondering about is if the interference comes from the fact that highs on your run-of-the-mill logic gates push current. This open-collector variant does not do that. It works in much the same way as the joystick would: On a high, it acts like it's disconnected. On a low, it shorts the output to ground. Of course, that fact alone probably means it takes less power to run, since it's not trying to supply any voltage. But it may just be that absence of the pull-up that makes the difference. If there were an open-collector equivalent to the 74ls157, I'd suggest an experiment of pulling the one out of your Genesis joystick and replacing it with that. But alas, it appears that bus transceivers are the most straightforward open-collector alternatives. There is a 74als760 which only goes in one direction, but they seem to be similarly priced. Maybe a buck cheaper, but still a lot more than your standard logic. Of course, if the proof of concept works, we may be able to search for a cheaper (but probably more total chips) alternative. Oh, and about the resistor network: I just chose 20K because it should allow enough current to turn the input on. 4.7K should work too. Well, some good news: using 4.7K pull-up resistors and switching using pin 5 by enabling/setting DUMP_PORTS (0x80 on VBLANK) works great! As it turns out, I must have last used tri-state bus transceivers (74HC245N) since those were in my bread board, so I used those in my test. The interference line is pretty pronounced; worse than with using the left pin as the select line. I'm going to try with the octal buffers (74HC244N) and see what it looks like with that. I think the reason why Nathan went with the solution above is because there is no interference just using ground to select the active joystick, but that solution has it's own issues with control and not registering diagonals. Do you think using the 74ls157's instead would eliminate the interference? I should note that I'm using a 74HC04 inverter; I'm not sure how that compares to the 74ls04 inverter in your design above (what does the HC and LS stand for?). One thing that I did notice that as I was fiddling with the wires while it was connected, when I disconnected the wire going into the inverter input the static was really bad all over the screen, and would go away completely (even the line on the bottom) when I moved the end of the wire (still disconnected) away from the breadboard. Not sure what it all means but figured I'd mention it. I'll take a video and post it on YT so you can see what I mean. EDIT: Very strange, but I just rehooked up the circuit to the Atari to get some video of the interference and the VBLANK switch isn't working (it's always registering joystick 1). It was definitely working before so I'm not sure what changed. Anyway, at a minimum you've improved our design; using the VBLANK register certainly has it's benefits, including simpler code and allowing a joystick plugged into the adapter to be used with any joystick-enabled game. Edited August 30, 2019 by johnnywc Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339633 Share on other sites More sharing options...
ChildOfCv Posted August 30, 2019 Share Posted August 30, 2019 LS is an older technology that uses low-power Schottky transistors. It has advantage of speed, I think, but a disadvantage that it has low drive current. HC is high-speed CMOS. It's still TTL-compatible, but built on CMOS rather than silicon bipolar junction transistors. It's a newer evolution of the technology. Its additional advantage is its wide range of working supply voltages (2V-7V). Its threshold voltages for stable input high/low depend on the supply voltage. And of course its output voltage is based on supply voltage too. If my hypothesis is correct, you will see the same interference issues with 74HC245N, 74HC244N, 74ls157, or even 74HC04. All of these are full-drive ICs. They push current for highs and pull current for lows. In tri-state mode, they are disconnected, but the disconnect line is common to all of the gates. Open-collector versions are either pulling current, or disconnected. That's all. As for why you got interference with an input disconnected, it was probably oscillating between high and low, as it felt like it. Inputs must always be driven, one way or another (the unused inputs in my above samples are incorrect--they should be tied to ground or something). Since you have the diodes already, you can mostly simulate open-collector outputs by placing them with the Kathode facing the output of your bus transceiver. This is what Steven Moss suggested in a previous post. It's not quite as reliable as a true open-collector chip since you have that diode forward voltage issue, but it would be a useful test. If it turns out that open-collector gets things done, then you can use your 244 and wire it to an open-collector hex inverting buffer (74hc05) for communication with the Atari. Those are cheap. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339686 Share on other sites More sharing options...
gauauu Posted August 30, 2019 Author Share Posted August 30, 2019 Quote Since you have the diodes already, you can mostly simulate open-collector outputs by placing them with the Kathode facing the output of your bus transceiver. This is what Steven Moss suggested in a previous post. It's not quite as reliable as a true open-collector chip since you have that diode forward voltage issue, but it would be a useful test. Yeah, that sounds like an easy to way to test if the driven-high is really causing the interference. I'll dig around and see if I can try testing this way. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4339688 Share on other sites More sharing options...
+johnnywc Posted August 31, 2019 Share Posted August 31, 2019 So I'm having some difficulties using the VBLANK method to select a joystick. It was working for a bit yesterday but after I disconnected the circuit and reconnected it, it's no longer switching. I modified my test program so you can use the difficulty switches to enable/disable the switching, and when the switching is disabled I use one of the difficulty switches to enable or disable the VBLANK dump ports bit (0x80 of VBLANK) so it's constant. It seems even if VBLANK bit 0x80 is set high constantly, the voltage coming off of pin 5 and 9 is always 0 (which explains why it's not switching). Maybe I'm misunderstanding how we can use pin 5 (or 9) as a select line? I would assume you would set VBLANK to 0x80 and that would drive pin 5 and 9 high (on both ports), and if I set VBLANK to 0 it would drive pin 5 and 9 low, so I wrote my 'switching' code to read joystick 1 (assumes pin 5 is low), enable DUMP_PORTS (VBLANK=0x80, sets pin 5 high, or so I thought), wait a bit, read joystick 2 (assumes pin 5 is high), and then disable DUMP_PORTS (VBLANK=0, sets pin 5 low I thought). The odd thing is that this *was* working when I first hooked it up so I'm not sure if I fried something on the Atari? Right now I'm just taking measurements directly off port A of the Atari (no joysticks) and pin 5 is always low no matter what I'm setting VBLANK to. I confirmed that the other pins (U,D,L,R and the button) are all high and go low when I enable them with a joystick (directly connected to the Atari) so I'm pretty sure I'm measuring it right (I'm measuring voltage with a multimeter). For what it's worth, I did hook up some paddles with Video Olympics and it works fine so whatever is charging the capacitors in the paddles still works fine. Any help is appreciated! Thanks, John Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4340339 Share on other sites More sharing options...
ChildOfCv Posted August 31, 2019 Share Posted August 31, 2019 No, the dumping transistors only pull to ground. You need a pull-up resistor on your board to bring it high. Remember that this is the circuit that the paddles are usually connected to. The paddles have a potentiometer connected to +5 with the wiper going to the I0-I3 connection. Typically, the Atari will pull the value to 0, then time how long it takes for it to rise to the trigger threshold as it charges the capacitor. In our case, we're using a small resistor so that the time will be almost instant, because instead of using it to read an analog value, we're using it to output a value. Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4340371 Share on other sites More sharing options...
+johnnywc Posted September 1, 2019 Share Posted September 1, 2019 17 hours ago, ChildOfCv said: No, the dumping transistors only pull to ground. You need a pull-up resistor on your board to bring it high. Remember that this is the circuit that the paddles are usually connected to. The paddles have a potentiometer connected to +5 with the wiper going to the I0-I3 connection. Typically, the Atari will pull the value to 0, then time how long it takes for it to rise to the trigger threshold as it charges the capacitor. In our case, we're using a small resistor so that the time will be almost instant, because instead of using it to read an analog value, we're using it to output a value. Thanks for the explanation! I'm able to get the signal high by connecting pin 5 to a 10K pull up resistor and the other end of the pull up resistor to +5V. Unfortunately no matter what I set VBLANK to, the value at the end of the resistor connected to pin 5 is always 5V. For a test I connected the other side of the resistor to ground and as expected the value on the vcc side was 5V and the other side was 0V. Setting bit 7 of VBLANK doesn't seem to be having any effect on what pin 5 (or 9) are doing. Of course it's quite possible that I'm just doing something incorrectly or have it hooked up wrong. Right now I'm just working with the input from the Atari, (vcc/ground/pin 5) and the 10K resistor and measuring voltage at the pins. Once I can prove that I can switch the logic of pin 5 using VBLANK, I'll add in the inverter and then the bus transceivers one at a time, measuring along the way to make sure I don't mess anything up. Interestingly it seems that I damaged my inverter chip (74HC04) at some point (probably screwing around with disconnecting/connecting wires to view the static) as I did an independent voltage test on the input/output pins and no matter what, all of them were high (5V). I switched out another chip and it worked as expected (1->0, 0->1), so that explains why I did see it working for a bit when I first connected the circuit and then why it seemed to just stop working. I'm not sure where to go from here, this may be over my head but I'm very interested in learning if you have any other suggestions or helpful tips. I'm releasing Wizard of Wor Arcade and Galagon at the PRGE on 10/19 and both games are supposed to support this interface. Although it's very unlikely that the adapter will be ready to sell by then, I want to at least nail down the API. Being able to use pin 5/9 vs. one of the direction pins (we were initially using LEFT pin 4) would be ideal so hopefully we can get a prototype working with the switching at least. Thanks so much! John Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4340757 Share on other sites More sharing options...
ChildOfCv Posted September 1, 2019 Share Posted September 1, 2019 (edited) 5 hours ago, johnnywc said: Unfortunately no matter what I set VBLANK to, the value at the end of the resistor connected to pin 5 is always 5V. Hmmm... is it possible that your program clears VBLANK elsewhere? I assume that paddle games still work. So the TIA must be able to ground the pins. The technical manual doesn't seem to mention the amp pull capabilities of the dump transistors, but it has to be enough to dump the capacitor while the input potentiometer is still pulling it up. On the other hand, the potentiometer ranges from 0 to 1 meg on the paddles. So you could try a larger resistor to see if the 10K is just too strong for it. Maybe 100K. Edited September 1, 2019 by ChildOfCv Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4340913 Share on other sites More sharing options...
+johnnywc Posted September 1, 2019 Share Posted September 1, 2019 2 hours ago, ChildOfCv said: Hmmm... is it possible that your program clears VBLANK elsewhere? I assume that paddle games still work. So the TIA must be able to ground the pins. The technical manual doesn't seem to mention the amp pull capabilities of the dump transistors, but it has to be enough to dump the capacitor while the input potentiometer is still pulling it up. I'm pretty sure that I'm not clearing VBLANK anywhere else (I stepped through the debugger). 2 hours ago, ChildOfCv said: On the other hand, the potentiometer ranges from 0 to 1 meg on the paddles. So you could try a larger resistor to see if the 10K is just too strong for it. Maybe 100K. I can try that. I know for a fact it worked before so something is amiss. However, when I first tested it I had it going through my 4.7K resistor network that I am using for the joystick inputs and it did work. I abandoned that when it stopped working which I now know is because I fried the inverter lol, so I'll try that again and see how it goes with the 4.7K and I'll also try a 100K. Silly question, but wouldn't a 100K be stronger than a 10K or am I misunderstanding how resistors are measured? I know they're in Ohms and Voltage = Current * Resistance (V = IR); probably the only thing I remember from EE 201/209 lab back at the University of Connecticut in 1988 I'll also try another Atari in case I damaged my test one, but the paddles do work great on the system so I don't think I damaged it at all. Any other suggestions are welcome and thanks again! John Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4341024 Share on other sites More sharing options...
ChildOfCv Posted September 1, 2019 Share Posted September 1, 2019 No, with resistors, the value is how much it *resists* the flow of current. So higher values are easier to ground out. A wire is (ideally) 0 ohms, and an insulator is (ideally) infinite ohms. Anyway, make sure your circuit looks like this: Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4341065 Share on other sites More sharing options...
+johnnywc Posted September 2, 2019 Share Posted September 2, 2019 (edited) 15 hours ago, ChildOfCv said: No, with resistors, the value is how much it *resists* the flow of current. So higher values are easier to ground out. A wire is (ideally) 0 ohms, and an insulator is (ideally) infinite ohms. Anyway, make sure your circuit looks like this: Okay, I'm a little embarrassed but I got it working with the 10K resistor; I was not hooking up the pull up resistor correctly and wasn't taking the measurement after the pull up resistor. ? Probably explains why I got a C+ in EE209 I'm going to re-build the rest of the circuit using the octal buffers (244) or bus transceivers (245) and confirm that the joystick switching still works (like it did before) and then move on to trying to reduce the interference using your suggestions with the diodes to simulate open collector variant. At this point I may just take the plunge and invest the 10 bucks in 2 of the 74ALS641. Before I place an order, do you see any benefit in getting 74LS04 inverters vs the 74HC04 inverters that I'm using now? I'm not sure what the difference is but since the shipping from Mouser is per order and is usually as much as the components I'd like to try to order everything I need at the same time. One change I'm going to suggest is to use pin 9 as the select line as it looks like the harmony cart checks to see if pin 5 is high (INPT0) on startup to determine if paddles are connected (as many games do). If we use pin 9, then INPT1 will be logical high on startup and we can ground INPT0 so it's low and we can use this as autodetection for the multi-tap (INPT0 = 0 , INPT1 = 1 on startup) which differs from paddles/Genesis controller which has both INPT0 and INPT1 high on startup or a regular joystick which has both INPT0 and INPT1 low on startup. Using pin 9 will make the QuadTari/multi-tap "Harmony friendly" This it the API I need to have nailed down in the next week or so (how to detect a multi-tap is connected and how the switching is going to take place) since that is in code and hopefully we can resolve the interference issues without changing the API. I'll post my results here as I make progress. Thanks again for the help and the education on pull up resistors! EDIT: Checking Mouser.com, there are a couple options for the 74ALS641: https://www.mouser.com/ProductDetail/Texas-Instruments/SN74ALS641AN?qs=sGAEpiMZZMs9F6aVvY09bjMKmt1NCXfKtUc9D2Iyav8%3D vs. https://www.mouser.com/ProductDetail/Texas-Instruments/SN74ALS641A-1N?qs=sGAEpiMZZMs9F6aVvY09bknyBMcqVx4yQ%2F%2B7v5EBHck%3D Looks like the difference is in Low Level Output Current (24 mA vs 48mA) and min/max supply voltage (4.5V - 5.5V vs. 4.75V - 5.25V). Also the second one has a lead time of 8 weeks and the first one is in stock. Would the first one be suitable with the 24mA/4.5V - 5.5V? Edited September 2, 2019 by johnnywc Added links to parts Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4341446 Share on other sites More sharing options...
ChildOfCv Posted September 2, 2019 Share Posted September 2, 2019 (edited) LS and HC technologies seem mostly compatible, so I'd go with what's cheapest. HC is newer technology and more likely to exist in good quantities and price. 5 hours ago, johnnywc said: Looks like the difference is in Low Level Output Current (24 mA vs 48mA) and min/max supply voltage (4.5V - 5.5V vs. 4.75V - 5.25V). Also the second one has a lead time of 8 weeks and the first one is in stock. Would the first one be suitable with the 24mA/4.5V - 5.5V? Yeah either one ought to be fine. I'd go with the one that's in stock. I'd also consider using an inverting multiplexer with normal outputs, and going through 74xx05's for final output. It would be more chips, but less total cost. Edited September 2, 2019 by ChildOfCv Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4341606 Share on other sites More sharing options...
+johnnywc Posted September 2, 2019 Share Posted September 2, 2019 45 minutes ago, ChildOfCv said: LS and HC technologies seem mostly compatible, so I'd go with what's cheapest. HC is newer technology and more likely to exist in good quantities and price. Great thanks. The LS are slightly more expensive but I found this blurb on the 'net re: RF interference. I'm not sure how accurate it is but for a couple bucks I'll pick up a few LS04's and see if it makes a difference also. " For the gates over-all: HC is very ESD sensitive - in circuit and out of circuit, it will 'latch up' in circuit and fry. LS is a power hog but it's hardy. HC designs usually have 'richer' frequency content - so if RF emissions are a problem go with LS if you can. " 45 minutes ago, ChildOfCv said: Yeah either one ought to be fine. I'd go with the one that's in stock. I'd also consider using an inverting multiplexer with normal outputs, and going through 74xx05's for final output. It would be more chips, but less total cost. Okay, I ordered a couple that were in stock and they'll be here by Wednesday. RE: the inverting multiplexer; can you recommend a specific chip? What does a 74xx05 do? As for my progress, I did re-wire up the xx245 bus transceivers (no diodes yet) using an 74HC04 and using pin 9 as a select through a 10K pull up resistor and the control works great, but as expected there is interference. I did notice that the interference goes away almost completely when I disconnect vcc to the inverter (not sure if that info is helpful). Thanks again for all the help! John Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4341626 Share on other sites More sharing options...
+johnnywc Posted September 3, 2019 Share Posted September 3, 2019 Okay, I had a few minutes today and hooked up diodes (1N148) between the bus transceiver outputs and the Atari, with the cathode nearest to the transceivers. Since we're connecting the outputs of the 2 transceivers before connecting to the Atari, I assume one set of diodes is sufficient *after* the outputs are connected? The good news is that the interference is reduced a lot, but there is still a good amount on the screen. Whats odd is that the interference is a white static line on the top of the screen and short lines on the bottom of the screen which is different than what we saw before using one of the direction pins (we used LEFT) as the select line where the static mostly appeared on the bottom and wasn't as pronounced. I'm not sure if this was pointed out explicitly, but the interference is only visible with non-modded Ataris using an RF connector (there is no interference if you are using AV input with a modded Atari). Also you mention above about the Genesis controller; all my tests are using stock Atari joysticks. I'm hoping that maybe using a 74LS04 inverter will reduce the RF interference (if that is indeed what it is) based on that blurb above that I found on the net that suggested the LS vs the HC would be better for RF. Another small point, and this may be a non-issue but figured I'd post my observations: When I do a straight-thru test (that is, just hook up the joystick directly through the Atari), as expected an open connector measures at 5V and when closed it goes down to 0V. This is also true if I pass the joystick input through a bus transceiver (x245). However, when I add in the inverter with the pull up resistor and have it switching between 2 bus transceivers, when I measure the output at the Atari for a direction it measures about 5V for open (4.98) but only drops to 3.68V when a switch on 1 joystick is closed. I assume this is because the value is rapidly changing from 0V for the closed switch on Joystick 1 and 5V for the matching open switch on Joystick 2? EDIT: I just did a test with the button, measuring the voltage at the Atari pin 6. If both buttons are open (not pressed), it's about 5V (4.98). If both buttons are pressed, it's 0.56V (almost 0). However, if the button on the joystick that is triggered on pin 9 (select line) when it's low is pressed, the voltage is read at 1.67 volts. On the joystick button that is triggered on pin 9 being high, the voltage is 3.86V (but still registers as a low). Again, I assume these voltage measurements would be better viewed on an oscilloscope since the measurement at that pin is being changed 120 times a second (twice per frame) as we set and reset DUMP_PORTS on VBLANK. Regarding the interference, it does get much worse when a switch is active (ie. you press the button or move in a direction) and more prevalent when you combine them. Also, the interference is greater when switches on the joystick that is triggered on low pin 9 (DUMP_PORTS = 0) are active vs. the other joystick. Based on these findings, should we expect different results with the open collector bus transceivers? I'm going to try with the octal buffers (x244) and see how the interference compares. Any other suggestions are welcome! I'll also pick up some 74HC05's as you suggested above. Thanks again for all the help! John Quote Link to comment https://forums.atariage.com/topic/288656-joystick-multiplexer-help/page/4/#findComment-4342386 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.