aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile
blob: af7e527cab264aae289cb9e394c802f2589d074a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
MCU := attiny43u
F_CPU := 4000000UL
AVRDUDE := avrdude -p t43u -c ft2232h -P usb -B 10
OSCCAL_INPUT_FREQ := 32768UL
OSCCAL_FREQ_CYCLES := 40
OSCCAL_MOSI_PIN := PB4
OSCCAL_MISO_PIN := PB5

TARGET := main
SRC := main.c
OBJ := $(SRC:.c=.o) osccal_asm.o
SU := $(SRC:.c=.su)

CC := avr-gcc
OBJCOPY := avr-objcopy
MEM_REPORT := ./memory_report.sh

CFLAGS := -mmcu=$(MCU) -DF_CPU=$(F_CPU) -Os -std=gnu11 -Wall -Wextra -Wpedantic -fstack-usage
CFLAGS += -DFREQ_CYCLES=$(OSCCAL_FREQ_CYCLES) -DINPUT_FREQ=$(OSCCAL_INPUT_FREQ)
CFLAGS += -DMOSI=$(OSCCAL_MOSI_PIN) -DMISO=$(OSCCAL_MISO_PIN)

.PHONY: all clean mem

all: $(TARGET).hex

mem: $(TARGET).elf $(SU) $(MEM_REPORT)
	$(MEM_REPORT) --elf $(TARGET).elf --mcu $(MCU) $(foreach su,$(SU),--su $(su))

$(TARGET).hex: $(TARGET).elf
	$(OBJCOPY) -O ihex -R .eeprom $< $@

$(TARGET).elf: $(OBJ)
	$(CC) $(CFLAGS) -o $@ $^

DEPS := usi_uart_45.h Makefile

%.o %.su: %.c $(DEPS)
	$(CC) $(CFLAGS) -c -o $*.o $<

osccal_asm.o: osccal_asm.S Makefile
	$(CC) $(CFLAGS) -x assembler-with-cpp -c -o $@ $<

clean:
	rm -f $(OBJ) $(SU) $(TARGET).elf $(TARGET).hex

install: $(TARGET).hex
	# Enable EESAVE
	$(AVRDUDE) -U hfuse:w:0xd7:m
	# Erase chip and write flash
	$(AVRDUDE) -U flash:w:$(TARGET).hex:i

calibrate:
	./osccal_ftdi.py

serialize:
	serial=$$(cat next_serial.txt); \
	printf 'write eeprom 0x01 0x%02X\nquit\n' "$$((serial))" | $(AVRDUDE) -t && \
	printf '%d\n' "$$((serial + 1))" > next_serial.txt