Skript file: /~heha/basteln/PC/FunkUsb/FunkUsb.zip/FunkUsb/com/Makefile

# FunkUsb, virtual COM port version
DEVICE=attiny45
AVRDUDE = avrdude -c pony-stk200 -P lpt1 -p $(DEVICE)
USBDRV = ../../usbdrv

COMPILE = avr-gcc -Wall -Os -I. -I$(USBDRV) -mmcu=$(DEVICE) -DF_CPU=16500000

OBJECTS = usbdrv.o usbdrvasm.o FunkUsb.o

# symbolic targets:
all: FunkUsb.hex
program: flash
disasm: FunkUsb.lst

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

flash: all
	$(AVRDUDE) -U flash:w:FunkUsb.hex:i


# Fuse high byte:
HFUSE = 0xD5
# 1 1 0 1  0 1 0 1
# ↑ ↑ ↑ ↑  ↑ └─┬─┘
# │ │ │ │  │   └────── BODLEVEL 2..0 (brownout trigger level → 2.7V)
# │ │ │ │  └────────── EESAVE (preserve EEPROM on Chip Erase → preserve)
# │ │ │ └───────────── WDTON (watchdog timer always on → disable)
# │ │ └─────────────── SPIEN (enable serial programming → enabled)
# │ └───────────────── DWEN (debug wire enable → disabled)
# └─────────────────── RSTDISBL (disable external reset → enabled)
#
# Fuse low byte:
LFUSE = 0xE1
# 1 1 1 0  0 0 0 1
# ↑ ↑ └┬┘  └──┬──┘
# │ │  │      └─────── CKSEL 3..0 (clock selection → HF PLL)
# │ │  └────────────── SUT 1..0 (BOD enabled, fast rising power)
# │ └───────────────── CKOUT (clock output on CKOUT pin → disabled)
# └─────────────────── CKDIV8 (divide clock by 8 → don't divide)

program:
	$(AVRDUDE) -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m -U flash:w:FunkUsb.hex:i

readcal:
	$(AVRDUDE) -U calibration:r:con:i

clean:
	rm -f FunkUsb.hex FunkUsb.lst FunkUsb.elf *.o

# file targets:
FunkUsb.elf: $(OBJECTS)
	$(COMPILE) -o $@ $(OBJECTS)
	avr-size --mcu=$(DEVICE) -C $@

FunkUsb.hex: FunkUsb.elf
	rm -f FunkUsb.hex FunkUsb.eep
	avr-objcopy -j .text -j .data -O ihex $< $@

FunkUsb.lst: FunkUsb.elf
	avr-objdump -d $< >$@
Detected encoding: UTF-80