# 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-8 | 0
|