# This Makefile compiles and flashes four different programs:
# - led_on
# - button_contact
# - timer_test
# - button_toggle
# - button_serial
#
# To program a board, first make sure the PROGRAMMER variable is set correctly.
# (If you're using your own HTM(a)A programmer board, use usbtiny.) Each board
# will also have to have its fuses set once, which can be done by running
# "make program-fuses". Finally, run make program_<program_name>. For example,
# "make program_button_toggle" will build and flash the button_toggle program.

MMCU=attiny44
F_CPU = 20000000
CFLAGS=-mmcu=$(MMCU) -Wall -Os -DF_CPU=$(F_CPU) \
	-I external/OneWire \
	-I /usr/share/arduino/hardware/arduino/cores/arduino
#PROGRAMMER = atmelice_isp
PROGRAMMER = usbtiny

%.hex: %.elf
	avr-objcopy -O ihex $< $@;\
	avr-size --mcu=$(MMCU) --format=avr $@

#%.o: %.c
#	avr-g++ $(CFLAGS) -I./ -o $@ $<

program_%: %.hex
	avrdude -p t44 -P usb -c $(PROGRAMMER) -U flash:w:$<

external/OneWire/OneWire.o: external/OneWire/OneWire.cpp external/OneWire/OneWire.h
	avr-g++ -c $(CFLAGS) -I./ -o $@ $<

button_serial.o: button_serial.c external/OneWire/OneWire.h
	avr-g++ -c $(CFLAGS) -I./ -o $@ $<

button_serial.elf: button_serial.o OneWire.o
	avr-g++ $(CFLAGS) -o $@ $^

.PHONY: default
#default: program_button_serial
default: button_serial.hex

program-fuses:
	avrdude -p t44 -P usb -c $(PROGRAMMER) -U lfuse:w:0x5E:m