AVR Makefile

Fra HTX Arduino
Version fra 25. okt. 2022, 22:02 af Bar (diskussion | bidrag) Bar (diskussion | bidrag) (1 version importeret)
Spring til navigation Spring til 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