Skript file: /~heha/basteln/Konsumgüter/Kram/GF22.zip/Makefile

# Makefile für den DDS-Generator
# F = 16000001 meint internen Oszillator, jede andere einen Quarz

P = dds
D = attiny25
#F = 20833333
F = 16000001
#PATH   := c:\programs\winavr\gcc492\bin;$(PATH)
#Der alte C++-Compiler (WinAVR2010) generiert hier den kürzeren Kode
COMPILE = avr-gcc.exe -Wall -Os -mmcu=$D -DF_CPU=$F -DLVISP
AVRDUDE = avrdude -c pony-stk200 -P lpt1 -p $D -E noreset

all: $P.elf $P.lst

disasm: $P.lst

sintab.S: sintab.awk
	awk -f $< > $@

$P.elf: main.cpp dds.S sintab.S Makefile
	$(COMPILE) -o $@ $(filter %.c %.cpp %.S,$^) -Wl,--section-start=.sintab=0x400
	@avr-size -C --mcu=$D $@

%.hex: $P.elf
	avr-objcopy -j .text -j .data -j .sintab -j .eeprom -j .fuse -j .signature -O ihex $< $@
#Die Reihenfolge .text - .data - .sintab ist wichtig!
#(Allerdings gibt's hier keine initialisierten Daten.)

%.lst: $P.elf
#-d disassembliert .sintab nicht
	avr-objdump -d $< > $@
	avr-strip $<

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

# Umweg über HEX-Datei erforderlich, um Sinustabelle in Flash einzubinden (kein Mitglied von .text)
program: $P.hex
	avrpp -ff -i $P.hex
#if F eq 16000001
# LFUSE = 0xB1
#else
# LFUSE = 0xFF
#endif
#	$(AVRDUDE) -U hfuse:w:0x57:m -U lfuse:w:$(LFUSE):m -U flash:w:$<:i

flash: $P.hex
	avrpp -i $<
#	$(AVRDUDE) -U flash:w:$<:i
Detected encoding: UTF-80