diff options
author | Robert Garbee <robert@gag.com> | 2012-07-19 11:40:20 -0600 |
---|---|---|
committer | Robert Garbee <robert@gag.com> | 2012-07-19 11:40:20 -0600 |
commit | e177cfb477f7ce8dc18fa8dcb3208867c0bee336 (patch) | |
tree | 65d4fe0b61ec3a8a1158668326684079cda4654b | |
parent | ada6f2dfc045e77cb9499f20cdec1b4a54ef0db1 (diff) |
telescience: steal last adc channel for icp3 most recent value
-rw-r--r-- | src/avr/ao_adc_avr.c | 5 | ||||
-rw-r--r-- | src/avr/ao_pwmin.h | 1 |
2 files changed, 5 insertions, 1 deletions
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; |