# Processortyp M fuer Compiler, N fuer avrdude:
#M=atmega8
#N=m8
#M=atmega328p
#N=m328p
#M=atmega328pb
#N=m328pb
#M=atmega1284p
#N=m1284p
M=atmega2560
N=m2560

# Compileraufrufe:
C=avr-gcc -mmcu=$M -Wall -O3 -c  # -Os (kompakter) oder -O3 (schneller)
A=avr-as
L=avr-gcc -mmcu=$M -Wall -O3

# 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: audioverz.hex

audioverz.hex: audioverz.cc lcdmodul2.h fasti2c.h fasti2c.cc
	$L audioverz.cc -o audioverz.elf
	avr-objcopy -O ihex -R .eeprom audioverz.elf audioverz.hex
	avr-objdump -h -S audioverz.elf > audioverz.lss

#lcdmodul2.o:  lcdmodul2.h lcdmodul2.c
#	$C lcdmodul2.c -o lcdmodul2.o

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

arduino:
	cp -p audioverz.cc audioverz/audioverz.ino
	cp -p fasti2c.h audioverz/
	cp -p fasti2c.cc audioverz/fasti2c.hh

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

# Fuses fuer Quarz, fuer ATmega8, ATmega32, ATmega328P, oder ATmega328PB:
fusesetzenQuarz:
	avrdude -p $N -c $P -P $(TTY) -U lfuse:w:0xFF:m
	avrdude -p $N -c $P -P $(TTY) -U hfuse:w:0xD9:m

# Fuses fuer 8MHz, fuer ATmega328P oder ATmega328PB:
fusesetzenMega328P:
	avrdude -p $N -c $P -P $(TTY) -U lfuse:w:0xE2:m
	avrdude -p $N -c $P -P $(TTY) -U hfuse:w:0xD9:m

# Fuses fuer 16MHz, fuer ATmega2650, Voreinstellungen vom ArduinoMega2650-Board
fusesetzenMega2650:
	avrdude -p $N -c $P -P $(TTY) -U lfuse:w:0xFF:m
	avrdude -p $N -c $P -P $(TTY) -U hfuse:w:0xD8:m
#	avrdude -p $N -c $P -P $(TTY) -U efuse:w:0xFD:m

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

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