diff options
-rw-r--r-- | software/avr.README | 56 | ||||
-rw-r--r-- | software/avr.include.mk (renamed from software/teensy.include.mk) | 98 | ||||
-rw-r--r-- | software/hhd70dongle/Makefile | 12 | ||||
-rw-r--r-- | software/hhd70dongle/led.c | 67 | ||||
-rw-r--r-- | software/hhd70dongle/led.h | 28 |
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); |