X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/deb181ae2c27db872c471a77e85d7190f32962c3..HEAD:/firmware/Makefile diff --git a/firmware/Makefile b/firmware/Makefile old mode 100644 new mode 100755 index 9047ef38e..d80018f92 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -2,15 +2,24 @@ # Makefile for usbasp # 20061119 Thomas Fischl original # 20061120 Hanns-Konrad Unger help: and TARGET=atmega48 added +# 20140308 Peter Henn TARGET=atmega328 added +# 20140329 Peter Henn F_CPU parameter added # -# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef +# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef F_CPU=12000000 +# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef F_CPU=16000000 # TARGET=atmega48 HFUSE=0xdd LFUSE=0xff +# TARGET=atmega168 HFUSE=0xdd LFUSE=0xef EFUSE=0x01 F_CPU=12000000 +# TARGET=atmega168 HFUSE=0xdd LFUSE=0xef EFUSE=0x01 F_CPU=16000000 +# TARGET=atmega168 HFUSE=0xdd LFUSE=0xe7 EFUSE=0x01 F_CPU=18000000 +# TARGET=atmega328 HFUSE=0xd9 LFUSE=0xef EFUSE=0x05 F_CPU=12000000 +# TARGET=atmega328 HFUSE=0xd9 LFUSE=0xef EFUSE=0x05 F_CPU=16000000 +# TARGET=atmega328 HFUSE=0xd9 LFUSE=0xe7 EFUSE=0x05 F_CPU=18000000 # TARGET=at90s2313 TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef - +F_CPU=12000000 # ISP=bsd PORT=/dev/parport0 # ISP=ponyser PORT=/dev/ttyS1 @@ -33,11 +42,14 @@ help: @echo " TARGET=${TARGET}" @echo " LFUSE=${LFUSE}" @echo " HFUSE=${HFUSE}" - @echo " CLOCK=12000000" +ifdef EFUSE + @echo " EFUSE=${EFUSE}" +endif + @echo " CLOCK=${F_CPU}" @echo " ISP=${ISP}" @echo " PORT=${PORT}" -COMPILE = avr-gcc -Wall -O2 -Iusbdrv -I. -mmcu=$(TARGET) # -DDEBUG_LEVEL=2 +COMPILE = avr-gcc -Wall -O2 -Iusbdrv -I. -mmcu=$(TARGET) -DF_CPU=$(F_CPU)L # -DDEBUG_LEVEL=2 OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o isp.o clock.o tpi.o main.o @@ -79,11 +91,18 @@ flash: avrdude -c ${ISP} -p ${TARGET} -P ${PORT} -U flash:w:main.hex fuses: +ifdef EFUSE + avrdude -c ${ISP} -p ${TARGET} -P ${PORT} -u -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m -U efuse:w:$(EFUSE):m +else avrdude -c ${ISP} -p ${TARGET} -P ${PORT} -u -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m +endif avrdude: avrdude -c ${ISP} -p ${TARGET} -P ${PORT} -v + +# Fuse setting, see http://www.engbedded.com/fusecalc +# # Fuse atmega8 high byte HFUSE: # 0xc9 = 1 1 0 0 1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000) # ^ ^ ^ ^ ^ ^ ^------ BOOTSZ0 @@ -121,7 +140,60 @@ avrdude: # 0xdc = divide/1,no clock output,fast raising power,low Pw Oszil. 3..8 Mhz # 0xe0 = divide/1,no clock output,fast raising power,external Oszil. # 0xff = divide/1,no clock output,slow raising power,low Pw Oszil 8.. Mhz - +# +# Fuse atmega168p high byte hfuse: +# 0xdf = 1 1 0 1 1 1 1 1 factory setting +# ^ ^ ^ ^ ^ \-+-/ +# | | | | | +------ BODLEVEL (Brown out disabled) +# | | | | + --------- EESAVE (don't preserve EEPROM over chip erase) +# | | | +-------------- WDTON (WDT not always on) +# | | +---------------- SPIEN (allow serial programming) +# | +------------------ DWEN (debug wire is disabled) +# +-------------------- RSTDISBL (reset pin is enabled) +# 0xdd = ext.reset, no DW, SPI, no watchdog, no save eeprom, BOD 2.7V +# Fuse atmega168p low byte lfuse: +# 0x62 = 0 1 1 0 0 0 1 0 factory setting +# ^ ^ \ / \--+--/ +# | | | +------- CKSEL 3..0 (internal 8Mhz Oszillator) +# | | +--------------- SUT 1..0 (start-up time) +# | +------------------ CKOUT (no clock output) +# +-------------------- CKDIV8 (divide clock by 8) +# 0xef = divide/1,no clock output,fast raising power,low Pw Oszil 8.. Mhz +# Fuse atmega168p extended byte efuse: +# 0xf9 = 1 1 1 1 1 0 0 1 factory setting +# \-+-+-+---/ ^ ^ ^---- BOOTRST (boot reset vector at 0x0000) +# ^ | +------ BOOTSZ0 +# | +-------- BOOTSZ1 +# +-------------- not used +# Note: avrdude masks not used fuse bits to zero. Therefore use only +# the lower three bits to define the BOOTSZx and BOOTRST +# +# Fuse atmega328p high byte hfuse: +# 0xd9 = 1 1 0 1 1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000) +# ^ ^ ^ ^ ^ ^ ^------ BOOTSZ0 +# | | | | | +-------- BOOTSZ1 +# | | | | + --------- EESAVE (don't preserve EEPROM over chip erase) +# | | | +-------------- WDTON (WDT not always on) +# | | +---------------- SPIEN (allow serial programming) +# | +------------------ DWEN (debug wire is disabled) +# +-------------------- RSTDISBL (reset pin is enabled) +# 0xd9 = ext.reset, no DW, SPI, no watchdog, no save eeprom, reset vector 0x0000 +# Fuse atmega328p low byte lfuse: +# 0x6d = 0 1 1 0 0 0 1 0 factory setting +# ^ ^ \ / \--+--/ +# | | | +------- CKSEL 3..0 (internal 8Mhz Oszillator) +# | | +--------------- SUT 1..0 (start-up time) +# | +------------------ CKOUT (no clock output) +# +-------------------- CKDIV8 (divide clock by 8) +# 0xef = divide/1,no clock output,fast raising power,low Pw Oszil 8.. Mhz +# Fuse atmega328p extended byte efuse: +# 0xff = 1 1 1 1 1 1 1 1 factory setting +# \-+-+-+---/ \-+-/ +# | +------ BODLEVEL (Brown out disabled) +# +-------------- not used +# 0xfd = BOD 2,7V +# Note: avrdude masks not used fuse bits to zero. Therefore use only +# the lower three bits to define the BOD level, here 0x05 SERIAL = `echo /dev/tty.USA19QI*` UISP = uisp -dprog=$S -dserial=$(SERIAL) -dpart=auto