AVR Makefile

Fra HTX Arduino
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


Atmel Microcontroller
Atmel udviklingsmiljø AVR Compiler - AVR Makefile - AVR udviklingsboard - AVR-batch - AVR-programmer Shield - WinAVR
Atmel-type Udviklingsboard - ATMega328 - ATTiny2313A - ATTiny24A - ATTiny45 - ATTiny461 - ATTiny48
I2C Moduler Arduino Display - Arduino DS1307 RTC - Arduino IO Expander - Arduino magnetisk kompas - Frekvensmodul - I2C barometer - I2C Display - I2C Lommeregner - I2C strain gauge - I2C tastatur - I2C-RF-modtager - IR Fjernbetjening - Mikrofon som Undervisningsudstyr