ifndef TTY TTY=/dev/ttyACM0 endif MMCU=atmega328 #MMCU=atmega2560 ifeq ($(MMCU),atmega328) PROG_MMCU=atmega328p PROG_DEV=arduino AVRD_CONF= DISABLE_AUTO_ERASE= SKIP_CHECKS=-FV endif ifeq ($(MMCU),atmega2560) PROG_MMCU=$(MMCU) PROG_DEV=wiring AVRD_CONF=-C/etc/avrdude/avrdude.conf DISABLE_AUTO_ERASE=-D SKIP_CHECKS=-FV endif # compiler flags: # -Os : optimize size # -DF_CPU=16000000UL : define F_CPU as 16Mghz # -mmcu=atmega328p : target MCU # -F : skip device signature read # -V : disable automatic verify step # -v : enable verbose output # -D : disable auto erase flash main.hex : main.c # compile to object file (optimize for size) avr-gcc -Os -DF_CPU=16000000UL -mmcu=$(MMCU) -o main.elf main.c twi.c # link as ELF binary #avr-gcc -mmcu=atmega328p main.o -o main.elf # convert ELF format to an IHEX format as used by avrdude avr-objcopy -O ihex -R .eeprom main.elf main.hex burn: avrdude $(SKIP_CHECKS) -v $(AVRD_CONF) -c$(PROG_DEV) -p$(PROG_MMCU) -P$(TTY) -b 115200 $(DISABLE_AUTO_ERASE) -U flash:w:main.hex:i clean : rm main.o twi.o main.elf main.hex