# =====================================================================
#  Makefile pre projekt "Zamok na kod" (avr-gcc)
#  Cielovy procesor: ATmega328P @ 16 MHz (Arduino UNO)
#
#  Pouzitie:
#     make            - prelozi projekt (vytvori zamok.hex)
#     make flash      - nahra program do Arduina (uprav PORT nizsie!)
#     make clean      - zmaze vygenerovane subory
# =====================================================================

MCU      = atmega328p
F_CPU    = 16000000UL

# Port, na ktorom je pripojene Arduino:
#   Windows:  COM3, COM4, ...
#   Linux:    /dev/ttyUSB0  alebo  /dev/ttyACM0
#   macOS:    /dev/cu.usbserial-XXXX
PORT     = /dev/ttyUSB0
# Programmer pre bootloader Arduino UNO (puvodne) je "arduino".
PROGRAMMER = arduino
BAUD     = 115200

# Zdrojove subory (hlavny program + kniznice z cviceni)
SRC      = sem_projekt.c uart.c
TARGET   = sem_projekt

CC       = avr-gcc
OBJCOPY  = avr-objcopy
CFLAGS   = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -Os -Wall -std=gnu99

# ---------------------------------------------------------------------
all: $(TARGET).hex

$(TARGET).elf: $(SRC)
	$(CC) $(CFLAGS) -o $@ $(SRC)

$(TARGET).hex: $(TARGET).elf
	$(OBJCOPY) -O ihex -R .eeprom $< $@
	avr-size --mcu=$(MCU) -C $(TARGET).elf

flash: $(TARGET).hex
	avrdude -p $(MCU) -c $(PROGRAMMER) -P $(PORT) -b $(BAUD) -U flash:w:$(TARGET).hex:i

clean:
	rm -f $(TARGET).elf $(TARGET).hex

.PHONY: all flash clean
