Skript file: /~heha/hsn/dlo/DLO_DeluxeUSB.zip/DeluxeUSBmux2/firmware/Makefile

PROJECT = DeluxeUSBmux2
DEVICE  = attiny2313
F_CPU   = 12000000 # in Hz
AVRDUDE = avrdude -c pony-stk200 -P lpt1 -p $(DEVICE)

CFLAGS  = -Iusbdrv -I.
OBJECTS = $(PROJECT).o usbdrv/usbdrvasm.o
#usbdrv/usbdrv.o 

COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE)

############################## ATtiny2313 ###############################
# ATtiny2313 FUSE_L (Fuse low byte):
# 0xEE = 1 1 1 0   1 1 1 0
#        ^ ^ \+/   \--+--/
#        | |  |       +------- CKSEL 3..0 (clock selection -> crystal)
#        | |  +--------------- SUT 1..0 (fastest startup possible)
#        | +------------------ CKOUT (clock output on CKOUT pin -> disabled)
#        +-------------------- CKDIV8 (divide clock by 8 -> don't divide)
# ATtiny2313 FUSE_H (Fuse high byte):
# 0xDB = 1 1 0 1   1 0 1 1
#        ^ ^ ^ ^   \-+-/ ^
#        | | | |     |   +---- RSTDISBL (disable external reset -> enabled)
#        | | | |     +-------- BODLEVEL 2..0 (brownout trigger level -> 2.7V)
#        | | | +-------------- WDTON (watchdog timer always on -> no)
#        | | +---------------- SPIEN (enable serial programming -> enabled)
#        | +------------------ EESAVE (preserve EEPROM on Chip Erase -> preserve)
#        +-------------------- DWEN (debug wire enable)
#
LFUSE = 0xEE
HFUSE = 0xDB
EFUSE = 0xFF

all: $(PROJECT).hex

help:
	@echo "make all ....... to build DeluxeUSBmux2.hex out of source files"
	@echo "make prog ...... to flash fuses and firmware"
	@echo "make fuse ...... to flash the fuses"
	@echo "make flash ..... to flash the firmware"
	@echo "make clean ..... to delete objects and hex file"
	@echo "make disasm .... create DeluxeUSBmux2.dis"

# rule for programming fuse bits only:
fuse:
	$(AVRDUDE) -U efuse:w:$(EFUSE):m -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m

# rule for uploading firmware, compile if necessary:
flash: $(PROJECT).hex
	$(AVRDUDE) -U flash:w:$<:i

# program a fresh chip without compiling, only one invocation of avrdude
prog:
	$(AVRDUDE) -U efuse:w:$(EFUSE):m -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m -U flash:w:$(PROJECT).hex:i

# rule for deleting dependent files (those which can be built by Make):
clean:
	rm -f $(PROJECT).hex $(PROJECT).lst $(PROJECT).elf *.o usbdrv/*.o

# Generic rule for compiling C files:
.c.o:
	$(COMPILE) -c $< -o $@

# Generic rule for assembling Assembler source files:
.S.o:
	$(COMPILE) -x assembler-with-cpp -c $< -o $@

# file targets:

$(PROJECT).elf: $(OBJECTS)
	$(COMPILE) -o $@ $(OBJECTS)

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

disasm:	$(PROJECT).elf
	avr-objdump -d $< > $(PROJECT).lst
Detected encoding: ASCII (7 bit)2