diff options
author | Christian Pointner <equinox@spreadspace.org> | 2012-05-06 19:23:17 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2012-05-06 19:23:17 +0000 |
commit | c3db73e8e651306a374178109353563f93b5bc21 (patch) | |
tree | 4b4c60c2838ed270b34dc92f85a4715c541c28e2 | |
parent | added first (not working) version of include.mk (diff) |
first working version for blink
git-svn-id: https://svn.spreadspace.org/avr/trunk@3 aa12f405-d877-488e-9caf-2d797e2a1cc7
-rw-r--r-- | blink/Makefile | 27 | ||||
-rw-r--r-- | blink/blink.c | 18 | ||||
-rw-r--r-- | include.mk | 53 |
3 files changed, 85 insertions, 13 deletions
diff --git a/blink/Makefile b/blink/Makefile new file mode 100644 index 0000000..e863040 --- /dev/null +++ b/blink/Makefile @@ -0,0 +1,27 @@ +##
+## spreadspace teensy utils
+##
+##
+## Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org>
+##
+## This file is part of spreadspace teensy utils.
+##
+## spreadspace teensy utils is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## any later version.
+##
+## spreadspace teensy utils is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with spreadspace teensy utils. If not, see <http://www.gnu.org/licenses/>.
+##
+
+NAME := blink
+OBJ := blink.o
+BOARD_TYPE := teensy2
+
+include ../include.mk
diff --git a/blink/blink.c b/blink/blink.c new file mode 100644 index 0000000..79f884b --- /dev/null +++ b/blink/blink.c @@ -0,0 +1,18 @@ +/*
+ * Blinks the led using a simple delay loop.
+ */
+
+#include "avr/io.h"
+#include "util/delay.h"
+
+int main(void)
+{
+ PORTE = 0x00;
+ DDRE = 0x00;
+
+ for(;;) {
+ _delay_ms(250);
+ PORTE ^= 1<<PORTE6;
+ }
+}
+
@@ -20,21 +20,21 @@ ## along with spreadspace teensy utils. If not, see <http://www.gnu.org/licenses/>. ## -#NAME := -#OBJ := -#BOARD_TYPE := - ifeq ($(BOARD_TYPE),teensy1) MCU := at90usb162 +F_CPU := 16000000 endif ifeq ($(BOARD_TYPE),teensy2) MCU := atmega32u4 +F_CPU := 16000000 endif ifeq ($(BOARD_TYPE),teensypp1) MCU := at90usb646 +F_CPU := 16000000 endif ifeq ($(BOARD_TYPE),teensypp2) MCU := at90usb1286 +F_CPU := 16000000 endif FORMAT := ihex @@ -45,15 +45,35 @@ SIZE = avr-size AR = avr-ar rcs NM = avr-nm COPY = cp - +DFU = dfu-programmer + +## Options common to compile, link and assembly rules +COMMON = -mmcu=$(MCU) + +## Compile options common for all C compilation units. +CFLAGS = $(COMMON) +CFLAGS += -O2 +CFLAGS += -funsigned-char +CFLAGS += -funsigned-bitfields +CFLAGS += -ffunction-sections +CFLAGS += -fpack-struct +CFLAGS += -fshort-enums +CFLAGS += -Wall +CFLAGS += -Wstrict-prototypes +CFLAGS += -DF_CPU=$(F_CPU)UL + +## Linker flags +LDFLAGS = $(COMMON) +LDFLAGS += SRC := $(OBJ:%.o=%.c) .PHONY: clean cleanall distclean program ELFFILE := $(NAME).elf +HEXFILE := $(NAME).hex -all: $(ELFFILE) +all: $(HEXFILE) %.d: %.c @set -e; rm -f $@; \ @@ -68,27 +88,34 @@ endif $(ELFFILE): $(OBJ) $(CC) $(OBJ) -o $@ $(LDFLAGS) +$(HEXFILE): $(ELFFILE) + $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $(HEXFILE) + %.o: %.c $(CC) $(CFLAGS) -c $< - strip: $(ELFFILE) $(STRIP) -s $(ELFFILE) distclean: cleanall find . -name *.o -exec rm -f {} \; find . -name "*.\~*" -exec rm -rf {} \; - rm -f include.mk - rm -f version.h - rm -f tun.c clean: rm -f *.o rm -f *.d rm -f *.d.* rm -f $(ELFFILE) + rm -f $(HEXFILE) + +erase: + $(DFU) $(MCU) erase | true + +program: $(HEXFILE) erase + $(DFU) $(MCU) flash $< -program: $(ELFFILE) - $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $(ELFFILE:%.elf=%.hex) - teensy_loader_cli -mmcu=$(MCU) -w -v $@ +reset: + $(DFU) $(MCU) reset +run: + $(DFU) $(MCU) start |