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
|