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

# Makefile für das Projekt VR-FlyStick (Variante C: Funksender 433 MHz)

## General Flags
PROJECT = fs-c
DEVICE  = attiny44
F_CPU   = 1000000
RF12    = ../rf12
COMPILE = avr-gcc.exe -Wall -Wno-parentheses -Os -I. -mmcu=$(DEVICE) -D F_CPU=$(F_CPU)
AVRDUDE = avrdude -c pony-stk200 -P lpt1 -p $(DEVICE) -E noreset

OBJECTS = $(PROJECT).o rf12.o

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

HFUSE = 0xD7
# 1 1 0 1  0 1 1 1
# ↑ ↑ ↑ ↑  ↑ └─┴─┴─── BODLEVEL	(Brown-Out Detector trigger level: NONE)
# │ │ │ │  └────────* 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 = 0x52
# 0 1 0 1  0 0 1 0
# ↑ ↑ └┬┘  └─┴─┴─┴─── CKSEL	(Oscillator selection: RC oscillator 8 MHz)
# │ │  └────────────* SUT	(Start-up time: 4 ms, medium)
# │ └──────────────── CKOUT	(Clock Output Enable: NO)
# └────────────────── CKDIV8	(Divide clock by 8: YES)

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

disasm: $(PROJECT).lst

$(PROJECT).o: $(PROJECT).c Makefile $(RF12)/rf12.h $(RF12)/Wireless_ID.h
	$(COMPILE) -c $< -o $@

rf12.o: $(RF12)/rf12.c Makefile $(RF12)/rf12.h rf12if.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 -E noreset
#Scheißbug! Zumindest bei dieser AVRDUDE-Version muss -E hinten stehen!

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