Quelltext /~heha/Mikrocontroller/LEDs/WS2812.zip/firmware/Makefile

# Project: WS2812-LEDs bei Stromzufuhr einschalten (aus EEPROM) sowie umprogrammieren (über USB)
# Author: Henrik Haftmann
# Creation Date: 151018
# Tabsize: 8, Encoding: UTF-8, LineEnds: LF
# ../usbdrv == V-USB mit meinen Änderungen für Interrupt an D- für Low-Power,
# hier: http://www.tu-chemnitz.de/~heha/basteln/PC/FunkUsb/FunkUsb.zip/usbdrv/

P = WS2812
D = attiny85
F = 16500000
AVRDUDE = avrdude -c pony-stk200 -P lpt1 -p $D -E noreset
USBDRV  = ../usbdrv
C = avr-gcc -Wall -Os -I$(USBDRV) -I. -mmcu=$D -DF_CPU=$F
O = usbdrvasm.o $P.o

# Symbolische Ziele:
all: $P.hex
disasm: $P.lst
# Neu übersetzen bei „make fuse“, aber nicht bei „make program“
flash: $P.hex
	$(AVRDUDE) -U flash:w:$<:i

# Fuse High-Byte:
HFUSE = 0xD5
# 1 1 0 1  0 1 0 1
# ↑ ↑ ↑ ↑  ↑ └─┬─┘
# │ │ │ │  │   └────── BODLEVEL 2..0 (brownout trigger level → 2,7 V)
# │ │ │ │  └────────── EESAVE (behalte EEPROM bei Chip Erase → ja)
# │ │ │ └───────────── WDTON (stets Watchdog-Timer → nein)
# │ │ └─────────────── SPIEN (Serielle Programmierbarkeit → ja)
# │ └───────────────── DWEN (DebugWire → nein)
# └─────────────────── RSTDISBL (Reset als I/O → nein)
#
# Fuse Low-Byte:
LFUSE = 0xE1
# 1 1 1 0  0 0 0 1
# ↑ ↑ └┬┘  └──┬──┘
# │ │  │      └─────── CKSEL 3..0 (Taktauswahl → HF-PLL)
# │ │  └────────────── SUT 1..0 (Hochlaufzeit → schnell mit BOD)
# │ └───────────────── CKOUT (Taktausgang → nein)
# └─────────────────── CKDIV8 (Taktteiler durch 8 → nein)
fuse:
	$(AVRDUDE) -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m

program:
	$(AVRDUDE) -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m -U flash:w:$P.hex:i

clean:
	rm -f $P.elf $P.lst $O

# Datei-Ziele:
$P.elf: $O
	$C -o $@ $^
# Muss das alte avr-size sein, neuere haben keine Option -C mehr. Blöd.
	avr-size --mcu=$D -C $@

# Angeblich kann avrdude auch ELF-Dateien entgegennehmen, das würde avr-objcopy ersparen.
$P.hex: $P.elf
	rm -f $@
	avr-objcopy -j .text -j .data -O ihex $< $@

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

$P.o: $P.c Makefile usbconfig.h
	$C -c $< -o $@

usbdrvasm.o: $(USBDRV)/usbdrvasm.S Makefile usbconfig.h
	$C -c $< -o $@
Vorgefundene Kodierung: UTF-80