Skript file: /~heha/hsn/crc16.zip/Makefile

# Makefile für CRC16-Demo
P = crc16
D = attiny13
F = 9600000
# Einbuchstabige Makros ersparen die lästigen Klammern

# So wird der gewünschte (neuere) Compiler vor den Suchpfad gesetzt
PATH := c:\programme\winavr\gcc530\bin;$(PATH)

# Architektur-Präfix (der auch mal "msp430-" oder "arm-none-eabi-" heißen kann)
A = avr-
C = $Agcc -Wall -Wno-parentheses -Wno-array-bounds -Os -mmcu=$D -DF_CPU=$F -std=c++14

#Y = avrdude -p $D -c pony-stk200 -P lpt1
#Hier steht ein avrisp zur Verfügung
Y = avrdude -c avrisp2 -P usb -p $D

# all = Bauziel wenn make ohne Ziel aufgerufen wird.
# Erwartungsgemäß Compiler- und Linkeraufruf, damit eine Echse herauskommt.
# In Programmer's Notepad durch WinAVR mit "Compile" belegt — ich hab's auf F7 gelegt
all: $P.lst

# Compile+link: „Ausführbare“ Datei generieren
%.elf: *.cpp Makefile
	$C -o $@ $(filter %.cpp,$^)
	$Asize $@

# Für avrdude Binärdatei generieren (Hex-Dateien haben bei mir ausgedient)
%.flash: %.elf
	$Aobjcopy -j .text -j .data -O binary $< $@

# Listing-Datei generieren
%.lst: %.elf
	$Aobjdump -d $< > $@
	$Astrip $<

# Chip-Programmierung mit avrpp
program-avrpp:
	avrpp -ff $P.elf

flash-avrpp: $P.elf
	avrpp $<

# flash = Bauziel für Programmer's Notepad, vorkonfiguriert durch WinAVR — ich hab's auf Strg+F5 gelegt
# Chip-Programmierung mit avrdude
flash: $P.flash
	$Y -e -U $@:w:$<:r

fuse:
	$Y -U e$@:w:0xFD:m -U h$@:w:0xD1:m -U l$@:w:0xDD:m

read.fuse:
	$Y -v -U lock:r:-:i

# program = Bauziel für Programmer's Notepad, vorkonfiguriert durch WinAVR — ich hab's auf F5 gelegt
# Es ist Geschmackssache ob man die Ziele "fuse" und "flash" trennt;
# bei Massenprogrammierung ist der doppelte Aufruf von avrdude besser zu vermeiden.
program: fuse flash

# Projektverzeichnis aufräumen
clean:
	$(RM) $P.flash $P.lst

# Liste der unechten Ziele
.PHONY : all clean program flash read.*

.PRECIOUS : $O $P.elf
Detected encoding: UTF-80