AVR Makefile
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