TARGET  = main
SRCS   := $(shell find -name '*.c')
FILES   = $(SRCS:%.c=%) #main uart avrIOhelper/io-helper #uart#hier alle c-Datein reinschreiben, trennung durch "  " und ohne .c-Endung
MCU     = atmega328p 
PROGC	= m328p
CC      = avr-gcc
#TOOL    = stk500 -P /dev/ttyUSB0
#TOOL    = atmelice_isp
TOOL    = avrispmkii
#TOOL    = usbasp-clone

BUILDDIR = Builds

DEFINES = -DF_CPU=2000000UL -DLCD_PORT=PORTD -DLCD_DDR=DDRD -DLCD_RS=4 -DLCD_RW=7 -DLCD_EN=5 -DLCD_D0=0 -DLCD_D1=1 -DLCD_D2=2 -DLCD_D3=3

CFLAGS  =-mmcu=$(MCU) -O2 -Wall -Wpedantic $(DEFINES) -std=c99 -ffunction-sections -fdata-sections -Ii2c_peter
LDFLAGS =-mmcu=$(MCU) -Wl,--gc-sections

LDFILES = $(foreach FILE,$(FILES),$(BUILDDIR)/$(FILE).o)

all: clean $(BUILDDIR)/$(TARGET).elf

$(BUILDDIR)/%.o: %.c
	mkdir -p $(dir $@)
	$(CC) $(CFLAGS) -c $< -o $(BUILDDIR)/$*.o

$(BUILDDIR)/$(TARGET).elf: $(LDFILES)
	mkdir -p $(dir $@)
	$(CC) $(LDFLAGS) $(LDFILES) -o $(BUILDDIR)/$(TARGET).elf

$(BUILDDIR)/$(TARGET).hex : $(BUILDDIR)/$(TARGET).elf
	 avr-objcopy -j .data -j .text -O ihex $< $@

fuse: 
	avrdude -p $(PROGC) -c $(TOOL) -U lfuse:w:0xE8:m -U hfuse:w:0xD1:m

load: $(BUILDDIR)/$(TARGET).hex
	avrdude -p $(PROGC) -c $(TOOL) -U flash:w:$(BUILDDIR)/$(TARGET).hex -v -B 125kHz

program: clean load

reset:
	avrdude -p $(PROGC) -c $(TOOL)
	
size: $(BUILDDIR)/$(TARGET).elf
	avr-size -C --mcu=$(MCU) $(BUILDDIR)/$(TARGET).elf

.PHONY=clean
clean:
	rm -rf $(BUILDDIR)


#Fuse m1284p external Osz. Long startuptime
#  avrdude -c usbasp-clone -p m1284p -U lfuse:w:0xff:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m

#Fuse m1284p internal Osz. Long startuptime
#  avrdude -c usbasp-clone -p m1284p -U lfuse:w:0xe2:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m


