AVR Makefile

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Nedenstående kode er en makefile lavet til at automatisere kompilering, programmering og brænding af de Atmel ICer som skolen bruger. For at kunne bruge det skal man installere WinAVR(http://sourceforge.net/projects/winavr/files/latest/download?source=files). Når dette er installeret er det muligt at bruge makefilen. Den har følgende kommandoer, som blot indtastes i kommandopromt åbnet fra mappen(shift+højreklik -> vælg "åben kommandopromt vindue her").

  • make - Bygger programmet ud fra .c og .cpp filer i mappen.
  • make clean - Fjerner alle ekstra filer.
  • make fuses - Sætter fuses på ICen. Skal kun gøres én gang.
  • make burn - Brænder programmet til ICens flash.
  • make erase - Fjerner alt data fra ICens flash.

eksempel pakke

Simpelt blink-eksempel til at illustrere hvordan man kan skrive ATTiny kode.

makefile

# Configuration
# Muligheder: attiny45, attiny2313, attiny24, se resten her: http://www.nongnu.org/avr-libc/user-manual/using_tools.html
TARGET := attiny45
# Navnet på projektet. MÅ IKKE HAVE MELLEMRUM!
NAME := Niko428C.I2CSlave
# COM-porten hvor programmøren er tilkoblet
COMPORT := COM7

# DO NOT TOUCH
SRCS := $(wildcard *.c) $(wildcard *.cpp)
OBJS = $(wildcard *.o)
BAUD := 19200
PROG := stk500v1
CFLAGS := -I. -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -DF_CPU=8000000 -mmcu=$(TARGET)

all: $(NAME)
	avr-gcc $(CFLAGS) $(OBJS) --output $(NAME).elf
	avr-objcopy -O ihex -R .eeprom $(NAME).elf $(NAME).hex

$(NAME): $(SRCS)
	avr-gcc -c $(CFLAGS) $^

clean:
	@- $(RM) $(NAME).elf
	@- $(RM) $(NAME).hex
	@- $(RM) $(OBJS)

burn:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -u -U flash:w:$(NAME).hex

erase:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e

fuses: $(TARGET)_fuses

attiny2313_fuses:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e -U efuse:w:0xFF:m -U hfuse:w:0x9F:m -U lfuse:w:0xE4:m

attiny24_fuses:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e -U efuse:w:0xFF:m -U hfuse:w:0xD7:m -U lfuse:w:0xE2:m

attiny45_fuses:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e -U efuse:w:0xFF:m -U hfuse:w:0xD7:m -U lfuse:w:0xE2:m

attiny461_fuses:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e -U efuse:w:0x01:m -U hfuse:w:0xDF:m -U lfuse:w:0xE2:m

attiny48_fuses:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e -U efuse:w:0x01:m -U hfuse:w:0xDA:m -U lfuse:w:0xEE:m

atmega328p_fuses:
	avrdude -c $(PROG) -p $(TARGET) -P $(COMPORT) -b $(BAUD) -e -U efuse:w:0x05:m -U hfuse:w:0xDA:m -U lfuse:w:0xE2:m

Referencer