Group Assigment

Characterize the design rules for your PCB production process

The group Assignment link can be found here: Week 5 Group Assignment

Setting up the Stepcraft 300

The Stepcraft 300

The Stepcraft 300

Charecterizing the Septcraft

There were several issues with the milling process and this prevented us from making our boards right away.

Due to the issues we had a few broken bits, however we discovered that every bit that was broken milled the PCBs at the right measures.

Sooooo….if any of you have broken bits (we will send the new specs), send them our way.

All jokes aside, we were able to mill the PCBs according to the specs of Neil.


Soldering the PCB boards
We did manage to mill the pcbs using the broken bits and the end results are certainly from a good quality. We chose the parts we needed to solder on the board using the ATTiny44A MCU. The parts are as following:
  • MCU: ATiny 44A.
  • Diode, x2.
  • 1K Resistor.
  • 10K Resistor.
  • 20MHz Resonator.
  • 0 Ohm Resistor, x2. (These 2 will funciotn as a jumper, in order for the PCB to be programmed as a controller)
  • 1uF Capacitor.
  • 10K Ohm Resistor.
  • ATMEL Ice Programmer. (AVR ISP)

PCB Assembly

Assembling the PCB

SMT Soldering

Soldering the components

PCB Assembled

Completed PCB

Getting the Atmel Ice to work with avrdude:
I’m running a Windows 10 laptop, meaning I had 2 options. Use the software provided with the official software for the Atmel Ice programmer or use the opensource avrdude. (WinAVR is deprecated at this point). I wanted to use bash so I installed all the required files using this link: Brian's Tutorial . And installed GNU make for windows, the avr 8 bit toolchain from github and the avrdude from [URL]. The issues I ran into the setup, is that avrdude was not recognizing the correct ID for the Amtel ICE ISP interface. After doing some research, it all pointed towards the system and user path variables in Windows 10. This is the configuration that worked for me:

User variables:

User Variables

My User Environment Variables

System variables:

Sys Variables

My System Environment Variables


The reason I did the steps above, is due to the fact that Windows 10 has some issues with avrdude or any other AVRISP porgrammer if you are not using the official software provided with the programmer(s). The error, I received before the steps (in total 4-6 hrs of troubleshooting and configuration) was:

Cannot Find AtmelIce

Can't find programmer "atmelice_isp"

With this configuration, I was able to read the ID of the debugger. Afterwards I checked the firmware (which I Received from fellow students) I edited the file for it to be flashed onto the MCU. I started the bash interface from the firmware folder and started with with commands:

  • Make flash
  • Make fuses
  • Make rstdisbl.
After the rstdisbl I received several errors, of which I have no screenshot. Afterwards I could not get the Atmel Ice to go into programming mode. Seemed I was working with the wrong firmware. (ATiny45 instead of ATiny44A). SO, this is also a guide on how to brick you’re $130 Atmel ICE programmer. Always be vigilant with your files ,firmware and always read up without staying up till 6 AM.

Go to work with a fresh mind and less jittery troubleshooting.

Either way, these are the full steps, I took in order to get everyting ready and working (for me)


Installing the Atmel-ICE Drivers with Atmel Studio 7 & AVRdude

8 Bit

Install 8Bit for Atmel

Install the libusb driver filters. These can be found in the avrdude folder subfolder="driver-amd64" the "install-filter-win.exe". Run the executable as Administrator and select "install a device filter"

Here you will need to search for the Hardware ID that ends in 03eb with a PID of 2141. Double check the description for Atmel-ICE Data Gateway. There are a total of 3 filters, that need to be installed.

Device Filters

Install device filters for Atmel

Install GNU Make

Download and install the AVR toolchain by Atmel. Install by extracting the root folder in the Program Files (x86) folder and adding the PATH in user variables.

Afterwards, make sure everything is in working order. Check if GNU Make is installed correctly

Use Make -v to check if GNU tools are working in GIT Bash

Check if the avr toolchain is ready

Check if AVR Toolchain is installed correctly

Use avr-gcc --version to check if AVR toolchain is working in GIT Bash

Check to see if the atmelice isp is recognizavle in avrdude: avrdude -c atmelice_isp -p t44

Connect the PCB to the Atmel-ICE programmer and power the both of them.

Connect the PCB to the AVR Interface of the programmer

Connect the PCB to the AVR Interface of the Programmer

Check the firmware for the ATiny44A MCU and change accordingly. (I used the wrong firmware. Once again, work with a fresh mind and clear headed mind)

Connect the PCB to the AVR Interface of the programmer

Make Flash, to flash the firmware

Connect the PCB to the AVR Interface of the programmer

Make Fuses for AVR clock fuses.


After i entered make rstdisbl, i received an error and I realized my mistake waaaay to late. I flashed (changed the wrong firmware) from the get go. Now the Atmel ICE programmer is not even to enter programming mode.

The follow-up

Help getting it debugged

Tried to save it in Linux

Connect the PCB to the AVR Interface of the programmer

Install Adruino IDE in PopOS

Connect the PCB to the AVR Interface of the programmer

Install the required libraries with avrdude in PopOS

No Dice

Our Instructor, is still debugging my board at the moment and if it is not debuggable, I will have to start from scratch


I tried it in Linux environment (Ubuntu based distro), but it was too far gone.

So for now, it's just waiting to see if I need to replace the resonator, the MCU or just start with a new board and Adruino.

Will update site once I have a working FabISP.

Trying the FabUSB Tiny by Brian

After several troubleshooting days, we finally decided to try our hand at the FabUSB by Brian using this Guide

Connect the PCB to the AVR Interface of the programmer

Milled & soldered the FabUSB by Brian.


I proceeded to program the board right away, using our instructors FabUSB Tiny on linux.(oh my sweet revenge on Windows will have to wait).

At first it was not flashing the MCU, and I checked all connections with a multimeter, except one (well played Jaun Carlos, thanks for keeping me on my toes). The jumper! I forgot to solder the jumper to kae the connection to the MCU.

Now, flashing the firmware went without a hich.

Connect the PCB to the AVR Interface of the programmer

Go to the directory holding the firmware.

Connect the PCB to the AVR Interface of the programmer

Flash the MCU with make flash

Connect the PCB to the AVR Interface of the programmer

Run the make fuses command in order to define the fuses

Connect the PCB to the AVR Interface of the programmer

Blow the reset with the command make rstdisbl

Connect the PCB to the AVR Interface of the programmer

Check to see if the FabUSB Tiny is working by plugging in my usbtiny and run command lsusb


Now I can get to work on programming my boards for week 11, 14 and for my final project!