EDIT: Troubleshooting guide is up: Switch-less USB selector for PS3+360 "Imp": Design Stage
EDIT: Welcome sheet included with each Imp: www.godlikecontrols.com/download/impwelcome.pdf
I like cute names for things, so I'm thinking we'll go for 'Imp' on this one :)
Most PS3+Xbox360 sticks now use a DPDT toggle switch to select which system is to be used. This setup works well, but requires a DPDT switch be purchased, and the case modified so the switch can be installed. I had mentioned previously that it would be possible to use an existing button to select with a small amount of electronics, but figured it'd be too much of a PITA. I said if I can get enough preorders to cover my costs, I would do it, and zombie cpt came back a couple of hours later and said he had it covered. So, SRK has spoken and this baby project is now underway.
I know that a 4066N analog switch chip can be used to select between two pairs of lines for USB just fine, since the UPCB has been doing that for years now. What I needed was a way to have two outputs from a gate, being high-low if an input was high when powered on, and being low-how if the input was low when powered on, and sticking at those output levels no matter what happens. I couldn't figure out how to do it with regular logic gates, so we're back to my old stand-by of a small microcontroller. Checking the prices on Digikey, the cheapest and smallest chip I can find is the 12F510; $1.25 each ordered singly, and $0.78 in quantities of 25 or more. Internal oscillator, pull up's on the inputs if needed, and 512 instruction space; all good stuff and should work awesome.
Here's a sketch of the current idea each square is 0.1" on a side:
The left has a spot for a USB jack to be mounted, so the outgoing USB cable won't have to be cut. The pads will be labelled and you can still solder the USB wires to them (for using the cable from a xbox360 controller, which really are nice cables, or the cable that comes with the madcatz TE or SE stick) but for those who dont want to cut and solder a USB cable, a jack would be nice.
So, here are the areas I'd really like feedback on:
-Mounting holes: It would be pretty silly to not have holes for screwing into the case for a solid mount. On wooden cases like Norris (drool) or SFAC sticks, there's not so much of a need to care where the holes are, because you don't have to line them up with anything. What I'd really like is suggestions on where it should be mounted inside a MadCatz TE or SE stick, so I can get the holes to match up with the screws already present. Give me an idea where it should go, and I'll make sure the holes match.
-Other functionality: The PIC is eight pins. Two are for power, leaving 6 available. I need two to control the 4066 switches, leaving 4. One input to control which system to use; down to 3. A common problem that keeps coming up is people wanting Start+Select=Guide. That's not a problem for the Cthulhu since that's built in, but it gets tricky when dealing with a 360 pad. My thought is this: If you wanted to, you could connect the Opt A and Opt B points to start and select. The Guide point would be connected to the Cthulhu 'Home' point and the Xbox360 Guide button. If the chip thinks you don't have a dedicated guide/home button, then it will press Guide/Home for you if it sees both select and start pressed. It would be optional; if you have a dedicated home button, the chip would know this and never trip Guide/Home. It just gives those without a dedicated Guide/Home button an alternative. Thoughts?
(I know explanations are confusing at times. So, in short:
If you have a dedicated button for Guide/Home, then forget I said anything.
If you don't have a dedicated button for Guide/Home, then this would make Start+Select = Guide/Home if you want.)
-Color: Colored PCB's are cool. How does black with white silkscreening sound? White with black? Green red blue, lotsa options.
-Open source: I'll release the PIC code and full Eagle files so anyone can make as many of these as they like. The design will be too stupid simple not to.
Alright folks, tell me how I can make this awesome.