MCP23008 Unexpected Behaviour Issue

Hi,

I'm in the process of breadboarding out my design for a Nixie Clock, with a standalone arduino (328), using three MCP23008s as port expanders so I can control the nixie tubes. (I'll be using the interal IO ports for other functionality I haven't added to the breadboard yet). One IO expander controls hours, minutes and seconds respectively. I also have a DS1307 RTC on the I2C bus, all of which are pull up by a pair of 2k2 resistors. This is shown in the image at the url below, although it might be a bit tricky to figure out whats going on because of the bundled wires going from the MCP23008s to the 74141s (well, the Russian Equivalent).

http://server01.dynamod.org.uk/files/nixie_breadboard.jpg

The problem I am having is that the middle IO expander in the picture, which controls the minutes, is displaying some rather obscure behaviour, most specifically with bits 5 & 6. I should explain that the 4 most significant bits on the IO expander control the 'tens column' and the 4 least significant bits control the 'digits column' of the minutes pair. So it seems that unless I set bits 5 & 6 to the same value, they both take on a value of around 0.7V. This means the tube in question can be set to 0, 3, 4, 7 & 8, but no other values, as the 5th & 6th bits float around 0.7V rather than 0/5V. When this is the case, the nixie tube remains at the last number it took until a number it can display is set.

Initially not knowing what the problem was I replaced the nixie tube, then the driver chip, finally replacing the MCP23008, all with no success. Further I changed the ID values in the code, to move the hour minute second pairs around, but the problem persisted on the middle IO expander on the breadboard, which suggests to me that the code for writing to the IO expanders is fine.

Whilst I did harbour suspicion about the breadboard, I've held off on replacing it for now, as I've been able to verify continuity between the IO expander outputs and the nixie driver inputs with a multimeter, so thought that I'd see if anyone had experienced anything like this before before I start having to rewire all the connections etc to a new breadboard.

Has anybody seen behaviour like this from an MCP23008 (or perhaps MCP23016) before, and did they find a solution to the problem? If this is not the case, could anybody make an educated guess on what could be causing this?

Regards

Noel

Despite what you say about it probably not being the code, I would like to see the code. :slight_smile:

Thanks for replying, however I discovered the problem last night. Turns out the breadboard was at fault, somehow the two rows of pins attached to the two problematic pins on the IO expander were connected internally. A couple of minutes with a screwdriver and everything is now working as expected.

I suppose thats what I get for buying the cheapest breadboards I could find...

Glad you found it. A while back someone had a similar problem because they hadn't connected the +5v horizontally, although yours looked OK in that respect.