From cdd573583978a3800b24d868d32604a427b669a2 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 24 May 2012 21:55:14 +0000 Subject: moved lib code to lib dir updated Makefile to work it's funky magic git-svn-id: https://svn.spreadspace.org/avr/trunk@29 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- blink/Makefile | 5 ++-- blink/blink.c | 2 +- blink/led.c | 91 ---------------------------------------------------------- blink/led.h | 31 -------------------- blink/util.c | 35 ---------------------- blink/util.h | 28 ------------------ include.mk | 24 +++++++++++++--- lib/led.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/led.h | 31 ++++++++++++++++++++ lib/util.c | 35 ++++++++++++++++++++++ lib/util.h | 28 ++++++++++++++++++ 11 files changed, 209 insertions(+), 192 deletions(-) delete mode 100644 blink/led.c delete mode 100644 blink/led.h delete mode 100644 blink/util.c delete mode 100644 blink/util.h create mode 100644 lib/led.c create mode 100644 lib/led.h create mode 100644 lib/util.c create mode 100644 lib/util.h diff --git a/blink/Makefile b/blink/Makefile index 4f20366..86e960e 100644 --- a/blink/Makefile +++ b/blink/Makefile @@ -21,7 +21,8 @@ ## NAME := blink -OBJ := blink.o util.o led.o -BOARD_TYPE := AvrNetIo +OBJ := blink.o +LIBS := util led +BOARD_TYPE := teensy2 include ../include.mk diff --git a/blink/blink.c b/blink/blink.c index ef1ebb0..726cc83 100644 --- a/blink/blink.c +++ b/blink/blink.c @@ -32,7 +32,7 @@ int main(void) led_init(); for(;;) { - _delay_ms(200); + _delay_ms(50); led_toggle(); } } diff --git a/blink/led.c b/blink/led.c deleted file mode 100644 index 60436e2..0000000 --- a/blink/led.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * spreadspace avr utils - * - * - * Copyright (C) 2012 Christian Pointner - * - * This file is part of spreadspace avr utils. - * - * spreadspace avr 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 avr 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 avr utils. If not, see . - */ - -#include "avr/io.h" -#include "led.h" - -#if defined(__BOARD_arduinoUno__) || defined(__BOARD_AvrNetIo__) -#define HAS_LED 0 -#else -#define HAS_LED 1 -#endif - -#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) -#define LED_DIR 0 -#else -#define LED_DIR 1 -#endif - -#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) || defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) -#define LED_PORT PORTD -#define LED_DDR DDRD -#define LED_PINNUM 6 -#endif - -#if defined(__BOARD_hhd70dongle__) -#define LED_PORT PORTE -#define LED_DDR DDRE -#define LED_PINNUM 6 -#endif - -#if defined(__BOARD_arduino2009v2__) || defined(__BOARD_arduino2009__) || defined(__BOARD_arduino10000__) || defined(__BOARD_arduinoNG__) -#define LED_PORT PORTB -#define LED_DDR DDRB -#define LED_PINNUM 5 -#endif - -void led_init(void) -{ -#if HAS_LED == 1 - led_off(); - LED_DDR = 1< - * - * This file is part of spreadspace avr utils. - * - * spreadspace avr 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 avr 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 avr utils. If not, see . - */ - -#ifndef SPREADSPACE_led_h_INCLUDED -#define SPREADSPACE_led_h_INCLUDED - -void led_init(void); -void led_on(void); -void led_off(void); -void led_toggle(void); - -#endif diff --git a/blink/util.c b/blink/util.c deleted file mode 100644 index 3bf17b1..0000000 --- a/blink/util.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - * spreadspace avr utils - * - * - * Copyright (C) 2012 Christian Pointner - * - * This file is part of spreadspace avr utils. - * - * spreadspace avr 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 avr 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 avr utils. If not, see . - */ - -#include "avr/io.h" -#include "util.h" - -#if defined(CLKPR) -#define CPU_PRESCALE(n) do { CLKPR = 0x80; CLKPR = (n); } while(0) -#else -#define CPU_PRESCALE(n) -#endif - -void cpu_init(void) -{ - CPU_PRESCALE(0); -} diff --git a/blink/util.h b/blink/util.h deleted file mode 100644 index 15204b1..0000000 --- a/blink/util.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * spreadspace avr utils - * - * - * Copyright (C) 2012 Christian Pointner - * - * This file is part of spreadspace avr utils. - * - * spreadspace avr 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 avr 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 avr utils. If not, see . - */ - -#ifndef SPREADSPACE_util_h_INCLUDED -#define SPREADSPACE_util_h_INCLUDED - -void cpu_init(void); - -#endif diff --git a/include.mk b/include.mk index ce21fd7..92d6a0d 100644 --- a/include.mk +++ b/include.mk @@ -105,6 +105,7 @@ endif CC = avr-gcc OBJCOPY = avr-objcopy +LIB_DIR = ../lib DFU = dfu-programmer teensy = teensy_loader_cli @@ -123,6 +124,7 @@ CFLAGS += -fpack-struct CFLAGS += -fshort-enums CFLAGS += -Wall CFLAGS += -Wstrict-prototypes +CFLAGS += -I$(LIB_DIR) CFLAGS += -DF_CPU=$(F_CPU)UL CFLAGS += -D__BOARD_$(BOARD_TYPE)__ @@ -132,6 +134,10 @@ LDFLAGS += SRC := $(OBJ:%.o=%.c) +OBJ_LIB := $(LIBS:%=lib-%.o) +SRC_LIB := $(LIBS:%=$(LIB_DIR)/%.c) +DEP_LIB := $(LIBS:%=lib-%.d) + .PHONY: clean program erase flash reset run ELFFILE := $(NAME).elf @@ -139,21 +145,31 @@ HEXFILE := $(NAME).hex all: $(HEXFILE) +lib-%.d: $(LIB_DIR)/%.c + @set -e; rm -f $@; \ + $(CC) -MM $(CFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,lib-\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$; echo '(re)building $@' + %.d: %.c @set -e; rm -f $@; \ $(CC) -MM $(CFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$; echo '(re)building $@' -ifneq ($(MAKECMDGOALS),distclean) +ifneq ($(MAKECMDGOALS),clean) -include $(SRC:%.c=%.d) +-include $(DEP_LIB) endif +lib-%.o: $(LIB_DIR)/%.c + $(CC) $(CFLAGS) -o $@ -c $< + %.o: %.c - $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) -o $@ -c $< -$(ELFFILE): $(OBJ) - $(CC) $(OBJ) -o $@ $(LDFLAGS) +$(ELFFILE): $(OBJ) $(OBJ_LIB) + $(CC) $(OBJ) $(OBJ_LIB) -o $@ $(LDFLAGS) $(HEXFILE): $(ELFFILE) $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@ diff --git a/lib/led.c b/lib/led.c new file mode 100644 index 0000000..60436e2 --- /dev/null +++ b/lib/led.c @@ -0,0 +1,91 @@ +/* + * spreadspace avr utils + * + * + * Copyright (C) 2012 Christian Pointner + * + * This file is part of spreadspace avr utils. + * + * spreadspace avr 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 avr 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 avr utils. If not, see . + */ + +#include "avr/io.h" +#include "led.h" + +#if defined(__BOARD_arduinoUno__) || defined(__BOARD_AvrNetIo__) +#define HAS_LED 0 +#else +#define HAS_LED 1 +#endif + +#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) +#define LED_DIR 0 +#else +#define LED_DIR 1 +#endif + +#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__) || defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) +#define LED_PORT PORTD +#define LED_DDR DDRD +#define LED_PINNUM 6 +#endif + +#if defined(__BOARD_hhd70dongle__) +#define LED_PORT PORTE +#define LED_DDR DDRE +#define LED_PINNUM 6 +#endif + +#if defined(__BOARD_arduino2009v2__) || defined(__BOARD_arduino2009__) || defined(__BOARD_arduino10000__) || defined(__BOARD_arduinoNG__) +#define LED_PORT PORTB +#define LED_DDR DDRB +#define LED_PINNUM 5 +#endif + +void led_init(void) +{ +#if HAS_LED == 1 + led_off(); + LED_DDR = 1< + * + * This file is part of spreadspace avr utils. + * + * spreadspace avr 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 avr 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 avr utils. If not, see . + */ + +#ifndef SPREADSPACE_led_h_INCLUDED +#define SPREADSPACE_led_h_INCLUDED + +void led_init(void); +void led_on(void); +void led_off(void); +void led_toggle(void); + +#endif diff --git a/lib/util.c b/lib/util.c new file mode 100644 index 0000000..3bf17b1 --- /dev/null +++ b/lib/util.c @@ -0,0 +1,35 @@ +/* + * spreadspace avr utils + * + * + * Copyright (C) 2012 Christian Pointner + * + * This file is part of spreadspace avr utils. + * + * spreadspace avr 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 avr 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 avr utils. If not, see . + */ + +#include "avr/io.h" +#include "util.h" + +#if defined(CLKPR) +#define CPU_PRESCALE(n) do { CLKPR = 0x80; CLKPR = (n); } while(0) +#else +#define CPU_PRESCALE(n) +#endif + +void cpu_init(void) +{ + CPU_PRESCALE(0); +} diff --git a/lib/util.h b/lib/util.h new file mode 100644 index 0000000..15204b1 --- /dev/null +++ b/lib/util.h @@ -0,0 +1,28 @@ +/* + * spreadspace avr utils + * + * + * Copyright (C) 2012 Christian Pointner + * + * This file is part of spreadspace avr utils. + * + * spreadspace avr 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 avr 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 avr utils. If not, see . + */ + +#ifndef SPREADSPACE_util_h_INCLUDED +#define SPREADSPACE_util_h_INCLUDED + +void cpu_init(void); + +#endif -- cgit v1.2.3