Better Wires Wired and Working

I'm rather pleased to be able to report that the new propeller board has been wired up and our problems with questionable connector cables can be relegated to the bad memories pile. The new cabling setup was largely prompted by the fact that, sitting a prototype board and laptop on the glass of the pinball machine you are working on is not only ergonomically horrifying, but, well, its just silly. Read on for a bit of a walk through of the current hardware and cable setup and philosophy.

The Parallax Propeller chip is a very interesting micro controller. It is an 8 core 32 bit processor that has some severe limitations with memory balanced with 32 independently controllable general I/O pins, a simple small instruction set and some very powerful built in bit streaming capability (mainly for video).

I picked the processor as a prototyping tool for several reasons.

  • It is cheap. The prototype board direct from Parallax is a mere $20.

  • It has plenty of GPIO pins and my initial calculations showed we needed a lot.

  • We can use a single microprocessor to replace the several distributed processors in the original Sega system. Each of the dedicated processors (for sound, video, game control) really don't do a very complex job. I should be able to at least proof of concept each of these systems using a single core in the propeller chip.

  • The propeller community is very active and helpful. There are lots of code samples and useful objects readily available.

Here is the current setup with the Parallax propeller board paired up with my solder-less breadboard, routing many of the I/O pins from the propeller to our new connector sockets.

board_setup_thumb.jpg

I realized that I was going to need several feet of separation from the pinball CPU board. Looking around in my pile of electronics, I spotted a container of RJ-45 cable sockets. Perfect. If I can manage to wire the sockets to the prototype board and the CPU board, we can just use nice long CAT5 cable to drive the system. Here you can see three RJ-45 sockets lined up on the breadboard ready to be used as I/O.

board_rj45_thumb.jpg

And here is the CPU board with two of the sockets in place. These are a little delicate, but by routing the cables up to the conveniently placed cable holder in the back box, there is no chance of accidentally pulling the cables loose.

cpu_board_rj45_thumb.jpg

For anyone wondering just how long the cables can be without losing signal, the answer is pretty darned long. For the 24 gauge CAT5e, at 10 foot, we get a voltage drop of .125 at 300mA. This means our 3.3 volt signal will easily land withing the input voltage minimum for the components we are sending signals to AND any signals coming from the CPU board will easily still hit the Vin minimums for the propeller itself.

The current wire-up has 8 I/O pins dedicated to the 8 Data bits D0-D8 from the CPU board. Another 4 I/O are being used to drive the 1 of 8 multiplexer. 4 additional pins are driving our Debug output to a composite video circuit (very handy). That's a total of 16 pins consumed. I have wired up 8 additional pins to a third RJ-45 on the breadboard, but these are as yet unassigned. The intention is that this connector will be for the data communication lines needed to drive the I/O Power board. Finally, we will need to dedicate some output lines for audio and and Dot Matrix display and some lines for hooking up a mass storage device such as a SD card.

If it sounds like we are beginning to think about getting the entire system hooked up to one propeller chip, you'd be right. If it sounds like I haven't quite figured out how everything will hook up, you'd be right. If it sounds like I'm running out of I/O pins, you may be right, but I've got some tricks up my sleeve.

Before we get into those details, lets hook it all back up to the machine and make sure the new wiring works.

Success! And Comfort. It is much nicer having the computer and microprocessor on a solid table. There is one problem. The circuit driving the composite monitor has a glitch and I'm not getting sync'd properly. Best guess is that I swapped the resistors around. I'll patch that up and let you know next time. And I'll try to get a snap of the workspace.

I think it may be time to draw up a bit more formal diagram for all the I/O as well.