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