summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Garbee <robert@gag.com>2012-07-19 11:40:20 -0600
committerRobert Garbee <robert@gag.com>2012-07-19 11:40:20 -0600
commite177cfb477f7ce8dc18fa8dcb3208867c0bee336 (patch)
tree65d4fe0b61ec3a8a1158668326684079cda4654b
parentada6f2dfc045e77cb9499f20cdec1b4a54ef0db1 (diff)
telescience: steal last adc channel for icp3 most recent value
-rw-r--r--src/avr/ao_adc_avr.c5
-rw-r--r--src/avr/ao_pwmin.h1
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;