# Name: Makefile # Project: PowerSwitch # Author: Christian Starkjohann # Creation Date: 2004-12-29 # Tabsize: 4 # Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH # License: GNU GPL v2 (see License.txt) or proprietary (CommercialLicense.txt) # # Edited by Daniel Friesel MCU ?= attiny2313 AVRDUDE_PROGRAMMER ?= usbasp AVRCC ?= avr-gcc AVRFLASH ?= avrdude AVRNM ?= avr-nm AVROBJCOPY ?= avr-objcopy AVROBJDUMP ?= avr-objdump CFLAGS += -mmcu=attiny2313 -DF_CPU=16000000 CFLAGS += -Wall -Os -Iusbdrv -I. OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o all: main.hex .c.o: ${AVRCC} ${CFLAGS} -c $< -o $@ .S.o: ${AVRCC} ${CFLAGS} -x assembler-with-cpp -c $< -o $@ # "-x assembler-with-cpp" should not be necessary since this is the default # file type for the .S (with capital S) extension. However, upper case # characters are not always preserved on Windows. To ensure WinAVR # compatibility define the file type manually. .c.s: ${AVRCC} ${CFLAGS} -S $< -o $@ program: all fuse_tiny2313 ${AVRFLASH} -p ${MCU} -c ${AVRDUDE_PROGRAMMER} -U flash:w:main.hex:i # Fuse low byte: # 0xef = 1 1 1 0 1 1 1 1 # ^ ^ \+/ \--+--/ # | | | +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz) # | | +--------------- SUT 1..0 (BOD enabled, fast rising power) # | +------------------ CKOUT (clock output on CKOUT pin -> disabled) # +-------------------- CKDIV8 (divide clock by 8 -> don't divide) # # Fuse high byte: # 0xdb = 1 1 0 1 1 0 1 1 # ^ ^ ^ ^ \-+-/ ^ # | | | | | +---- RSTDISBL (disable external reset -> enabled) # | | | | +-------- BODLEVEL 2..0 (brownout trigger level -> 2.7V) # | | | +-------------- WDTON (watchdog timer always on -> disable) # | | +---------------- SPIEN (enable serial programming -> enabled) # | +------------------ EESAVE (preserve EEPROM on Chip Erase -> not preserved) # +-------------------- DWEN (debug wire enable) fuse_tiny2313: # only needed for attiny2313 ${AVRFLASH} -p ${MCU} -c ${AVRDUDE_PROGRAMMER} -U hfuse:w:0xdb:m -U lfuse:w:0xef:m clean: rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.bin *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s # file targets: main.bin: ${OBJECTS} ${AVRCC} ${CFLAGS} -o main.bin $(OBJECTS) main.hex: main.bin rm -f main.hex main.eep.hex ${AVROBJCOPY} -j .text -j .data -O ihex main.bin main.hex ./checksize main.bin # do the checksize script as our last action to allow successful compilation # on Windows with WinAVR where the Unix commands will fail. disasm: main.bin ${AVROBJDUMP} -d main.bin cpp: ${AVRCC} ${CFLAGS} -E main.c .PHONY: all program fuse_tiny2313 clean disasm cpp