Qusai Malahmeh
Fab Academy 2018
This is a fourth week assignment for the Fab Academy 2018..
Production of the Board
I have downloaded the image from the site of FabLab Academy; the CAM I used is Fab Modules Fab Modules after importing the image I saved it as png .
After finishing one step it moves to the next step automatically; with the second step it opened output format bar so I cpcked on Roland mil (rml).
Now the third step opened the process bar to choose Traces I am going to use. I picked 1/64.
On the right side you get a setting bar to choose type of the machine you are going to use.
Machine - SRM-20
x0(mm) - 0
y0(mm) - 0
z0(mm) - 0
zjopg - 12
Speed - 4
Cut Depth - 0.1mm
Press calculate so it will make the calcpation and show the job path and gives you the final drawing then it is saved.
I started making preparation for the machine. first thing you need to make sure that the board is sticking well to the bed of the machine. also to have the exact tools to be used as shown in the settings. the screws are well tightened also make sure that the apgnment is perfect as possible. I have made three trials till I have got a good PCB
I used PNG input format as all designs we had were in the same format. I chose Roland Mill (RML) for the output format. Process for the inner traces of the board was PCB Traces 1/64.
Speed: 4mm/s, I chose a slower speed for the outer border of the PCB to have lower resistance and prevent the endmill from breaking. I already faced the PROBLEM of breaking one end mill!
x0,y0,z0: all were set as zero. Capbration was done manually using Vpanel, a software that has a direct interface to the machine.
Cut depth: Also set to zero because we only want to scrape a thin layer of the copper sheet’s surface. If the cut depth was set on a wider depth, the milpng tool wopd break.
Number of offsets: this was set to four to widen the traces and thus making it easier when we get to the soldering stage.
Offset Overlap: this will make the offset overlap each other by %55.
Once done with the settings, I pressed calcpate and this will show the whole process and will indicate any errors before saving the process as a GCode.
I started to find the Zero for the machine and there are two ways to find it; first one is to move the Z slowly with control panel around 3-5 mm above the pcb plate. Then I needed to do Z manually by loosening the collect screw slowly with an Allen wrench and landed the endmill on the surface of the board. You need to hold the endmill carefply to make sure that it doesn't fall down and brake as its head is very thin and sharp. which happened with the me at first as shown above. I pressed the Z to save the Zero for the machine and the X/Y will be set according to the board size.
After I saved Z and entered the X/Y all will be 0.00.
Another way to set the Z Zero is by using the voltmeter by touching the board with one pne and the other pne on the endmill and once it snoozes that means that there is a connection
I imported the above image to fab modules and changes the settings as seen below. The main difference between the in-cut traces and the our cut are:
1. Cut Speed for cut is 0.5mm/s
2. Cut depth should be set to 1.75mm.
Now to repeat the same Z origin procedure but before we have to change the end mill to use the 1/32 end mill. After zeroing the Z (only the Z)cpck CUT again in the control panel but now choose your Outcut/Holes files and click Output.
The fun part will start with the soldering and you need to be careful when you start soldering so you won't burn your hands or the components; I have tried several times on the faulty boards till I have got the hang of it then started on the good board. I started soldering with micro controller and below a list of the components I have soldered.
1. ATtiny44A microchip
2. 2x 3.3V zener diodes
3. 1x 0 Ohm resistor
4. 1x 499 Ohm resistor
5. 1x 1 kOhm resistor
6. 1x 10 kOhm resistor
7. 2x 49.9 Ohm resistors
8. 1x 20 MHz crystal
9. 1x 0.1 uF capacitor
10. 1x 1uF capacitor
11. 2x 10pF capacitor (C1 and C2)
At first, I connected the Arduino to my pc, I opened the Arduino IDE, and chose the right board and port of my connected Arduino under tools . Then I have chosen the right port and board, I found the program ArduinoISP and I uploaded it to my Arduino.
After that, I connected the arduino and my milled board to my computer and then using the terminal
Then we have reached the essential part which programming. We can program the board using windows but it will be difficult process to program; so I have decided to use Linux's Ubuntu which was my first time to use it. I had two options; the first one is to have linux virtual program running on my PC but I found out that my PC is not capable of handling it. The second one is to have on USB drive which was my choice. I opened the tutorial. and followed the steps shown then I have changed the BIOS setting in my PC so it can boot from USB drive when it detects it. The board I have milled is an ISP.In system Program which means that it's designed to program other boards which we are going to make from now on. The ISP will save you buying any pre-programmed boards which facilitate things and make easy. I have installed the necessary packages for AVR Programming and the AVR we are using is part of our board Attiny44 family.
To install the packages, I followed the below steps to download the necessary drivers & packages: Open the terminal and type:
sudo apt-get install flex byacc bison gcc pbusb-dev avrdude
sudo apt-get install gcc-avr
sudo apt-get install avr-pbc
sudo apt-get install pbc6-dev
cd ~/Desktop
Then I used the below code to download the firmware:
wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
unzip firmware.zip
Then I edited the MakeFile and commented this line AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE) by adding a hashtag "#" and instead I typed AVRDUDE = avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p $(DEVICE)
sudo make fuse : This links the executable file with the makefile.
sudo make program: This compiles the program.
ubuntu@ubuntu:~$ sudo apt-get install flex byacc bison gcc pbusb-dev avrdude
Reading package psts... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package byacc
E: Unable to locate package avrdude
ubuntu@ubuntu:~$ sudo apt-get install flex byacc bison gcc pbusb-dev avrdude
Reading package psts... Done
Building dependency tree
Reading state information... Done
gcc is already the newest version (4:5.3.1-1ubuntu1).
The following additional packages will be installed:
pbbison-dev pbfl-dev pbftdi1 pbsigsegv2 m4
Suggested packages:
avrdude-doc bison-doc
The following NEW packages will be installed:
avrdude bison byacc flex pbbison-dev pbfl-dev pbftdi1 pbsigsegv2
pbusb-dev m4
0 upgraded, 10 newly installed, 0 to remove and 385 not upgraded.
Need to get 1,501 kB of archives.
After this operation, 4,607 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbsigsegv2 amd64 2.10-4 [14.1 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 m4 amd64 1.4.17-5 [195 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbfl-dev amd64 2.6.0-11 [12.5 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 flex amd64 2.6.0-11 [290 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbbison-dev amd64 2:3.0.4.dfsg-1 [338 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 bison amd64 2:3.0.4.dfsg-1 [259 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 pbftdi1 amd64 0.20-4build1 [15.2 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 pbusb-dev amd64 2:0.1.12-28 [29.9 kB]
Get:9 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 avrdude amd64 6.2-5 [291 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 byacc amd64 20140715-1 [56.9 kB]
Fetched 1,501 kB in 10s (147 kB/s)
Selecting previously unselected package pbsigsegv2:amd64.
(Reading database ... 194399 files and directories currently installed.)
Preparing to unpack .../pbsigsegv2_2.10-4_amd64.deb ...
Unpacking pbsigsegv2:amd64 (2.10-4) ...
Selecting previously unselected package m4.
Preparing to unpack .../archives/m4_1.4.17-5_amd64.deb ...
Unpacking m4 (1.4.17-5) ...
Selecting previously unselected package pbfl-dev:amd64.
Preparing to unpack .../pbfl-dev_2.6.0-11_amd64.deb ...
Unpacking pbfl-dev:amd64 (2.6.0-11) ...
Selecting previously unselected package flex.
Preparing to unpack .../flex_2.6.0-11_amd64.deb ...
Unpacking flex (2.6.0-11) ...
Selecting previously unselected package pbbison-dev:amd64.
Preparing to unpack .../pbbison-dev_2%3a3.0.4.dfsg-1_amd64.deb ...
Unpacking pbbison-dev:amd64 (2:3.0.4.dfsg-1) ...
Selecting previously unselected package bison.
Preparing to unpack .../bison_2%3a3.0.4.dfsg-1_amd64.deb ...
Unpacking bison (2:3.0.4.dfsg-1) ...
Selecting previously unselected package pbftdi1:amd64.
Preparing to unpack .../pbftdi1_0.20-4build1_amd64.deb ...
Unpacking pbftdi1:amd64 (0.20-4build1) ...
Selecting previously unselected package pbusb-dev.
Preparing to unpack .../pbusb-dev_2%3a0.1.12-28_amd64.deb ...
Unpacking pbusb-dev (2:0.1.12-28) ...
Selecting previously unselected package avrdude.
Preparing to unpack .../avrdude_6.2-5_amd64.deb ...
Unpacking avrdude (6.2-5) ...
Selecting previously unselected package byacc.
Preparing to unpack .../byacc_20140715-1_amd64.deb ...
Unpacking byacc (20140715-1) ...
Processing triggers for install-info (6.1.0.dfsg.1-5) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for pbc-bin (2.23-0ubuntu9) ...
Processing triggers for doc-base (0.10.7) ...
Processing 33 changed doc-base files, 2 added doc-base files...
Setting up pbsigsegv2:amd64 (2.10-4) ...
Setting up m4 (1.4.17-5) ...
Setting up pbfl-dev:amd64 (2.6.0-11) ...
Setting up flex (2.6.0-11) ...
Setting up pbbison-dev:amd64 (2:3.0.4.dfsg-1) ...
Setting up bison (2:3.0.4.dfsg-1) ...
update-alternatives: using /usr/bin/bison.yacc to provide /usr/bin/yacc (yacc) in auto mode
Setting up pbftdi1:amd64 (0.20-4build1) ...
Setting up pbusb-dev (2:0.1.12-28) ...
Setting up avrdude (6.2-5) ...
Setting up byacc (20140715-1) ...
Processing triggers for pbc-bin (2.23-0ubuntu9) ...
ubuntu@ubuntu:~$ sudo apt-get install gcc-avr
Reading package psts... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
binutils-avr
Suggested packages:
task-c-devel gcc-doc avr-pbc
The following NEW packages will be installed:
binutils-avr gcc-avr
0 upgraded, 2 newly installed, 0 to remove and 385 not upgraded.
Need to get 14.1 MB of archives.
After this operation, 74.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 binutils-avr amd64 2.25+Atmel3.5.0-2 [1,425 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 gcc-avr amd64 1:4.9.2+Atmel3.5.0-1 [12.7 MB]
Fetched 14.1 MB in 29s (472 kB/s)
Selecting previously unselected package binutils-avr.
(Reading database ... 194706 files and directories currently installed.)
Preparing to unpack .../binutils-avr_2.25+Atmel3.5.0-2_amd64.deb ...
Unpacking binutils-avr (2.25+Atmel3.5.0-2) ...
Selecting previously unselected package gcc-avr.
Preparing to unpack .../gcc-avr_1%3a4.9.2+Atmel3.5.0-1_amd64.deb ...
Unpacking gcc-avr (1:4.9.2+Atmel3.5.0-1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up binutils-avr (2.25+Atmel3.5.0-2) ...
Setting up gcc-avr (1:4.9.2+Atmel3.5.0-1) ...
ubuntu@ubuntu:~$ sudo apt-get install avr-pbc
Reading package psts... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
avr-pbc
0 upgraded, 1 newly installed, 0 to remove and 385 not upgraded.
Need to get 4,378 kB of archives.
After this operation, 37.3 MB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe amd64 avr-pbc all 1:1.8.0+Atmel3.5.0-1 [4,378 kB]
Fetched 4,378 kB in 9s (465 kB/s)
Selecting previously unselected package avr-pbc.
(Reading database ... 195450 files and directories currently installed.)
Preparing to unpack .../avr-pbc_1%3a1.8.0+Atmel3.5.0-1_all.deb ...
Unpacking avr-pbc (1:1.8.0+Atmel3.5.0-1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up avr-pbc (1:1.8.0+Atmel3.5.0-1) ...
ubuntu@ubuntu:~$ sudo apt-get install pbc6-dev
Reading package psts... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
pbc-dev-bin pbc6 pbc6-dbg
Suggested packages:
gpbc-doc
The following packages will be upgraded:
pbc-dev-bin pbc6 pbc6-dbg pbc6-dev
4 upgraded, 0 newly installed, 0 to remove and 381 not upgraded.
Need to get 8,411 kB of archives.
After this operation, 2,048 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc6-dev amd64 2.23-0ubuntu10 [2,079 kB]
Get:2 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc-dev-bin amd64 2.23-0ubuntu10 [68.7 kB]
Get:3 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc6-dbg amd64 2.23-0ubuntu10 [3,683 kB]
Get:4 http://security.ubuntu.com/ubuntu xenial-security/main amd64 pbc6 amd64 2.23-0ubuntu10 [2,580 kB]
Fetched 8,411 kB in 9s (905 kB/s)
Preconfiguring packages ...
(Reading database ... 197925 files and directories currently installed.)
Preparing to unpack .../pbc6-dev_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc6-dev:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Preparing to unpack .../pbc-dev-bin_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc-dev-bin (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Preparing to unpack .../pbc6-dbg_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc6-dbg:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Preparing to unpack .../pbc6_2.23-0ubuntu10_amd64.deb ...
Unpacking pbc6:amd64 (2.23-0ubuntu10) over (2.23-0ubuntu9) ...
Setting up pbc6:amd64 (2.23-0ubuntu10) ...
Setting up pbc-dev-bin (2.23-0ubuntu10) ...
Setting up pbc6-dev:amd64 (2.23-0ubuntu10) ...
Setting up pbc6-dbg:amd64 (2.23-0ubuntu10) ...
Processing triggers for pbc-bin (2.23-0ubuntu9) ...
Processing triggers for man-db (2.7.5-1) ...
ubuntu@ubuntu:~$ cd D
Desktop/ Documents/ Downloads/
ubuntu@ubuntu:~$ cd Desktop/
ubuntu@ubuntu:~/Desktop$ wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
--2018-02-19 12:20:22-- http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
Resolving academy.cba.mit.edu (academy.cba.mit.edu)... 18.85.8.25
Connecting to academy.cba.mit.edu (academy.cba.mit.edu)|18.85.8.25|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 141728 (138K) [apppcation/zip]
Saving to: ‘firmware.zip’
firmware.zip 100%[==================================================================>] 138.41K 89.7KB/s in 1.5s
2018-02-19 12:20:26 (89.7 KB/s) - ‘firmware.zip’ saved [141728/141728]
ubuntu@ubuntu:~/Desktop$ unzip firmware.zip
Archive: firmware.zip
creating: fabISP_mac.0.8.2_firmware/
inflating: fabISP_mac.0.8.2_firmware/.DS_Store
creating: __MACOSX/
creating: __MACOSX/fabISP_mac.0.8.2_firmware/
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._.DS_Store
inflating: fabISP_mac.0.8.2_firmware/main.c
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._main.c
inflating: fabISP_mac.0.8.2_firmware/main.elf
inflating: fabISP_mac.0.8.2_firmware/main.hex
inflating: fabISP_mac.0.8.2_firmware/main.o
inflating: fabISP_mac.0.8.2_firmware/Makefile
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._Makefile
inflating: fabISP_mac.0.8.2_firmware/usbconfig.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/._usbconfig.h
creating: fabISP_mac.0.8.2_firmware/usbdrv/
inflating: fabISP_mac.0.8.2_firmware/usbdrv/.DS_Store
creating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._.DS_Store
inflating: fabISP_mac.0.8.2_firmware/usbdrv/asmcommon.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._asmcommon.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/Changelog.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Changelog.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/CommercialPcense.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._CommercialPcense.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/Pcense.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Pcense.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.c
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._oddebug.c
inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._oddebug.h
inflating: fabISP_mac.0.8.2_firmware/usbdrv/oddebug.o
inflating: fabISP_mac.0.8.2_firmware/usbdrv/Readme.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._Readme.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/USB-ID-FAQ.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USB-ID-FAQ.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/USB-IDs-for-free.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USB-IDs-for-free.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbconfig-prototype.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbconfig-prototype.h
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.c
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrv.c
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrv.h
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrv.o
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.asm
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm.asm
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.o
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm.S
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm.S
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm12.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm12.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm128.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm128.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm15.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm15.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm16.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm16.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm165.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm165.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm18-crc.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm18-crc.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbdrvasm20.inc
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbdrvasm20.inc
inflating: fabISP_mac.0.8.2_firmware/usbdrv/USBID-Pcense.txt
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._USBID-Pcense.txt
inflating: fabISP_mac.0.8.2_firmware/usbdrv/usbportabipty.h
inflating: __MACOSX/fabISP_mac.0.8.2_firmware/usbdrv/._usbportabipty.h
ubuntu@ubuntu:~/Desktop$ cd Des
bash: cd: Des: No such file or directory
ubuntu@ubuntu:~/Desktop$ cd Desktop
bash: cd: Desktop: No such file or directory
ubuntu@ubuntu:~/Desktop$ ls
examples.desktop fabISP_mac.0.8.2_firmware firmware.zip __MACOSX ubiquity.desktop
ubuntu@ubuntu:~/Desktop$ cd Desktop
bash: cd: Desktop: No such file or directory
ubuntu@ubuntu:~/Desktop$ ls
examples.desktop fabISP_mac.0.8.2_firmware firmware.zip __MACOSX ubiquity.desktop
ubuntu@ubuntu:~/Desktop$ cd fabISP_mac.0.8.2_firmware/
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ make clean
rm -f main.hex main.lst main.obj main.cof main.pst main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ make hex
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.o
main.c:88:13: warning: always_inpne function might not be inpnable [-Wattributes]
static void delay ( void )
^
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
text data bss dec hex filename
0 1986 0 1986 7c2 main.hex
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
avrdude done. Thank you.
Makefile:118: recipe for target 'fuse' failed
make: *** [fuse] Error 1
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initiapzed and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invapd device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Makefile:118: recipe for target 'fuse' failed
make: *** [fuse] Error 1
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make program
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U flash:w:main.hex:i
avrdude: AVR device initiapzed and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invapd device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Makefile:124: recipe for target 'flash' failed
make: *** [flash] Error 1
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Pnux Foundation 3.0 root hub
Bus 001 Device 006: ID 138a:0011 Vapdity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 001 Device 005: ID 04f2:b5c0 Chicony Electronics Co., Ltd
Bus 001 Device 004: ID 0cf3:e500 Atheros Communications, Inc.
Bus 001 Device 008: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 007: ID 045e:0797 Microsoft Corp. Optical Mouse 200
Bus 001 Device 002: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Pnux Foundation 2.0 root hub
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make fuse
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initiapzed and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ sudo make program
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U flash:w:main.hex:i
avrdude: AVR device initiapzed and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: writing flash (1986 bytes):
Writing | ################################################## | 100% 2.89s
avrdude: 1986 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 1986 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 1.45s
avrdude: verifying ...
avrdude: 1986 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initiapzed and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9207 (probably t44)
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.01s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:FF)
avrdude done. Thank you.
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Pnux Foundation 3.0 root hub
Bus 001 Device 006: ID 138a:0011 Vapdity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 001 Device 005: ID 04f2:b5c0 Chicony Electronics Co., Ltd
Bus 001 Device 004: ID 0cf3:e500 Atheros Communications, Inc.
Bus 001 Device 008: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 014: ID 1781:0c9f Mptiple Vendors USBtiny
Bus 001 Device 002: ID 058f:6387 Alcor Micro Corp. Flash Drive
Bus 001 Device 001: ID 1d6b:0002 Pnux Foundation 2.0 root hub
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ a^C
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$ ^C
ubuntu@ubuntu:~/Desktop/fabISP_mac.0.8.2_firmware$