
# Makefile voor een ATtiny2313

MCU=attiny2313
CC=avr-gcc
OBJCOPY=avr-objcopy
TARGET=t2313
# optimize for size:
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues --save-temps
DAPA=-c dapa
HVSP=-c stk500hvsp -P avrdoper
DOPER=-c stk500v2 -P avrdoper

# -----------------BUILD-----------------

all: LichtbakTimer.hex

LichtbakTimer.hex : LichtbakTimer.out
	$(OBJCOPY) -R .eeprom -O ihex LichtbakTimer.out LichtbakTimer.hex
LichtbakTimer.out : LichtbakTimer.o
	$(CC) $(CFLAGS) -o LichtbakTimer.out -Wl,-Map,LichtbakTimer.map LichtbakTimer.o
LichtbakTimer.o : LichtbakTimer.c
	$(CC) $(CFLAGS) -c LichtbakTimer.c


# -------------LOAD-PARPORT--------------

load:
	avrdude -y -p $(TARGET) $(DAPA) -e -U flash:w:LichtbakTimer.hex

# Zet de programmeer/erase counter op 0
initcnt:
	avrdude -p $(TARGET) $(DAPA) -Y 0

#  fuse byte settings voor de ATtiny2313:

#  Standaard:		0110 0100	0x64
#  Interne RC 4MHz:	1110 0010	0xe2
#  Interne RC 8MHz:	1110 0100	0xe4
#  Xtal < 8MHz:		1110 1100	0xec
#  Xtal > 8MHz:		1110 1110	0xee
#  Ext CLK:		1110 0000	0xe0

readfuse:
	avrdude -p $(TARGET) $(DAPA) -U lfuse:r:ATtiny2313.lfuse:h
	avrdude -p $(TARGET) $(DAPA) -U hfuse:r:ATtiny2313.hfuse:h

# BODLEVEL 2...0 = 100 = 4.3V. Maakt external reset-circuit overbodig
bodlevel:
	avrdude -p $(TARGET) $(DAPA) -u -U hfuse:w:0xd9:m

# use internal RC oscillator 1 Mhz
wrfuseStd:
	avrdude -p $(TARGET) $(DAPA) -u -U lfuse:w:0x64:m

# use internal RC oscillator 4 Mhz
wrfuse4mhz:
	avrdude -p $(TARGET) $(DAPA) -u -U lfuse:w:0xe2:m

# use internal RC oscillator 8 Mhz
wrfuse8mhz:
	avrdude -p $(TARGET) $(DAPA) -u -U lfuse:w:0xe4:m

# use external crystal < 8MHz
wrfusecrystalL:
	avrdude -p $(TARGET) $(DAPA) -u -U lfuse:w:0xec:m

# use external crystal > 8MHz
wrfusecrystalH:
	avrdude -p $(TARGET) $(DAPA) -u -U lfuse:w:0xee:m

# use external oscillator
wrfuseExtOsc:
#	avrdude -p $(TARGET) $(DAPA) -u -U lfuse:w:0xe0:m


# -------------LOAD-AVRDOPER--------------

Dload:
	avrdude -y -p $(TARGET) $(DOPER) -e -U flash:w:LichtbakTimer.hex

# Zet de programmeer/erase counter op 0
Dinitcnt:
	avrdude -p $(TARGET) $(DOPER) -Y 0

#  fuse byte settings voor de ATtiny2313:

#  Standaard:		0110 0100	0x64
#  Interne RC 4MHz:	1110 0010	0xe2
#  Interne RC 8MHz:	1110 0100	0xe4
#  Xtal < 8MHz:		1110 1100	0xec
#  Xtal > 8MHz:		1110 1110	0xee
#  Ext CLK:		1110 0000	0xe0

Dreadfuse:
	avrdude -p $(TARGET) $(DOPER) -U lfuse:r:ATtiny2313.lfuse:h
	avrdude -p $(TARGET) $(DOPER) -U hfuse:r:ATtiny2313.hfuse:h

# BODLEVEL 2...0 = 100 = 4.3V. Maakt external reset-circuit overbodig
Dbodlevel:
	avrdude -p $(TARGET) $(DOPER) -u -U hfuse:w:0xd9:m

# use internal RC oscillator 1 Mhz
DwrfuseStd:
	avrdude -p $(TARGET) $(DOPER) -u -U lfuse:w:0x64:m

# use internal RC oscillator 4 Mhz
Dwrfuse4mhz:
	avrdude -p $(TARGET) $(DOPER) -u -U lfuse:w:0xe2:m

# use internal RC oscillator 8 Mhz
Dwrfuse8mhz:
	avrdude -p $(TARGET) $(DOPER) -u -U lfuse:w:0xe4:m

# use external crystal < 8MHz
DwrfusecrystalL:
	avrdude -p $(TARGET) $(DOPER) -u -U lfuse:w:0xec:m

# use external crystal > 8MHz
DwrfusecrystalH:
	avrdude -p $(TARGET) $(DOPER) -u -U lfuse:w:0xee:m

# use external oscillator
DwrfuseExtOsc:
#	avrdude -p $(TARGET) $(DOPER) -u -U lfuse:w:0xe0:m


# ---------------OTHER-----------------

clean:
	rm -f *.o *.map *.out *.hex *~ *.i *.s

good:
	indent -kr *.c
	rm -f *.o *.out *.map *~ *.hex *.i *.s

sync:
	/pros/bin/Sync

check:
	avr-size -d LichtbakTimer.out

tags:
	rm -f *.o *.out *.map *~ *.hex *.i *.s
	etags *.c *.h
