How to troubleshoot max7219?

I have a max7219 based project working perfectly on breadboard with a DIP version of the MAX7219. I had some PCB's made with the same schematic using the SOIC version of the MAX7219. I assembled the first board, it doesn't work and I have no idea where to begin troubleshooting a soldered board so I was hoping someone here could help.

There is one LED always on and very bright and the rest of that row is on normal brightness. When I try to control the display, I see LEDs changing but can't see how it correlates to what I'm telling it to do.

If I connect power to the MAX7219 board only that LED lights. I've checked the obvious things like shorts on the outputs going to that LED and the connections are fine. I don't know what to do next. I can assemble the next board, maybe this chip is defective but that seems like a long shot. I've thought about soldering my working dip chip with wires to the SMD pads just to prove the rest of the board works, but that's a pretty big job and I'm not sure what I'll learn.

Thanks for any suggestions you can give.

You might have the polarity around the wrong way. With no more detail (like schematics) the rest is guesswork.

I've been going over my schematic, comparing to the datasheets, my .brd file and the physical board with a continuity tester and so far I don't see any problems. I'm worried that I might have a problem because I bought the cheap eBay max7219's and now I have no clue how to diagnose it. I can post the schematic but since I used a bus on the outputs I don't think it will be very helpful.

Oracle:
I've been going over my schematic, comparing to the datasheets, my .brd file and the physical board with a continuity tester and so far I don't see any problems. I'm worried that I might have a problem because I bought the cheap eBay max7219's and now I have no clue how to diagnose it. I can post the schematic but since I used a bus on the outputs I don't think it will be very helpful.

A schematic is always helpful and/or a good resolution image of your board. Is the thing wired per this tutorial Arduino Playground - MAX72XXHardware if so then use a simple power circuit with current limiting resistor to buzz out some/each LED by touching to corresponding pins on the MAX7219 (I.E. LED top left lights if V+ to pin 22 and GND to pin 2, bottom left lights if V+ to pin 17 and GND to pin 8 ) If no LED's light then try swapping polarity (V+ to pin 2 and GND to pin 22) If this lights then your LED's are the wrong way round.

I've gone over my eagle schematic very carefully and checked every connection on my pcb with a multimeter and couldn't find any problems. I also assembled a second board from scratch just in case it was an assembly defect and I have the exact same result. This is a very frustrating problem.

At this point, I want to say the only possible problem is the max7219's are defective. I bought them on eBay and paid $7 for a 10 pack which is I realize is very cheap. So I'm wondering if I should try and buy one from a more reputable source, but I'm not sure where to try. I also am considering buying some SOIC to DIP pcb's to try dropping one of the chips into a working circuit on a breadboard. Is there no better way to see if the SOIC IC is any good?

How about this - post the schematic and the NETLIST that eagle can create (File:Export:Netlist).

"I also am considering buying some SOIC to DIP pcb's to try dropping one of the chips into a working circuit on a breadboard."
That also sounds like a good test plan.

I have "crisped" one that way and there are no second chances, Maxim did not put polarity protection in. If you are lucky it will flicker nonsense. As CrossRoads stated, post the diagram of schematics. He and Nick are kinda sharp.

Sorry for the delay, my schematic from eagle is:

and my netlist is http://www.profquotes.com/misc_images/j64.net

The schematic is a very basic implementation right off the datasheet, the jumpers on the left are for signal in from the MCU and out to the next identical board to have several matrices. The jumpers on the right go out to the matrix.

I'm seeing pins connected together here.
Can you confirm with the art work if these are connected?

MATRIX1  16       8        8          1
         IC1      2        DIG0       1
MATRIX13 1        8        8          1
         IC1      21       SEGE       1

MATRIX2  16       7        7          1
         IC1      11       DIG1       1
MATRIX10 1        7        7          1
         IC1      16       SEGB       1

MATRIX3  16       3        3          1
         IC1      6        DIG2       1
MATRIX7  1        3        3          1
         IC1      5        DIG6       1

MATRIX5  16       2        2          1
         IC1      3        DIG4       1
MATRIX9  1        2        2          1
         IC1      14       SEGA       1

MATRIX6  1        4        4          1
         IC1      10       DIG5       1
MATRIX12 16       4        4          1
         IC1      23       SEGD       1

MATRIX4  1        6        6          1
         IC1      7        DIG3       1
MATRIX14 16       6        6          1
         IC1      15       SEGF       1

MATRIX11 1        1        1          1
         IC1      20       SEGC       1
MATRIX15 16       1        1          1
         IC1      17       SEGG       1

MATRIX8  16       5        5          1
         IC1      8        DIG7       1
MATRIX16 1        5        5          1
         IC1      22       SEGDP      1

Moderator edit: [code] ... [/code] tags added. (Nick Gammon)

CrossRoads:
I'm seeing pins connected together here.
Can you confirm with the art work if these are connected?

MATRIX1  16       8        8          1

IC1      2        DIG0       1
MATRIX13 1        8        8          1
        IC1      21       SEGE       1

I am not totally clear what this means. I can confirm (on the printed board with a meter as well as looking at the board file in eagle) that IC1 pin 2 connects to pin 8 on the correct jumper to it's in the right spot for my matrix. IC1 pin 21 connects to pin 8 on the other jumper, directly across the board from the first one, again correct for my matrix. And pin's 2 and 21 are not connected to each other.

Edit: I understand now what you were saying that it's the same pin number on the jumper/header row so they'd be connected together. It's a different header on the board and the right pin on the IC does go to the right header and they're not connected together. I don't know why the netlist looks like that, is it the first column (1 vs 16) that defines them as separate devices?

I guess it just means you didn't show enough on the schematic with names called out to tell what's actually supposed to be connected.
I think it's easier to follow by showing a signal name on everything and skip the bus drawing altogether.

It appears the way to read the netlist is:

Net Part Pad Pin Sheet

Net/Signal name: MATRIX1
connects from device name: 16
external pin #: 8
internal pin name: 8

connected to:
device name: IC1
external pin#: 2
internal pin name: DIG0

So breaking it up like that, the netlist makes more sense.

Okay, so given that things appear wired correctly:
What value is Rset?
Is Vcc at 5V?
Is the matrix installed upside down?

CrossRoads:
Okay, so given that things appear wired correctly:
What value is Rset?
Is Vcc at 5V?
Is the matrix installed upside down?

Rset is 18k. The device package says "1802", and on the two boards I assembled, I measure 18.1 and 18.8k. The 18.8 surprises me because they are supposed to be 1% precision resistors, but should still work fine.

I do have 5V on Vcc.

The first time I mounted the matrix to the wrong side of the board (actually the side I intended but I did get the header rows backwards on the PCB), the second time I installed on the opposite (electrically correct) side and I just double checked it's in the right way around.

What's the code like - any chance things are misprogrammed? Fuses not loaded in the uC?

The code is working fine with a dip-based setup on breadboard. Both the sample that came with the ledcontrol library and my own code. Even using the same arduino without reprogramming, just unplugging the boradboard and connecting the pcb.

I don't know then - maybe it is bad part.
I am starting to wire up 4 DIP '7219's from taydaelectronics.com, hopefully will not have your issue.

Thanks for the suggestions anyway. At least you won't have my issue as badly because those dips are easy to drop into a working project with a socket or breadboard. This is my first scratch-built SMD project, I never realized what a pain it would be to debug.

I ordered a 5 pack of soic->dip adapter boards from ebay, so I can drop one of the 7219's into my breadboard. The dip device I have is from maxim's sample program; can't get more reliable than that.

It's going to take 3 weeks to get the adapters, so now I'm debating also ordering some more 7219's from a different supplier so at least I'll have them sooner. I love what the internet has done for this hobby in terms of price and selection, but hate what it's done in terms of slowing down the process.

Have you find what was wrong ? .... 5 years later ^^