10 AVRDUDE_PROGRAMMER=arduino
12 CFLAGS=-Wall -Os -mmcu=$(MCU) -DUSE_LOGGING=1 -DF_CPU=16000000UL -std=gnu99
14 AVRDUDE_FLAGS= -p$(AVRDUDE_MCU) -c $(AVRDUDE_PROGRAMMER) -P /dev/ttyUSB0 -b 57600
23 WEB_DIR=/home/kas/html/board/
24 WEB_FILES=pcb-back.png pcb-front.png schematics.png handlebar.png
29 board.bottommask.gbr \
31 board.bottomsilk.gbr \
33 board.plated-drill.cnc
35 all: $(PROGRAM).hex $(PROGRAM).eep
38 rm -f board.cmd board.jpg board.net board.new.pcb board.pcb- \
39 board.png board.ps board.sch~ pcb-back.png pcb-front.png \
40 schematics.png *.gbr *.cnc \
41 $(PROGRAM).hex $(PROGRAM).eep $(PROGRAM).elf *.o *.s \
45 test -d $(WEB_DIR) && install -m 644 $(WEB_FILES) $(WEB_DIR)
47 board.pcb: board.sch board.prj
50 pcb-front.png: board.pcb
51 pcb -x png --dpi 150 --photo-mode board.pcb \
54 pcb-back.png: board.pcb
55 pcb -x png --dpi 150 --photo-mode --photo-flip-x board.pcb \
58 schematics.png: board.sch
59 gschem -s image.scm board.sch -o schematics.png
61 handlebar-big.png: handlebar.sch
62 gschem -s image.scm handlebar.sch -o handlebar-big.png
64 handlebar.png: handlebar-big.png
65 convert -crop 450x300+320+170 handlebar-big.png handlebar.png
67 gerber: $(GERBER_FILES)
69 $(GERBER_FILES): board.pcb
70 pcb -x gerber board.pcb
73 @sh -c 'D=board-`date +\%Y\%m\%d-\%H\%M` && mkdir $$D && \
74 cp board.top.gbr $$D/board.gtl && \
75 cp board.bottom.gbr $$D/board.gbl && \
76 cp board.topmask.gbr $$D/board.gts && \
77 cp board.bottommask.gbr $$D/board.gbs && \
78 cp board.topsilk.gbr $$D/board.gto && \
79 cp board.bottomsilk.gbr $$D/board.gbo && \
80 cp board.outline.gbr $$D/board.gko && \
81 cp board.plated-drill.cnc $$D/board.txt && \
82 zip -r $$D.zip $$D && \
83 echo "Done. Output in $$D.zip."; \
84 echo "You may also want to do git tag gerber-fab-$$D" '
88 program: $(PROGRAM).hex $(PROGRAM).eep
89 $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(PROGRAM).hex:i -U eeprom:w:$(PROGRAM).eep:i
91 program_flash: $(PROGRAM).hex
92 $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(PROGRAM).hex:i
94 program_eeprom: $(PROGRAM).eep
95 $(AVRDUDE) $(AVRDUDE_FLAGS) eeprom:w:$(PROGRAM).eep:i
98 $(AVRDUDE) $(AVRDUDE_FLAGS) -U eeprom:r:eeprom.raw:r
101 objdump: $(PROGRAM).elf
102 $(OBJDUMP) --disassemble $<
104 .PRECIOUS : $(OBJ) $(PROGRAM).elf
107 $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
110 $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
111 --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
114 $(CC) $(CFLAGS) $(OBJ) -o $@ $(LDFLAGS)
116 %.o: %.c lights.h Makefile
117 $(CC) -c $(CFLAGS) $< -o $@
119 %.s: %.c lights.h Makefile
120 $(CC) -S -c $(CFLAGS) $< -o $@
123 $(CC) -c $(CFLAGS) $< -o $@
128 ./version.pl > version.c
130 .PHONY: all clean dump_eeprom program program_flash program_eeprom objdump \