diff --git a/firmware/core/adc/adc.c b/firmware/core/adc/adc.c index 37613c2..71fd7be 100644 --- a/firmware/core/adc/adc.c +++ b/firmware/core/adc/adc.c @@ -67,6 +67,7 @@ static bool _adcInitialised = false; static uint8_t _adcLastChannel = 0; +uint8_t adcMutex = 0; /**************************************************************************/ /*! @@ -89,6 +90,7 @@ static uint8_t _adcLastChannel = 0; /**************************************************************************/ uint32_t adcRead (uint8_t channelNum) { + adcMutex = 1; if (!_adcInitialised) adcInit(); uint32_t regVal, adcData; @@ -154,11 +156,13 @@ uint32_t adcRead (uint8_t channelNum) /* return 0 if an overrun occurred */ if ( regVal & ADC_DR_OVERRUN ) { + adcMutex = 0; return (1); } /* return conversion results */ adcData = (regVal >> 6) & 0x3FF; + adcMutex = 0; return (adcData); } diff --git a/firmware/core/adc/adc.h b/firmware/core/adc/adc.h index 29e168d..72aa317 100644 --- a/firmware/core/adc/adc.h +++ b/firmware/core/adc/adc.h @@ -41,6 +41,7 @@ #include "projectconfig.h" +extern uint8_t adcMutex; uint32_t adcRead (uint8_t channelNum); void adcInit (void);