The ATmega168P baseboard is very simple. The goal is to break out the pins to the four connectors while only adding additional components if absolutely necessary or highly convenient. You will note that I took this to the extreme in that there is no power supply on this board. I did this intentionally, because I have a few projects that I will likely end up using 3.3V for, so why not make the regulated power supply just another module? I couldn't think of a reason not to, so I did it.
The only parts on this board are: a 28-pin socket, a momentary switch for the reset button, and a pull-up resistor for the reset pin. Later, I added a decoupling capacitor for the ADC Voltage Reference pin. I laid the traces for an external resonator, but that is completely optional. Using the clock internal to the ATmega168P works just fine, but I did want the option of boosting the processing power if necessary.
You might notice that I labelled the quadrants A, B, C, and D. This is simply a marking system that will help me remember on which quadrants I can connect my modules. Each module I made has a similar marking. This just keeps things straight when I take a week or two off and then come back to it.
I didn't build this board with a top layer. The board layout uses the top layer to help me figure out where to put my wire jumpers. In the future, I'll probably try to see if I can do a double layer board. It's not really a priority for me right now though. If you want to use my files for a double sided board, make sure you increase the width of the top layer traces.
The Eagle files are in the attached Zip file.
ATmega168P Baseboard Schematic
ATmega168P Baseboard Layout
I decided to place the unregulated power, regulated power, and ground rails on the connector pins closest to the ends of the PCB. The problem with this is that for the single quadrant modules, the power pins only match up for two of the four possible quadrants, so they can only be used for those two quadrants. For the other quadrants, the pins are reversed from what they need to be. I didn't notice this at first, but honestly I don't have a whole lot of single quadrant modules that can go in any of the four quadrants. Most of them have to be in a specific quadrant anyway, so no big deal.
I've got another way of doing this in mind which may be more flexible, but this is how I've chosen to do it for now.
Finished ATmega168 Baseboard
Note: I'm not sure if I should have also connected the resonator pins to the bus connectors. I was worried it might affect the operation of the resonator if I decided to put one in, so I didn't connect them. Can anyone comment on this? I think the length of a trace going to a resonator needs to be as short as possible to avoid picking up interference on the traces. Passing these traces from the MCU to the resonator and then on up a bus connector strikes me as a bad thing to do. I guess I could put some jumpers in there or something. Comments?