From e177cfb477f7ce8dc18fa8dcb3208867c0bee336 Mon Sep 17 00:00:00 2001 From: Robert Garbee Date: Thu, 19 Jul 2012 11:40:20 -0600 Subject: [PATCH] telescience: steal last adc channel for icp3 most recent value --- src/avr/ao_adc_avr.c | 5 ++++- src/avr/ao_pwmin.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/avr/ao_adc_avr.c b/src/avr/ao_adc_avr.c index 3a262977..4896b015 100644 --- a/src/avr/ao_adc_avr.c +++ b/src/avr/ao_adc_avr.c @@ -16,6 +16,7 @@ */ #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; @@ -93,9 +94,11 @@ 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) + if (++ao_adc_channel < NUM_ADC - 1) ao_adc_start(); else { + /* steal last adc channel for pwm input */ + ao_data_ring[ao_data_head].adc.adc[ao_adc_channel] = ao_icp3_count; ADCSRA = ADCSRA_INIT; ao_data_ring[ao_data_head].tick = ao_time(); ao_data_head = ao_data_ring_next(ao_data_head); diff --git a/src/avr/ao_pwmin.h b/src/avr/ao_pwmin.h index bbab4ddc..14741201 100644 --- a/src/avr/ao_pwmin.h +++ b/src/avr/ao_pwmin.h @@ -16,3 +16,4 @@ */ void ao_pwmin_init(void); +extern volatile __data uint16_t ao_icp3_count; -- 2.30.2