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