week 5
ASSIGNMENTDue to a misunderstanding of our University administration,
we didn't receive the pcb milling machine on time.
For this week, I decided to document the technique that we used to make the fab ISP before the course.
This technique uses simple machines, devices, materials, and products.
It is more close to the way I want to finalize my final project.
To complete the process, you need: a laser printer, glossy paper, an iron and chemical products for etching.
I also learned to weld, to read the circuit, understood part of it and recognized the components .
The new machine came today, so we decided with Denis, my instructor to mil another fab ISP in the coming weeks.
For this assignment, I used of the "iron technique"(see explanation below),.
A few words about what needs to be done for evacuating the 2 dangerous products involved.
For the disposal of chemical waste, Nicolas who showed me this technique of PCB manufacturing uses the services of Proxy chimik mobile.
He labels the products with a sticker so that the treatment is adequate to the product.
And that's what he did when evacuating ferric chloride and hydrochloric acid.
Back to production of the pcb ...
I downloaded the png files.
One for the contour of the fab ISP,one for the circuit, from this website.
Those files are coming from a
tutorial to make a fab ISP
I had to invert the circuit to have the path from white to black.
I did it on Inskape, using the fill tool after transforming the png in vector(see process on week 3: Vinyl cutting)
I had to put some permanent marker on a part of the electronic circuit.
Because a small parts of the circuits was away
I put the board in a solution of ferric chloride and hydrochloric acid
It took 15 minutes to take away the copper, not protected by the laser ink.
After putting some flux on the circuit
I put welding on the circuit to protect it
To cut the fab ISP, I first traced the cut contour on a piece of cardboard.
By transparency I could place the circuit to be cut.
/ usr / bin / ruby -e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
cd /users/victorlevy/documents/fab ISP_0.8.2_firmware
MCU = attiny45 PROGRAMMER ?= arduino
$ make
On the terminal: iMac-de-Victor:documents victorlevy$ cd /users/victorlevy/documents/fts_firmware_bdm_v1 iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ pwd /users/victorlevy/documents/fts_firmware_bdm_v1 iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make clean rm -f usbdrv/*.o rm -f *.hex *.elf *.o iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make avr-gcc -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c main.c -o main.o main.c:109:13: warning: always_inline function might not be inlinable [-Wattributes] static void delay ( void ) ^ avr-gcc -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o avr-gcc -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c usbdrv/oddebug.c -o usbdrv/oddebug.o avr-gcc -x assembler-with-cpp -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o avr-gcc -mmcu=attiny45 -o fts_firmware.elf main.o usbdrv/usbdrv.o usbdrv/oddebug.o usbdrv/usbdrvasm.o avr-size -C --mcu=attiny45 fts_firmware.elf AVR Memory Usage ---------------- Device: attiny45 Program: 2488 bytes (60.7% Full) (.text + .data + .bootloader) Data: 75 bytes (29.3% Full) (.data + .bss + .noinit) avr-objcopy -j .text -j .data -O ihex fts_firmware.elf fts_firmware.hex iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make flash avrdude -p attiny45 -c arduino -P usb e \ -U /dev/cu.usbmodem1421 avrdude: ser_open(): can't open device "usb": No such file or directory ioctl("TIOCMGET"): Inappropriate ioctl for device avrdude done. Thank you. make: * [flash] Error 1 iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make clean rm -f usbdrv/*.o rm -f *.hex *.elf *.o iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make avr-gcc -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c main.c -o main.o main.c:109:13: warning: always_inline function might not be inlinable [-Wattributes] static void delay ( void ) ^ avr-gcc -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o avr-gcc -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c usbdrv/oddebug.c -o usbdrv/oddebug.o avr-gcc -x assembler-with-cpp -mmcu=attiny45 -Wall -DF_CPU=16500000UL -I. -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Os -Iusbdrv -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o avr-gcc -mmcu=attiny45 -o fts_firmware.elf main.o usbdrv/usbdrv.o usbdrv/oddebug.o usbdrv/usbdrvasm.o avr-size -C --mcu=attiny45 fts_firmware.elf AVR Memory Usage ---------------- Device: attiny45 Program: 2488 bytes (60.7% Full) (.text + .data + .bootloader) Data: 75 bytes (29.3% Full) (.data + .bss + .noinit)
$ make flash
iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make flash avrdude -p attiny45 -c arduino -P usb e \ -U /dev/cu.usbmodem1421 avrdude: ser_open(): can't open device "usb": No such file or directory ioctl("TIOCMGET"): Inappropriate ioctl for device avrdude done. Thank you. make: * [flash] Error 1 iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make clean rm -f usbdrv/*.o rm -f *.hex *.elf *.o iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$ make flash avrdude -p attiny45 -c arduino -P usb e \ -U avrdude: ser_open(): can't open device "usb": No such file or directory ioctl("TIOCMGET"): Inappropriate ioctl for device avrdude done. Thank you. make: * [flash] Error 1 iMac-de-Victor:fts_firmware_bdm_v1 victorlevy$
# 'make' builds the .hex file. # 'make flash' uses the programmer to load it onto the target chip. # 'make fuses' programs the fuse bits on the target chip. # 'make rstdisbl' blows the reset fuse.
C:\Users\Administrateur\Desktop\fts_firmware_bdm_v1>make hex make: *** No rule to make target `hex'. Stop. C:\Users\Administrateur\Desktop\fts_firmware_bdm_v1>make flash avrdude -p attiny45 -c usbtiny -P usb -e \ -U flash:w:fts_firmware.hex avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.01s avrdude: Device signature = 0x1e9206 avrdude: erasing chip avrdude: reading input file "fts_firmware.hex" avrdude: input file fts_firmware.hex auto detected as Intel Hex avrdude: writing flash (2534 bytes): Writing | ################################################## | 100% 4.62s avrdude: 2534 bytes of flash written avrdude: verifying flash memory against fts_firmware.hex: avrdude: load data flash data from input file fts_firmware.hex: avrdude: input file fts_firmware.hex auto detected as Intel Hex avrdude: input file fts_firmware.hex contains 2534 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 2.63s avrdude: verifying ... avrdude: 2534 bytes of flash verified avrdude: safemode: Fuses OK avrdude done. Thank you.
C:\Users\Administrateur\Desktop\fts_firmware_bdm_v1>make fuses avrdude -p attiny45 -c usbtiny -P usb \ -U lfuse:w:0xE1:m -U hfuse:w:0xDD:m \ -U efuse:w:0xFF:m avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9206 avrdude: reading input file "0xE1" avrdude: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.03s avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0xE1: avrdude: load data lfuse data from input file 0xE1: avrdude: input file 0xE1 contains 1 bytes avrdude: reading on-chip lfuse data: Reading | ################################################## | 100% 0.01s avrdude: verifying ... avrdude: 1 bytes of lfuse verified avrdude: reading input file "0xDD" avrdude: writing hfuse (1 bytes): Writing | ################################################## | 100% 0.02s avrdude: 1 bytes of hfuse written avrdude: verifying hfuse memory against 0xDD: avrdude: load data hfuse data from input file 0xDD: avrdude: input file 0xDD contains 1 bytes avrdude: reading on-chip hfuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: 1 bytes of hfuse verified avrdude: reading input file "0xFF" avrdude: writing efuse (1 bytes): Writing | ################################################## | 100% 0.00s avrdude: 1 bytes of efuse written avrdude: verifying efuse memory against 0xFF: avrdude: load data efuse data from input file 0xFF: avrdude: input file 0xFF contains 1 bytes avrdude: reading on-chip efuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: 1 bytes of efuse verified avrdude: safemode: Fuses OK avrdude done. Thank you.
C:\Users\Administrateur\Desktop\fts_firmware_bdm_v1>make rstdisbl avrdude -p attiny45 -c usbtiny -P usb \ -U lfuse:w:0xE1:m -U hfuse:w:0x5D:m \ -U efuse:w:0xFF:m avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9206 avrdude: reading input file "0xE1" avrdude: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.01s avrdude: 1 bytes of lfuse written avrdude: verifying lfuse memory against 0xE1: avrdude: load data lfuse data from input file 0xE1: avrdude: input file 0xE1 contains 1 bytes avrdude: reading on-chip lfuse data: Reading | ################################################## | 100% 0.01s avrdude: verifying ... avrdude: 1 bytes of lfuse verified avrdude: reading input file "0x5D" avrdude: writing hfuse (1 bytes): Writing | ################################################## | 100% 0.02s avrdude: 1 bytes of hfuse written avrdude: verifying hfuse memory against 0x5D: avrdude: load data hfuse data from input file 0x5D: avrdude: input file 0x5D contains 1 bytes avrdude: reading on-chip hfuse data: Reading | ################################################## | 100% 0.00s avrdude: verifying ... avrdude: 1 bytes of hfuse verified avrdude: reading input file "0xFF" avrdude: writing efuse (1 bytes): Writing | ################################################## | 100% 0.01s avrdude: 1 bytes of efuse written avrdude: verifying efuse memory against 0xFF: avrdude: load data efuse data from input file 0xFF: avrdude: input file 0xFF contains 1 bytes avrdude: reading on-chip efuse data: Reading | ################################################## | 100% 0.01s avrdude: verifying ... avrdude: 1 bytes of efuse verified avrdude: safemode: Fuses OK avrdude done. Thank you. C:\Users\Administrateur\Desktop\fts_firmware_bdm_v1>