summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2012-05-19 17:10:30 +0000
committerChristian Pointner <equinox@mur.at>2012-05-19 17:10:30 +0000
commitebe6e2a1ce7842a4ea3a152eb5b8545d0e376b83 (patch)
tree6f806f4d97ff9a64cea80376a23485fc06cc25e0
parentrewrite read_rxfifo. next: write interrupt handler for GPO1 (diff)
updated teensy tools from spreadspace (rename to avr)
git-svn-id: https://svn.spreadspace.org/mur.sat@437 7de4ea59-55d0-425e-a1af-a3118ea81d4c
-rw-r--r--software/avr.README56
-rw-r--r--software/avr.include.mk (renamed from software/teensy.include.mk)98
-rw-r--r--software/hhd70dongle/Makefile12
-rw-r--r--software/hhd70dongle/led.c67
-rw-r--r--software/hhd70dongle/led.h28
5 files changed, 195 insertions, 66 deletions
diff --git a/software/avr.README b/software/avr.README
new file mode 100644
index 0000000..fb0f678
--- /dev/null
+++ b/software/avr.README
@@ -0,0 +1,56 @@
+Dependencies
+============
+
+make
+avr-libc
+binutils-avr
+gcc-avr
+avrdude
+dfu-programmer
+teensy_loader
+
+
+udev example rules
+==================
+
+DFU programmable Boards:
+------------------------
+
+SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="*", GROUP="plugdev", MODE:="0660"
+
+Teensy Boards:
+--------------
+
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", MODE:="0666"
+KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789]?", SYMLINK+="ttyUSB00%n", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
+
+Arduino Boards:
+---------------
+
+SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="A6008hTA", SYMLINK+="arduino", OWNER="equinox", GROUP="equinox"
+
+Replace "A6008hTA" with the serial of your arduino board. You can obtain it
+with the following command:
+
+udevadm info --name /dev/ttyUSB0 --attribute-walk | grep ATTRs{serial}
+
+(replace ttyUSB0 with the actual device your arduino uses)
+
+
+Build
+=====
+
+Getting the source via subversion:
+----------------------------------
+
+svn co https://svn.spreadspace.org/avr/trunk avr
+cd avr
+
+
+build and flash blink example
+-----------------------------
+
+# cd blink
+# make
+# make program
+# make run
diff --git a/software/teensy.include.mk b/software/avr.include.mk
index a6c5dc9..3c1496d 100644
--- a/software/teensy.include.mk
+++ b/software/avr.include.mk
@@ -1,46 +1,65 @@
##
-## spreadspace teensy utils
+## spreadspace avr utils
##
##
-## Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org>
+## Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
##
-## This file is part of spreadspace teensy utils.
+## This file is part of spreadspace avr utils.
##
-## spreadspace teensy utils is free software: you can redistribute it and/or modify
+## 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 teensy utils is distributed in the hope that it will be useful,
+## 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 teensy utils. If not, see <http://www.gnu.org/licenses/>.
+## along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
##
ifeq ($(BOARD_TYPE),teensy1)
MCU := at90usb162
F_CPU := 16000000
+PROG := teensy
endif
ifeq ($(BOARD_TYPE),teensy2)
MCU := atmega32u4
F_CPU := 16000000
+PROG := teensy
endif
ifeq ($(BOARD_TYPE),teensypp1)
MCU := at90usb646
F_CPU := 16000000
+PROG := teensy
endif
ifeq ($(BOARD_TYPE),teensypp2)
MCU := at90usb1286
F_CPU := 16000000
+PROG := teensy
+endif
+ifeq ($(BOARD_TYPE),hhd70dongle)
+MCU := atmega32u4
+F_CPU := 16000000
+PROG := DFU
+endif
+ifeq ($(BOARD_TYPE),arduino2009)
+MCU := atmega168
+F_CPU := 16000000
+PROG := avrdude
+UPLOAD_RATE := 19200
+PROG_TYPE := stk500v1
+AVRDUDE_PORT := /dev/ttyUSB0
endif
-FORMAT := ihex
CC = avr-gcc
OBJCOPY = avr-objcopy
+
DFU = dfu-programmer
+teensy = teensy_loader_cli
+avrdude = avrdude
## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)
@@ -56,6 +75,7 @@ CFLAGS += -fshort-enums
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
CFLAGS += -DF_CPU=$(F_CPU)UL
+CFLAGS += -D__BOARD_$(BOARD_TYPE)__
## Linker flags
LDFLAGS = $(COMMON)
@@ -63,7 +83,7 @@ LDFLAGS +=
SRC := $(OBJ:%.o=%.c)
-.PHONY: clean erase program reset run
+.PHONY: clean program erase flash reset run
ELFFILE := $(NAME).elf
HEXFILE := $(NAME).hex
@@ -87,7 +107,7 @@ $(ELFFILE): $(OBJ)
$(CC) $(OBJ) -o $@ $(LDFLAGS)
$(HEXFILE): $(ELFFILE)
- $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature $< $@
+ $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature $< $@
clean:
rm -f *.o
@@ -96,14 +116,64 @@ clean:
rm -f $(ELFFILE)
rm -f $(HEXFILE)
-erase:
+
+### DFU-Programmer
+define DFU/erase
$(DFU) $(MCU) erase || true
+endef
-program: $(HEXFILE) erase
- $(DFU) $(MCU) flash $<
+define DFU/flash
+ $(DFU) $(MCU) flash $1
+endef
-reset:
+define DFU/reset
$(DFU) $(MCU) reset
+endef
-run:
+define DFU/run
$(DFU) $(MCU) start
+endef
+
+### teensy-loader
+define teensy/erase
+endef
+
+define teensy/flash
+ $(teensy) -mmcu=$(MCU) -w -v $1
+endef
+
+define teensy/reset
+endef
+
+define teensy/run
+endef
+
+### avrdude
+define avrdude/erase
+ $(avrdude) -V -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(PROG_TYPE) -b $(UPLOAD_RATE) -e
+endef
+
+define avrdude/flash
+ $(avrdude) -V -F -p $(MCU) -P $(AVRDUDE_PORT) -c $(PROG_TYPE) -b $(UPLOAD_RATE) -D -U flash:w:$1
+endef
+
+define avrdude/reset
+endef
+
+define avrdude/run
+endef
+
+### Program Targets
+program: erase flash run
+
+erase:
+ $(call $(PROG)/$@,)
+
+flash: $(HEXFILE)
+ $(call $(PROG)/$@,$(HEXFILE))
+
+reset:
+ $(call $(PROG)/$@,)
+
+run:
+ $(call $(PROG)/$@,)
diff --git a/software/hhd70dongle/Makefile b/software/hhd70dongle/Makefile
index c12e4c6..87ffb8e 100644
--- a/software/hhd70dongle/Makefile
+++ b/software/hhd70dongle/Makefile
@@ -22,15 +22,7 @@
NAME := hhd70dongle
OBJ := hhd70dongle.o led.o spi.o usb_rawhid.o c1101lib.o util.o
-BOARD_TYPE := teensy2
+BOARD_TYPE := hhd70dongle
-include ../teensy.include.mk
+include ../avr.include.mk
CFLAGS += -std=gnu99
-
-DFU_PRO_TARGET := atmega32u4
-
-.phony: flash
-flash: $(NAME).hex
- sudo dfu-programmer $(DFU_PRO_TARGET) erase
- sudo dfu-programmer $(DFU_PRO_TARGET) flash $<
- sudo dfu-programmer $(DFU_PRO_TARGET) start
diff --git a/software/hhd70dongle/led.c b/software/hhd70dongle/led.c
index d24af16..ced853f 100644
--- a/software/hhd70dongle/led.c
+++ b/software/hhd70dongle/led.c
@@ -1,55 +1,76 @@
/*
+ * spreadspace avr utils
*
- * mur.sat
*
- * Somewhen in the year 2012, mur.at will have a nano satellite launched
- * into a low earth orbit (310 km above the surface of our planet). The
- * satellite itself is a TubeSat personal satellite kit, developed and
- * launched by interorbital systems. mur.sat is a joint venture of mur.at,
- * ESC im Labor and realraum.
+ * Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of spreadspace avr utils.
*
- * Please visit the project hompage at sat.mur.at for further information.
- *
- *
- * Copyright (C) 2011 Christian Pointner <equinox@mur.at>
- *
- * This file is part of mur.sat.
- *
- * mur.sat is free software: you can redistribute it and/or modify
+ * 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.
*
- * mur.sat is distributed in the hope that it will be useful,
+ * 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 mur.sat. If not, see <http://www.gnu.org/licenses/>.
- *
+ * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "avr/io.h"
+#include "avr/io.h"
#include "led.h"
+#define LED_DIR 1
+#if defined(__BOARD_teensy1__) || defined(__BOARD_teensy1pp__)
+#define LED_DIR 0
+#endif
+
+#if defined(__BOARD_teensy2__) || defined(__BOARD_teensy2pp__) || 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_arduino2009__)
+#define LED_PORT PORTB
+#define LED_DDR DDRB
+#define LED_PINNUM 5
+#endif
+
void led_init(void)
{
- PORTE = 0x00;
- DDRE = 1<<PORTE6;
+ led_off();
+ LED_DDR = 1<<LED_PINNUM;
}
void led_on(void)
{
- PORTE |= 1<<PORTE6;
+#if LED_DIR == 1
+ LED_PORT |= 1<<LED_PINNUM;
+#else
+ LED_PORT &= ~(1<<LED_PINNUM);
+#endif
}
void led_off(void)
{
- PORTE &= ~(1<<PORTE6);
+#if LED_DIR == 1
+ LED_PORT &= ~(1<<LED_PINNUM);
+#else
+ LED_PORT |= 1<<LED_PINNUM;
+#endif
}
void led_toggle(void)
{
- PORTE ^= 1<<PORTE6;
+ LED_PORT ^= 1<<LED_PINNUM;
}
diff --git a/software/hhd70dongle/led.h b/software/hhd70dongle/led.h
index 3d8eb6c..0375828 100644
--- a/software/hhd70dongle/led.h
+++ b/software/hhd70dongle/led.h
@@ -1,37 +1,27 @@
/*
+ * spreadspace avr utils
*
- * mur.sat
*
- * Somewhen in the year 2012, mur.at will have a nano satellite launched
- * into a low earth orbit (310 km above the surface of our planet). The
- * satellite itself is a TubeSat personal satellite kit, developed and
- * launched by interorbital systems. mur.sat is a joint venture of mur.at,
- * ESC im Labor and realraum.
+ * Copyright (C) 2012 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of spreadspace avr utils.
*
- * Please visit the project hompage at sat.mur.at for further information.
- *
- *
- * Copyright (C) 2011 Christian Pointner <equinox@mur.at>
- *
- * This file is part of mur.sat.
- *
- * mur.sat is free software: you can redistribute it and/or modify
+ * 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.
*
- * mur.sat is distributed in the hope that it will be useful,
+ * 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 mur.sat. If not, see <http://www.gnu.org/licenses/>.
- *
+ * along with spreadspace avr utils. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef MURSAT_led_h_INCLUDED
-#define MURSAT_led_h_INCLUDED
+#ifndef SPREADSPACE_led_h_INCLUDED
+#define SPREADSPACE_led_h_INCLUDED
void led_init(void);
void led_on(void);