standard pinouts on specific-purpose clones?

Hello forum,

I'm designing an "arduino compatible" circuit for a specific purpose. Basically, it's a slightly larger Duemilanove-format PCB with some extra circuits on it. The intention is that users could use it for the designed purpose as-is, or stack standard shields on it as they would with any Arduino. So good so far.

Of course, my application consumes a few standard pins. I've tried to choose pins that won't interfere with shields the user might want to use. Does it make sense to bring those pins out to the standard headers? Not routing them to the standard headers would save PCB space, and probably reduce noise (why have a several-cm-long trace on an analog input pin if that pin's already used for something else?)

Thoughts?

Well, you could leave them out, but the pins help provide stability to shields. The pins help to hold on the shield and keep it from falling out, etc.

You'd probably be fine removing only a few pins, but I would avoid removing more than a few from each side of the board.

I suppose I could leave the actual pin header totally intact, but just not route to the pins.

Is there a standard practice for designing compatibles that have some pins consumed? Heck, is there any standard practice for designing compatibles at all? By "compatible" I mean "works with most shields." Maybe I'm not using the right word though. . .

Just leaving the traces off might work well. I can't think of any particular "protocol", but probably just leaving the pinout intact (usually including traces) is what most people do.

run the pins through dip switches, now you can have either or

Maybe jumper wires in machine pin sockets, so people could disable them or rewire the built-in functions to other pins? Might add too much space though...

I was thinking the same thing, Osgeld, but depending on the PCB design, that may or may not be an option - if not, then some jumpers would work ok (standard or the micro ones you sometimes see on hard-drive PCBs); or you could design in PCB solder-bridge jumpers, too, I suppose.

Going the DIP switch route or jumpers would probably be the "best of both worlds" (might also want to have jumpers or something to allow the disabling/re-routing to other pins of the custom circuits, too).

...a slightly larger Duemilanove-format PCB with some extra circuits on it.

A bunch of people are building RTCs and EEPROMs into their boards, usually (always?) via i2c, so only two pins needed (A4, A5). Motor controllers seem to be pretty flexible in terms of pins, depending on whether PWM is needed.
What sort of extra circuits are you thinking of? Might help to figure out how to handle pins.

Is there a standard practice for designing compatibles that have some pins consumed? Heck, is there any standard practice for designing compatibles at all? By "compatible" I mean "works with most shields." Maybe I'm not using the right word though. . .

No, there is no standard and it is a problem when trying to 'stack' multiple shields. Unless one does research what pins a given shield uses, then one can't tell if there will be a conflict where two shields are using some same pins. Same can be said of software resource conflicts between shields. Basically trying to run two or more shields at the same time is a risky endeavor. Before spending big $$$ on a fancy shield one really needs to research resources used by any other active shield you plan on using.

Lefty

A bunch of people are building RTCs and EEPROMs into their boards, usually (always?) via i2c, so only two pins needed (A4, A5). Motor controllers seem to be pretty flexible in terms of pins, depending on whether PWM is needed.
What sort of extra circuits are you thinking of? Might help to figure out how to handle pins.

An RTC and port expander that use I2C, a pH monitor that uses an analog 3, and two of the digital pins (3 and 7 I think? I'd have to look) broken out for other things. The ethernet shield would be the most obvious pair for this project, which uses 10 - 13 iirc. Or maybe the Xbee shield, which uses the 0 and 1 - so either of those should be safe with my design.

I don't really want to take up the space with "options" like DIP switches - I'd rather just do it or not. I've got the board designed with the traces all laid, so I'm probably going to just use it that way - just wanted to see what people thought.