diff options
-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; |