#Fernbedien-Adapter für Muldenkipper und Radlader
#2210xx Umstieg auf Binär- statt HEX-Datei
#221222 Umstieg auf ATmega328P. Achtung! Andere Fuses!
#230115 Umstieg auf Baudratenquarz, ohne Echtzeituhr
#Einbuchstabige Makros ersparen die runden Klammern beim Referenzieren
# Projekt
P = fba
#Device
D = atmega328p
# CPU-Frequenz: 115200 × 64: Baudratenquarz
F = 7372800
# EEPROM-Daten für spezifisches Fahrzeug: „Radlader“ oder „Muldenkipper“
M = Muldenkipper
#M = Radlader
#WinAVR-Verzeichnis, Compiler-Verzeichnis
V = c:/programme/WinAVR
PATH := $V/gcc1210/bin;$(PATH)
# Architektur-Präfix
A = avr-
W += -Wall
# Klammern sind keine Glückssache
W += -Wno-parentheses
# erforderlich für -std=c++11
W += -Wno-array-bounds
# erforderlich für -std=c++20
# W += -Wno-volatile
C = $Agcc $W -Os -mmcu=$D -D F_CPU=$F -std=c++11
X = avrdude -c arduino -P com8 -p $D
Y = avrdude -c avrisp2 -P usb -p $D
S = $V/bin/avr-size -C --mcu=$D
all: $P.flash $P.eeprom $P.lst
$P.o: $P.cpp
$C -c -o $@ $<
#Ohne Objektdateien als Zwischenschritt (langsamer aber schnell genug)
$P.elf: *.cpp *.S $M.cxx *.h Makefile
$C -o $@ $(filter %.cpp %.S %.cxx,$^)
$S $@
#-Wl,-u,vfprintf -lprintf_min
%.flash: %.elf
$Aobjcopy -j .text -j .data -O binary $< $@
%.eeprom: %.elf
$Aobjcopy -j .eeprom -O binary $< $@
# Nur Codezeilen (Flash-Adresse: Opcode)
EX1 = :[[:space:]]
# Nur interessierende Segmente (in der Zeile unten eingefügt würde make an den '|' Kommandos trennen)
EX2 = \.(data|bss|noinit)
%.lst: %.elf
$Aobjdump -d $< | grep "$(EX1)" > $@
$Aobjdump -t $< | grep "$(EX2)" | sort >> $@
$Astrip $<
flash: $P.flash
$Y -e -U $@:w:$<:r
eeprom: $P.eeprom
$Y -U $@:w:$<:r
read.fuse:
$Y -v -U lock:r:-:i
#Die Option -v spuckt u.a. die Fuses aus
read.eeprom:
$Y -U eeprom:r:$@:r
read.flash:
$Y -U flash:r:$@:r
#eesave: EEPROM-Inhalt bei Chip-Erase behalten
#bodlevel: BrownOut-Reset aktivieren (eh' kein Stromsparer) bei 2,7 V
#ckdiv8: Takt nicht durch 8 teilen!
fuse:
$Y -U e$@:w:0xFD:m -U h$@:w:0xD1:m -U l$@:w:0xDD:m
program: fuse flash eeprom
.PHONY: read.*
Detected encoding: UTF-8 | 0
|