telescience: steal last adc channel for icp3 most recent value
authorRobert Garbee <robert@gag.com>
Thu, 19 Jul 2012 17:40:20 +0000 (11:40 -0600)
committerKeith Packard <keithp@keithp.com>
Wed, 17 Oct 2012 05:11:12 +0000 (22:11 -0700)
Make the ICP3 rpm counter use in ao_adc_avr.c optional

Signed-off-by: Keith Packard <keithp@keithp.com>
src/avr/ao_adc_avr.c
src/avr/ao_pins.h
src/telepyro-v0.1/Makefile

index 3a262977512b606552211cee8b6122fcdea3a8e7..739a6d4ad95447937dca92e3e653549abd3bff85 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include "ao.h"
  */
 
 #include "ao.h"
+#include "ao_pwmin.h"
 
 volatile __xdata struct ao_data        ao_data_ring[AO_DATA_RING];
 volatile __data uint8_t                ao_data_head;
 
 volatile __xdata struct ao_data        ao_data_ring[AO_DATA_RING];
 volatile __data uint8_t                ao_data_head;
@@ -93,9 +94,13 @@ ISR(ADC_vect)
        value = ADCL;
        value |= (ADCH << 8);
        ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = value;
        value = ADCL;
        value |= (ADCH << 8);
        ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = value;
-       if (++ao_adc_channel < NUM_ADC)
+       if (++ao_adc_channel < NUM_ADC - 1)
                ao_adc_start();
        else {
                ao_adc_start();
        else {
+#if HAS_ICP3_COUNT
+               /* steal last adc channel for pwm input */
+               ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = ao_icp3_count;
+#endif
                ADCSRA = ADCSRA_INIT;
                ao_data_ring[ao_data_head].tick = ao_time();
                ao_data_head = ao_data_ring_next(ao_data_head);
                ADCSRA = ADCSRA_INIT;
                ao_data_ring[ao_data_head].tick = ao_time();
                ao_data_head = ao_data_ring_next(ao_data_head);
index bc423ff7b61404011e17f4baf1eb9f3bcca3a778..0f49db0b83b8b6bf656b618adda7a8d50cee266e 100644 (file)
@@ -47,6 +47,7 @@
        #define AVR_VCC_5V              0
        #define AVR_VCC_3V3             1
        #define AVR_CLOCK               8000000UL
        #define AVR_VCC_5V              0
        #define AVR_VCC_3V3             1
        #define AVR_CLOCK               8000000UL
+       #define HAS_ICP3_COUNT          1
 
        #define SPI_CS_PORT             PORTE
        #define SPI_CS_DIR              DDRE
 
        #define SPI_CS_PORT             PORTE
        #define SPI_CS_DIR              DDRE
@@ -81,6 +82,7 @@
        #define IS_COMPANION            1
        #define HAS_ORIENT              0
        #define ao_storage_pos_t        uint16_t
        #define IS_COMPANION            1
        #define HAS_ORIENT              0
        #define ao_storage_pos_t        uint16_t
+       #define HAS_ICP3_COUNT          0
 
        #define AVR_VCC_5V              0
        #define AVR_VCC_3V3             1
 
        #define AVR_VCC_5V              0
        #define AVR_VCC_3V3             1
index 2ccd565f2008cf5fb9440d5a50112d9c90eef76d..6743ba66db37c9a30f2c690580dfa35611bd0d16 100644 (file)
@@ -96,7 +96,7 @@ ao_product.o: ao_product.c ao_product.h
 distclean:     clean
 
 clean:
 distclean:     clean
 
 clean:
-       rm -f $(OBJ)
+       rm -f $(OBJ) $(PROG) $(PROG).hex
        rm -f ao_product.h
 
 install:
        rm -f ao_product.h
 
 install: