For this week's assignment, I made a FabISP. This involved milling the board on the Modela, populating it, and programming it.


I found that the default settings for the Modela failed to remove some of the copper in the botton left corner. Increasing the depth from 0.1mm to 0.15mm and rerunning the job solved the problem.

Here's the resulting board:


Populating the board wasn't too difficult - I had previous soldering experience, so it was mainly a matter of learning to solder the tiny SMT components. For the USB header, I tacked down one of the pins while lining it up with tweezers, then soldered down the large legs. After it was attached, it was easy to solder the remaining small pins, then clean up the excess solder with wick.

One thing that made soldering difficult was the equipment - all but one of the irons in 043 had huge tips that weren't appropriate for SMT components.

Populated board:

Ribbon cable:


I installed the development tools using CrossPack AVR, then programmed the board with an AVRISP MKII - however, I found that I needed to plug the board into USB power to successfully program it, which left me suspicious. Upon further research, I learned that my suspicions were unjustified: the AVRISP MKII doesn't provide power to the target.


To make sure that the FabISP was behaving, I plugged it in via USB and tried to talk to it with avrdude. At first, it wasn't recognized by System Profiler - I reflowed a few shady looking joints, which solved that problem.

For a while after that, I still thought that it wasn't working, but then I did some research and found the appropriate command: avrdude -c usbtiny -p t44 (the t44 is just a dummy part). If the programmer is working, then avrdude should reply

avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

avrdude done. Thank you.

This means that it found and communicated with the programmer but didn't find the (unattached) part to program.