I’ve been working with a friend to design a new PCB for the clicky IBM model M keyboards. He implemented the schematics and design in geda/gschem/pcb, and in order to teach myself a bit I decided to try manually recreating the same design in Eagle (which I’ve never used before today).
Now that I think I have a rough idea of how the layout functions, I’d like to see if anybody would be willing to look over the design and see if it makes sense or if there are any obvious mistakes. We’re using an ATmega32 and the plan is to run a modified AVRUSB stack on top of it (I know it won’t ever technically certify as USB compliant but AVRUSB is Good Enough for me.)
Is C3 supposed to be inside the ATMega32? I’m guessing you intend for it to be on the bottom of the board, but it looks like a through hole part, so it’s solder would still be on the top of the board. I guess if you are sure the ATMega32 chip has sufficient clearance underneath it would work. But most chips sit right down on the board, which might be a problem.
This wouldn’t be a problem if it was a SMD part on the bottom, of course.
you could just as easily rotate C3 90 degrees, place the trace that goes outside the uC to go under the uC, add a little tail from that trace to one pin of C3, and then the other to the ground plane with thermals.
This would place C3 up and to the left a bit of where it is currently.
Yes, the plan is to use a small ceramic cap for C3 and a socket for the AVR. And - worst-case scenario - if the cap doesn’t fit properly under the socket I’ll just mount it on the bottom of the PCB.
Something slightly more worrying - the 10-pin connector is obviously intended for programming the AVR. However, I think I’ve got it wired wrong - at least, on my breadboard, pin 32 (AREF) seems to need to be wired to either ground or +VCC depending on whether or not I’m programming the AVR. Is that correct? It must be possible to have the programming connector and the rest of the pins all wired up together.
clee:
Something slightly more worrying - the 10-pin connector is obviously intended for programming the AVR. However, I think I’ve got it wired wrong - at least, on my breadboard, pin 32 (AREF) seems to need to be wired to either ground or +VCC depending on whether or not I’m programming the AVR. Is that correct? It must be possible to have the programming connector and the rest of the pins all wired up together.
There is continuing confusion about the Atmel AVR
programming headers. There are two in use, a six
and a ten pin. The ten pin is obsolete.
Here’s a [recent thread that should clear up your confusion.
Regarding the AREF pin on AVRs, these are required if
the internal ADC is used, and can be set by firmware to
either accept an external reference or use the internal
reference. I always connect AREF to Vcc, unless I plan
to use the ADC.
It would be wise to read the relavent section in the
AVR data sheet (I’m not crrently using the ATMega32).
The only AVR programmer I have right now is a ponyser 10-pin programmer, but my USBtinyISP should arrive here any day now.
Since I haven’t sent this in for manufacturing yet, I think I’ll rip out the 10-pin and drop in a 6-pin. I’ll update the original post and add a new comment once the new layout is ready. Thanks for the feedback!
The 10-pin connector let you have grounds parallel to your signals in a ribbon cable. Also, the 10-pin IDC is a lot easier to find. I wouldn’t go so far as to claim it’s obsolete, when the newest dev board from Atmel (the STK600) still has a 10-pin ISP header on it.