From f5829ea4835c12a13da6cfff37d359c0c1b5dd5a Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 10 Dec 2010 23:14:43 +0000 Subject: [PATCH] Added interrupt disable protection, and enable interrupts early in the ISR. --- bacnet-stack/ports/bdk-atxx4-mstp/adc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bacnet-stack/ports/bdk-atxx4-mstp/adc.c b/bacnet-stack/ports/bdk-atxx4-mstp/adc.c index db482649..abee1df0 100644 --- a/bacnet-stack/ports/bdk-atxx4-mstp/adc.c +++ b/bacnet-stack/ports/bdk-atxx4-mstp/adc.c @@ -66,6 +66,7 @@ ISR(ADC_vect) value = ADCL; value |= (ADCH << 8); Sample_Result[index] = value; + __enable_interrupt(); /* clear the mux */ BITMASK_CLEAR(ADMUX, ((1<>2); + SREG = sreg; } return result; @@ -118,10 +123,14 @@ uint16_t adc_result_10bit( uint8_t index) /* 0..7 = ADC0..ADC7, respectively */ { uint16_t result = 0; + uint8_t sreg; if (index < ADC_CHANNELS_MAX) { adc_enable(index); + sreg = SREG; + __disable_interrupt(); result = Sample_Result[index]; + SREG = sreg; } return result;