From: Jan "Yenya" Kasprzak Date: Mon, 3 Jun 2013 12:11:23 +0000 (+0200) Subject: adc.c: reorder ADC channels X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=bike-lights.git;a=commitdiff_plain;h=5d0ab95bb20a304693c1e0ec6c7900b7090d03e2 adc.c: reorder ADC channels - those which need to be measured more frequently, put at the beginning. --- diff --git a/firmware/adc.c b/firmware/adc.c index ef71477..c6b113d 100644 --- a/firmware/adc.c +++ b/firmware/adc.c @@ -3,11 +3,12 @@ #include "lights.h" -#define AMBIENT_ADC N_PWMLEDS -#define BATTERY_ADC (N_PWMLEDS + 1) -#define ADC1_GAIN20 (N_PWMLEDS + 2) -#define BUTTON_ADC (N_PWMLEDS + 3) -#define ZERO_ADC (N_PWMLEDS + 4) +// pwmleds are measured continuously (when active) +#define AMBIENT_ADC N_PWMLEDS // measured every jiffy (16 Hz) +#define BUTTON_ADC (N_PWMLEDS + 1) // measured every jiffy (16 Hz) +#define BATTERY_ADC (N_PWMLEDS + 2) // once per second +#define ADC1_GAIN20 (N_PWMLEDS + 3) // once per second +#define ZERO_ADC (N_PWMLEDS + 4) // must be last #define NUM_ADCS ZERO_ADC @@ -20,9 +21,9 @@ struct { { 0, 1, PWMLED_ADC_SHIFT }, // pwmled 2 { 0, 1, PWMLED_ADC_SHIFT }, // pwmled 3 { 0, 1, AMBIENT_ADC_SHIFT }, // ambient + { 0, 1, 0 }, // buttons { 0, 1, 0 }, // battery { 0, 1, 0 }, // gain20 - { 0, 1, 0 }, // buttons }; volatile static unsigned char current_adc, current_slow_adc; @@ -47,16 +48,16 @@ static void setup_mux(unsigned char n) case AMBIENT_ADC: // ambient light: 1.1V, ADC5 (PA6), single-ended ADMUX = _BV(REFS1) | _BV(MUX2) | _BV(MUX0); break; + case BUTTON_ADC: // buttons: 1.1V, ADC3, single-ended + PORTA |= _BV(PA3); // +5V to the voltage splitter + ADMUX = _BV(REFS1) | _BV(MUX1) | _BV(MUX0); + break; case BATTERY_ADC: // batt voltage: 1.1V, ADC6 (PA7), single-ended ADMUX = _BV(REFS1) | _BV(MUX2) | _BV(MUX1); break; case ADC1_GAIN20: // gain stage offset: 1.1V, ADC1,1, gain 20 ADMUX = _BV(REFS1) | _BV(MUX3) | _BV(MUX2) | _BV(MUX0); break; - case BUTTON_ADC: // buttons: 1.1V, ADC3, single-ended - PORTA |= _BV(PA3); // +5V to the voltage splitter - ADMUX = _BV(REFS1) | _BV(MUX1) | _BV(MUX0); - break; case ZERO_ADC: // zero: 1.1V, ADC1 (PA1), single-ended ADMUX = _BV(REFS1) | _BV(MUX0); break; @@ -240,12 +241,12 @@ ISR(ADC_vect) { // IRQ handler case AMBIENT_ADC: ambient_adc(adc_sum); break; - case BATTERY_ADC: - battery_adc(adc_sum); - break; case BUTTON_ADC: button_adc(adc_sum); break; + case BATTERY_ADC: + battery_adc(adc_sum); + break; case ADC1_GAIN20: adc1_gain20_adc(adcval); break;