# makefile
#
# geschrieben von Steffen von der mikrocontrollerspielwiese.de
# 
# license: GPL (http://www.gnu.org/licenses/gpl.txt)
#
# have fun!
#


MCU=attiny2313
CC=avr-gcc
OBJCOPY=avr-objcopy

Mikrocontrollername_fuer_avrdude=t2313

#-------------------
#vergiss nicht, hier Deinen Programmieradapter auszuwaehlen, 
#indem Du die entsprechende Raute setzt oder wegnimmst!

#der parallele Programmer der Mikrocontrollerspielwiese:
PROGRAMMER = -c dapa

#der USB-Programmer der Mikrocontrollerspielwiese:
#PROGRAMMER = -c usbasp

#-------------------
# optimize for size:
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues

#-------------------
all: test1.hex

#-------------------
help: 
	clear
	@echo
	@echo "Moegliche Befehle:"
	@echo "		make - compiliert Dein Programm und erzeugt die .hex-Datei"
	@echo "		make all - wie make"
	@echo "		make load - compiliert Dein Programm und schiebt es in den AVR"
	@echo "		make clean - loescht die beim Compilieren erzeugten Dateien"
	@echo
	@echo "		make help - zeigt diesen Hilfetext"
	@echo
	@echo "		make rdfuses - gibt Dir Informationen ueber die gesetzten Fusebits und mehr"
	@echo "		make wrfuse4mhz - internen Oszillator auf 4 MHz setzen"
	@echo "		make wrfuse8mhz - internen Oszillator auf 8 MHz setzen"
	@echo "		make wrfusedefaults - Fuses auf Werkseinstellungen zuruecksetzen"
	@echo
	
#-------------------
test1.hex : test1.out 
	$(OBJCOPY) -R .eeprom -O ihex test1.out test1.hex 
test1.out : test1.o 
	$(CC) $(CFLAGS) -o test1.out -Wl,-Map,test1.map test1.o 
test1.o : test1.c 
	$(CC) $(CFLAGS) -Os -c test1.c
	
#------------------
load: test1.hex
	avrdude -p $(Mikrocontrollername_fuer_avrdude) $(PROGRAMMER) -e -U flash:w:"test1.hex"
	

#-------------------
# fuse byte settings attiny2313:
# Werkseinstellungen sind:
#   
#  Low Fuse      	= 0x64 
#  High Fuse     	= 0xdf
#  Extended Fuse 	= 0xff
#
# internen Oszillator setzen:
#  4 MHz: Low Fuse = 0x62 
#  8 MHz: Low Fuse = 0x64 

#  Check this with make rdfuses
rdfuses:
	avrdude -p t2313 $(PROGRAMMER) -v -q	

# Fusebits zu Werkseinstellungen zuruecksetzen
wrfusedefaults:
	avrdude -p $(Mikrocontrollername_fuer_avrdude) $(PROGRAMMER) -u -v -U lfuse:w:0x64:m
	avrdude -p $(Mikrocontrollername_fuer_avrdude) $(PROGRAMMER) -u -v -U hfuse:w:0xdf:m
	avrdude -p $(Mikrocontrollername_fuer_avrdude) $(PROGRAMMER) -u -v -U efuse:w:0xff:m
	
# Frequenz des internen Oszillators auf 4 MHz setzen
wrfuse4mhz:
	avrdude -p $(Mikrocontrollername_fuer_avrdude) $(PROGRAMMER) -u -v -U lfuse:w:0x62:m

# Frequenz des internen Oszillators auf 8 MHz setzen
wrfuse8mhz:
	avrdude -p $(Mikrocontrollername_fuer_avrdude) $(PROGRAMMER) -u -v -U lfuse:w:0x64:m
	
	
#-------------------
clean:
	rm -f *.o *.map *.out *.hex
	
#-------------------
