Skript file: /~heha/mb-iwp/FlyStick/Firmware.zip/HID-Joystick/Makefile

# Makefile für das Projekt VR-FlyStick (Variante B: USB-HID-Joystick)

## General Flags
PROJECT = fs-b
DEVICE  = attiny44
F_CPU   = 12800000
USBDRV  = ../../Durchflussmesser/usbdrv
COMPILE = avr-gcc.exe -Wall -Os -I$(USBDRV) -I. -mmcu=$(DEVICE) -D F_CPU=$(F_CPU)
AVRDUDE = avrdude -c pony-stk200 -P lpt1 -p $(DEVICE) -E noreset

OBJECTS = usbdrv.o usbdrvasm.o $(PROJECT).o

EFUSE = 0xFF
# x x x x  x x x 1 ←─ SELFPRGEN	(Self-Programming Enable: NO)

HFUSE = 0xD5
# 1 1 0 1  0 1 0 1
# ↑ ↑ ↑ ↑  ↑ └─┴─┴──* BODLEVEL	(Brown-Out Detector trigger level: 2.7 V)
# │ │ │ │  └────────* EESAVE	(Preserve EEPROM over chip erase: YES)
# │ │ │ └──────────── WDTON	(Watchdog Timer always on: NO)
# │ │ └────────────── SPIEN	(Serial Programming Enable: YES)
# │ └──────────────── DWEN	(DebugWire Enable: NO)
# └────────────────── RSTDISBL	(External Reset Disable: NO)

LFUSE = 0xC2
# 1 1 0 0  0 0 1 0
# ↑ ↑ └┬┘  └─┴─┴─┴─── CKSEL	(Oscillator selection: RC oscillator 8 MHz)
# │ │  └────────────* SUT	(Start-up time: 0.5 µs, minimum)
# │ └──────────────── CKOUT	(Clock Output Enable: NO)
# └─────────────────* CKDIV8	(Divide clock by 8: NO)

all: $(PROJECT).hex $(PROJECT).lst

disasm: $(PROJECT).lst

$(PROJECT).o: $(PROJECT).c Makefile usbconfig.h
	$(COMPILE) -c $< -o $@

usbdrv.o: $(USBDRV)/usbdrv.c Makefile usbconfig.h
	$(COMPILE) -c $< -o $@
	
usbdrvasm.o: $(USBDRV)/usbdrvasm.S Makefile usbconfig.h
	$(COMPILE) -c $< -o $@
	
$(PROJECT).elf: $(OBJECTS)
	$(COMPILE) -o $@ $(OBJECTS)

%.hex: $(PROJECT).elf
	avr-objcopy -j .text -j .data -O ihex $< $@
	@avr-size $<

%.lst: $(PROJECT).elf
	avr-objdump -d $< > $@

.PHONY: clean program fuse flash
clean:
	-rm -rf $(OBJECTS) $(PROJECT).elf $(PROJECT).map $(PROJECT).lst

program:
	$(AVRDUDE) -U flash:w:$(PROJECT).hex:i

fuse:
	$(AVRDUDE) -U efuse:w:$(EFUSE):m -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m

flash: $(PROJECT).hex program

verify:
	$(AVRDUDE) -U flash:v:$(PROJECT).hex
Detected encoding: UTF-80