Skript file: /~heha/enas/Mikroskop/RA2.zip/Makefile

# Makefile für ATmega32U4-Firmware auf Arduino-Nachbauboard „Pro Micro“
# für Eigenbau-Automatisierung: Servomotoren und Laserdimmer sowie Matlab
# Zuständig: Susanne + Martin Hartmann, 32347
# Henrik Haftmann, 190418
P = RA2
D = atmega32u4
F = 8000000

PATH := c:\programs\winavr\gcc492\bin;$(PATH)

# Compiler und Linker:
C = avr-gcc -Wall -Wno-parentheses -Os -mmcu=$D -D F_CPU=$F -Wl,-u,vfprintf -lprintf_min
# -D DEBUG
#no-parentheses: Ich weiß selbst wo Klammern nötig sind
#no-array-bounds: Flash-Stringadressen nicht im Flash (0..7FFF)
#no-char-subscripts: Bytes als Array-Indizes sind okay für kleine Arrays

all: $P.lst

# Alle C++-Dateien sind (der Einfachheit halber) von allen Kopfdateien abhängig
$P.elf: main.cpp usb.cpp usb.h makefile
	$C -o $@ $(filter %.cpp,$^)
# Das alte avr-size aufheben! Das neue kann kein -C
	avr-size -C --mcu=$D $@

$P.hex: $P.elf
	avr-objcopy -j .text -j .data -O ihex $< $@

$P.lst: $P.elf
	avr-objdump -d $< > $@
	avr-strip $<

# via 4K-Atmel-Urlader (beim eHaJo-Board vorhanden)
flash-dfu: $P.hex
	dfu-programmer $D erase --force --suppress-validation
	dfu-programmer $D flash --force --suppress-validation $<
	dfu-programmer $D launch

# via 2K-Arduino-Urlader (bei allen Arduinos) — umständlicher
# COM-Port auf Kommandozeile (COM=com6) angeben
# ELF geht nicht (kommt nicht korrekt an), Ursache unbekannt. Blödes avrdude.
# Zum Urlader kommt man mit 2× RESET hintereinander, dann 8 s Zeit.
flash: $P.hex
	avrdude -p m32u4 -P $(COM) -c avr109 -U flash:w:$<
#BUGBUG: Aus irgendeinem rätselhaften Grund geht "make flash" nicht richtig,
#wenn $P.elf nicht aktuell ist, dann wird PATH nicht wirksam und es wird der veraltete avr-gcc gerufen,
#der Warnungen und größeren Code ausspuckt.

# via Parallelport und Strippen zu MISO, MOSI, SCK und RESET
# (zum Ersetzen des Urladers)
#	sc start giveio
#	avrdude -p m32u4 -P lpt1 -c pony-stk200 -U f:w:ATMega32U4-usbdevice_dfu-1_0_0.hex -U lfuse:w:0x5E:m -U hfuse:w:0x99:m -U efuse:w:0xC3:m -U lock:w:0xEC:m -E noreset
#	sc stop giveio

# 512-Byte-Urlader ubaboot (noch nicht ausgetestet)
flash-uba: $P.elf
	uba $<
Detected encoding: UTF-80