altos: Add telescience-pwm product
authorKeith Packard <keithp@keithp.com>
Wed, 17 Oct 2012 05:21:04 +0000 (22:21 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 17 Oct 2012 05:32:10 +0000 (22:32 -0700)
Split out special PWM-sampling telescience product

Signed-off-by: Keith Packard <keithp@keithp.com>
src/avr/ao_adc_avr.c
src/avr/ao_pwmin.h
src/product/ao_telescience.c
src/telescience-pwm/.gitignore [new file with mode: 0644]
src/telescience-pwm/Makefile [new file with mode: 0644]
src/telescience-v0.1/Makefile

index 739a6d4ad95447937dca92e3e653549abd3bff85..231512b2136e4993e54d9daa5a5c8f0109bfd250 100644 (file)
@@ -94,7 +94,7 @@ ISR(ADC_vect)
        value = ADCL;
        value |= (ADCH << 8);
        ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = value;
-       if (++ao_adc_channel < NUM_ADC - 1)
+       if (++ao_adc_channel < NUM_ADC - HAS_ICP3_COUNT)
                ao_adc_start();
        else {
 #if HAS_ICP3_COUNT
index bbab4ddc1c44fa042ea26c1bd6c609d81e45d51b..8097d399bb6c099580f98741dd1e3366a868462b 100644 (file)
@@ -16,3 +16,5 @@
  */
 
 void ao_pwmin_init(void);
+
+extern volatile __data uint16_t ao_icp3_count;
index 2d594d7fa411493d88007e8afaf5a40c680e3bb1..d448d31854d888212378febdfa1c43d359552666 100644 (file)
@@ -16,7 +16,9 @@
  */
 
 #include "ao.h"
+#if HAS_ICP3_COUNT
 #include "ao_pwmin.h"
+#endif
 
 int
 main(void)
@@ -35,7 +37,9 @@ main(void)
        ao_usb_init();
        ao_adc_init();
        ao_log_single_init();
+#if HAS_ICP3_COUNT
        ao_pwmin_init();
+#endif
        ao_start_scheduler();
        return 0;
 }
diff --git a/src/telescience-pwm/.gitignore b/src/telescience-pwm/.gitignore
new file mode 100644 (file)
index 0000000..dfccadf
--- /dev/null
@@ -0,0 +1,2 @@
+telescience-v0.1*
+ao_product.h
diff --git a/src/telescience-pwm/Makefile b/src/telescience-pwm/Makefile
new file mode 100644 (file)
index 0000000..43d77e2
--- /dev/null
@@ -0,0 +1,116 @@
+#
+# AltOS build
+#
+#
+vpath % ..:../core:../product:../drivers:../avr
+vpath ao-make-product.5c ../util
+
+MCU=atmega32u4
+DUDECPUTYPE=m32u4
+#PROGRAMMER=stk500v2 -P usb
+PROGRAMMER=usbtiny
+LOADCMD=avrdude
+LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
+CC=avr-gcc
+OBJCOPY=avr-objcopy
+
+ifndef VERSION
+include ../Version
+endif
+
+INC = \
+       ao.h \
+       ao_arch.h \
+       ao_usb.h \
+       ao_pins.h \
+       ao_product.h
+
+#
+# Common AltOS sources
+#
+TELESCIENCE_STORAGE= \
+       ao_m25.c \
+       ao_spi_usart.c \
+       ao_storage.c
+
+TELESCIENCE_LOG= \
+       ao_log_single.c \
+       ao_log_telescience.c
+
+ALTOS_SRC = \
+       ao_clock.c \
+       ao_cmd.c \
+       ao_mutex.c \
+       ao_panic.c \
+       ao_product.c \
+       ao_stdio.c \
+       ao_task.c \
+       ao_timer.c \
+       ao_led.c \
+       ao_avr_stdio.c \
+       ao_romconfig.c \
+       ao_usb_avr.c \
+       ao_adc_avr.c \
+       ao_science_slave.c \
+       ao_spi_slave.c \
+       ao_pwmin.c \
+       $(TELESCIENCE_STORAGE)\
+       $(TELESCIENCE_LOG)
+
+PRODUCT=TeleScience-PWM
+MCU=atmega32u4
+PRODUCT_DEF=-DTELESCIENCE -DTELESCIENCE_PWM
+IDPRODUCT=0x0011
+CFLAGS = $(PRODUCT_DEF) -I. -I../avr -I../core -I..
+CFLAGS += -g -mmcu=$(MCU) -Wall -Wstrict-prototypes -O3 -mcall-prologues -DAVR
+
+NICKLE=nickle
+
+PROG=telescience-pwm
+
+SRC=$(ALTOS_SRC) ao_telescience.c
+OBJ=$(SRC:.c=.o)
+
+V=0
+# The user has explicitly enabled quiet compilation.
+ifeq ($(V),0)
+quiet = @printf "  $1 $2 $@\n"; $($1)
+endif
+# Otherwise, print the full command line.
+quiet ?= $($1)
+
+all: $(PROG)
+
+CHECK=sh ../util/check-avr-mem
+
+$(PROG): Makefile $(OBJ)
+       $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ)
+       $(call quiet,CHECK) $(PROG) || ($(RM) -f $(PROG); exit 1)
+
+$(PROG).hex: $(PROG)
+       avr-size $(PROG)
+       $(OBJCOPY) -R .eeprom -O ihex $(PROG) $@
+
+
+load: $(PROG).hex
+       $(LOADCMD) $(LOADARG)$(PROG).hex
+
+ao_product.h: ao-make-product.5c ../Version
+       $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
+
+ao_product.o: ao_product.c ao_product.h
+
+%.o : %.c $(INC)
+       $(call quiet,CC) -c $(CFLAGS) $<
+
+distclean:     clean
+
+clean:
+       rm -f *.o $(PROG) $(PROG).hex
+       rm -f ao_product.h
+
+install:
+
+uninstall:
+
+$(OBJ): ao_product.h $(INC)
index 5542913dc206e21419fdc33474fb434ed6024505..d24128ef53a2161e51e85b659126038045ae8e75 100644 (file)
@@ -53,7 +53,6 @@ ALTOS_SRC = \
        ao_adc_avr.c \
        ao_science_slave.c \
        ao_spi_slave.c \
-       ao_pwmin.c \
        $(TELESCIENCE_STORAGE)\
        $(TELESCIENCE_LOG)