# Processortyp M fuer Compiler, N fuer avrdude:
#M=atmega328p
#N=m328p
M=atmega1284p
N=m1284p
FCPU=20000000UL  #mit 20MHz Quarz
#FCPU=19997600  #mit 20MHz Quarz ausgemessen
#FCPU=8000000  #mit internem Oszillator, 32768 Hz Quarz nur fuer Timer2

# Compileraufrufe:
C=avr-gcc -mmcu=$M -Wall -Os -c -DF_CPU=$(FCPU) 
A=avr-as
L=avr-gcc -mmcu=$M -Wall -Os -DF_CPU=$(FCPU) 

# fuer avrdude-Aufruf unter Linux:
TTY=/dev/ttyUSB0
# fuer avrdude-Aufruf unter MacOSX:
#TTY=/dev/tty.serial-0001

# verwendeter Programmer:
#P=avr910  #fuer mySmartUSB MK2
P=stk500v2 #fuer mySmartUSB light

all: wetterstation.hex

wetterstation.hex: wetterstation.c lcdmodul2.h lcdmodul2.o i2c.o bme280.o
	$L wetterstation.c lcdmodul2.o i2c.o bme280.o -o wetterstation.elf
	avr-objcopy -O ihex -R .eeprom wetterstation.elf wetterstation.hex
	avr-objdump -h -S wetterstation.elf > wetterstation.lss

lcdmodul2.o:  lcdmodul2.h lcdmodul2.c
#	$C lcdmodul2.c -o lcdmodul2.o  #Arduino-Version
	$C -DPRINTVERSION lcdmodul2.c -o lcdmodul2.o  #Print-Version

i2c.o:  i2c.h i2c.c
	$C i2c.c -o i2c.o

bme280.o:  bme280.h bme280.c
	$C bme280.c -o bme280.o

check:
	avrdude -p $N -c $P -P $(TTY) -v
check2:
	avrdude -i 100 -p $N -F -c $P -P $(TTY) -v

# Fuses fuer 20MHz Quarz, fuer ATmega1284P:
fusesetzen:
	avrdude -p m1284p -c $P -P $(TTY) -U lfuse:w:0xFF:m
	avrdude -p m1284p -c $P -P $(TTY) -U hfuse:w:0xD1:m  #oder 0xD9

# Fuses fuer Quarz, fuer ATmega328P:
fusesetzen-328p:
#	avrdude -p m328p -c $P -P $(TTY) -U hfuse:w:0xDA:m  #auf Arduino Nano, mit Bootloader, mit EEPROM loeschen
#	avrdude -p m328p -c $P -P $(TTY) -U hfuse:w:0xD2:m  #auf Arduino Nano, fuer EEPROM nicht loeschen
	avrdude -p m328p -c $P -P $(TTY) -U lfuse:w:0xFF:m  #ohne Arduino, L-Fuse
	avrdude -p m328p -c $P -P $(TTY) -U hfuse:w:0xD9:m  #ohne Arduino, mit EEPROM loeschen
#	avrdude -p m328p -c $P -P $(TTY) -U hfuse:w:0xD1:m  #ohne Arduino, fuer EEPROM nicht loeschen

fusesetzen-328p-uhrenquarz:
#	avrdude -p m328p -c $P -P $(TTY) -U lfuse:w:0x62:m  #default fuer L-Fuse
#	avrdude -p m328p -c $P -P $(TTY) -U lfuse:w:0xD4:m  #so wird CPU-Takt auf 32768 Hz gesetzt!
	avrdude -p m328p -c $P -P $(TTY) -U lfuse:w:0xE2:m  #CPU-Takt auf 8 MHz interner Oszillator
#	avrdude -p m328p -c $P -P $(TTY) -U hfuse:w:0xD9:m  #default fuer H-Fuse ok

install: wetterstation.hex
	avrdude -p $N -c $P -P $(TTY) -U flash:w:wetterstation.hex:i

clean:
	rm -f *~ *.o *.elf
clean_all:
	rm -f *~ *.o *.elf *.lss *.hex
