Overview
This documentation provides a simplified guide to building an AVR programmer with an ATtiny44A microcontroller. Follow the steps carefully and refer to the provided references for additional information and guidance.
    
      Components and Tools
- ATtiny44A SMD microcontroller
 - 6-pin ISP header or Pin Header
 - Resonator 16 MHz
 - Resistor (330 ohms)
 - Capacitor 1uF
 - Resistor 100 ohm x2
 - Resistor 1.5K ohm
 - Resistor 10K
 - Zener Diode 3.3 V x2
 
Design Steps
Step 1: PCB Design
I used KiCad to design my PCB with a trace width of 0.6 and a clearance of 0.4.
      
      Step 2: PCB Fabrication
I used FlatCAM and an SRM20 machine to fabricate my PCB.
      
      Firmware Compilation (Linux)
- Install the necessary tools by running the following command in the terminal:
          
sudo apt-get install gcc-avr avr-libc avrdude flex byacc bison gcc libusb-dev - Download the firmware and unzip it using these commands:
          
wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip && unzip firmware.zip - Open the Makefile and edit the following parameters:
          
- DEVICE (microcontroller)
 - AVRDUDE (programmer)
 - F_CPU (crystal speed)
 
         - Compile the firmware.
 
        
      Trial and Errors
- I designed a PCB with a USB-connector package. The goal was to design a small layout. But I couldn't find through-hole (THT) ATtiny84/44 components. I chose to keep all other components as (THT) while switching the ATtiny44 to (SMD).
 - I tried to make the PCB single-layer with a 1x6 THT ISP header but it was challenging with a small layout . I decided to switch to a 2x3 pin header in SMD form. This adjustment allowed for a more manageable design. Note: This is a quick solution but not correct. You must create a custom pin header package (THT) because, at the end, I didnt find a pin header (SMD) and I put holes in the footprint.(^_^)
 - During the fabrication step, I found a problem with the custom USB package. that was triggered by the modifications made during the first trial. When attempting to mirror the PCB for fabrication (vcc&gnd). I edited the custom package again to be suitable for this case, or you can replace it with a USB socket.
 
