terom@62: PROG = hello-dmx terom@47: terom@51: ELF = build/src/$(PROG).elf terom@50: HEX = build/src/$(PROG).hex terom@50: terom@50: all: $(HEX) terom@47: terom@48: build: terom@50: mkdir -p build/src terom@48: terom@62: dmx: dmx.hex terom@62: terom@47: ## Compiler terom@47: MCU = atmega328p terom@47: terom@47: # CPU clock frequency terom@47: CPU = 16000000 terom@64: STD = c99 terom@47: terom@47: CC = avr-gcc terom@48: CPPFLAGS = -DF_CPU=$(CPU)UL terom@64: CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g terom@47: terom@50: build/%.elf: %.c terom@48: $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $*.c terom@48: $(CC) -MM $(CPPFLAGS) -MT $@ -MF build/$*.d $*.c terom@48: terom@48: # existing .d files for rebuilding existing .o's terom@51: -include $(wildcard build/*/*.d) terom@47: terom@50: build/%.hex: build/%.elf terom@47: avr-objcopy -O ihex -R .eeprom $< $@ terom@47: terom@50: .PRECIOUS: build/%.elf terom@47: terom@51: dump: $(ELF) terom@51: avr-objdump -d $(ELF) terom@51: terom@47: ## Assembler terom@5: AS = avra terom@5: ASFLAGS = terom@5: terom@47: %.hex: %.s terom@47: $(AS) $(ASFLAGS) $< terom@47: mv $<.hex $@ terom@47: terom@47: ## Flashing terom@47: # Arduino Duemilanove terom@5: AD_PART = m328p terom@5: AD_PROG = arduino terom@5: AD_BAUD = 57600 terom@43: AD_PORT = /dev/arduino terom@5: terom@5: AD = avrdude terom@5: ADFLAGS = -p $(AD_PART) -c $(AD_PROG) -b $(AD_BAUD) -P $(AD_PORT) terom@5: terom@50: upload: $(HEX) terom@17: $(AD) $(ADFLAGS) -U flash:w:$< terom@5: terom@47: ## Console terom@10: SERIAL_BAUD = 9600 terom@10: SERIAL_FLOW = n terom@10: SERIAL_PARITY = n terom@10: SERIAL_BITS = 8 terom@10: SERIAL_PORT = $(AD_PORT) terom@10: terom@10: SERIAL_TERM = picocom terom@10: SERIAL_FLAGS = -b $(SERIAL_BAUD) -f $(SERIAL_FLOW) -p $(SERIAL_PARITY) -d $(SERIAL_BITS) terom@10: terom@47: console: terom@10: $(SERIAL_TERM) $(SERIAL_FLAGS) $(SERIAL_PORT) terom@10: