Week 3: PCB fabrication

The FabISP is a device used to transfer firmware onto AVR micro-controllers.

Milled Andy's ISP design using these png's in the fab modules.

Files: git clone git://git.bardagjy.com/fabisp

Soldered: typically by placing solder onto the pads first, then melting the component on top with tweezers. Required a few de-solderings by holding the board up off the table using tweezers, holding on to it by the component of interest, and blasting the heat-gun at that component: the board then drops gently to the table when the solder melts leaving the component in your tweezers and some leftover solder on the pads for next time. Also used a wick for de-soldering in a few cases and to clean up some pads that had too much solder volume. I put some layers of scotch tape on the back of the board to help it fit snugly into the USB slot in my laptop.

Programmed the board using CrossPack: this should give favorable messages to the command line

power board via plugging into USB port and connect to it with an ISP
cd into the directory containing the firmware
make clean
make hex
sudo make fuse
sudo make program

Programming another board with your ISP: At this point you can de-solder the jumpers to allow your board to act as programmer rather than programmee. The connecting jumper farthest from the micro-controller's causes your board to supply power to the programmee. Did not use this feature and instead powered the programmee via USB.

You also need to make the following change to the make-file, commenting out the line which specifies avrisp2 as the programmer and un-commenting the line which specifies usbtiny as the programmer.

Mine failed at this point, giving the following error when trying to program another board:

So I made another one. This time I de-burred it with scotch-bright and the side of a ruler and washed it off thoroughly with soap and water, then drying evaporatively with the heat gun. With some help from Charles on ensuring that the iron was properly tinned for good heat transfer in a short time, and touching up several solder connections, this board finally worked: it could both be programmed and program other reset-jumper'd boards. Importantly, once this board was programmed, it showed up as a FabISB to the computer's USB port:

The working board also had header pins (bent with a pliers to act as a jumper) so it could be quickly jumper'd by connecting with a tweezers, so other folks could test their programmers on it.