* Re #3827: added mutex to getADC(), because adcRead() is not reentrant * Re #3827: alternative solution to prevent calling getADC() from different threads, because adcRead() is not reentrant * Cosmetics
This commit is contained in:
committed by
Bertrand Songis
parent
1e4470a007
commit
2dd8b8702f
+13
-8
@@ -1119,7 +1119,7 @@ void checkTHR()
|
||||
return;
|
||||
}
|
||||
|
||||
getADC();
|
||||
GET_ADC_IF_MIXER_NOT_RUNNING();
|
||||
|
||||
evalInputs(e_perout_mode_notrainer); // let do evalInputs do the job
|
||||
|
||||
@@ -1138,9 +1138,7 @@ void checkTHR()
|
||||
|
||||
while (1) {
|
||||
|
||||
SIMU_SLEEP(1);
|
||||
|
||||
getADC();
|
||||
GET_ADC_IF_MIXER_NOT_RUNNING();
|
||||
|
||||
evalInputs(e_perout_mode_notrainer); // let do evalInputs do the job
|
||||
|
||||
@@ -1171,6 +1169,12 @@ void checkTHR()
|
||||
doLoopCommonActions();
|
||||
|
||||
wdt_reset();
|
||||
|
||||
SIMU_SLEEP(1);
|
||||
#if defined(CPUARM)
|
||||
CoTickDelay(10);
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1200,6 +1204,9 @@ void alert(const pm_char * t, const pm_char * s ALERT_SOUND_ARG)
|
||||
|
||||
while(1) {
|
||||
SIMU_SLEEP(1);
|
||||
#if defined(CPUARM)
|
||||
CoTickDelay(10);
|
||||
#endif
|
||||
|
||||
if (keyDown()) break; // wait for key release
|
||||
|
||||
@@ -1474,7 +1481,7 @@ void getADC()
|
||||
s_anaFilt[x] = (s_anaFilt[x] - previous) + v;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#endif // #if defined(VIRTUAL_INPUTS)
|
||||
{
|
||||
//use unfiltered value
|
||||
s_anaFilt[x] = v * JITTER_ALPHA;
|
||||
@@ -1486,7 +1493,6 @@ void getADC()
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CPUARM)
|
||||
#define ANAFILT_MAX (2 * RESX * JITTER_ALPHA * ANALOG_MULTIPLIER - 1)
|
||||
StepsCalibData * calib = (StepsCalibData *) &g_eeGeneral.calib[x];
|
||||
if (IS_POT_MULTIPOS(x) && IS_MULTIPOS_CALIBRATED(calib)) {
|
||||
@@ -1500,10 +1506,9 @@ void getADC()
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // defined(CPUARM)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif // #if defined(CPUARM)
|
||||
|
||||
#endif // SIMU
|
||||
|
||||
|
||||
@@ -847,6 +847,11 @@ void checkAll();
|
||||
|
||||
#if !defined(SIMU)
|
||||
void getADC();
|
||||
#if defined(CPUARM)
|
||||
#define GET_ADC_IF_MIXER_NOT_RUNNING() do { if (s_pulses_paused) getADC(); } while(0)
|
||||
#else
|
||||
#define GET_ADC_IF_MIXER_NOT_RUNNING() getADC()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(SBUS)
|
||||
|
||||
@@ -737,14 +737,13 @@ void checkSwitches()
|
||||
while (1) {
|
||||
|
||||
#if defined(TELEMETRY_MOD_14051) || defined(TELEMETRY_MOD_14051_SWAPPED)
|
||||
// FIXME: One getADC() call only reads one 14051 MUX input. To have all switch states updated, we need to call it MUX_MAX+1 times.
|
||||
#define GETADC_COUNT (MUX_MAX+1)
|
||||
#define GETADC_COUNT (MUX_MAX+1)
|
||||
#elif defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS)
|
||||
#define GETADC_COUNT 1
|
||||
#define GETADC_COUNT 1
|
||||
#endif
|
||||
#ifdef GETADC_COUNT
|
||||
for (uint8_t i=0; i<GETADC_COUNT; i++) {
|
||||
getADC();
|
||||
GET_ADC_IF_MIXER_NOT_RUNNING();
|
||||
}
|
||||
#undef GETADC_COUNT
|
||||
#endif
|
||||
@@ -942,6 +941,9 @@ void checkSwitches()
|
||||
wdt_reset();
|
||||
|
||||
SIMU_SLEEP(1);
|
||||
#if defined(CPUARM)
|
||||
CoTickDelay(10);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -360,6 +360,7 @@ extern uint8_t main_thread_running;
|
||||
extern char * main_thread_error;
|
||||
|
||||
#define getADC()
|
||||
#define GET_ADC_IF_MIXER_NOT_RUNNING()
|
||||
#define getADC_bandgap()
|
||||
|
||||
#define SIMU_SLEEP(x) do { if (!main_thread_running) return; sleep(x/*ms*/); } while (0)
|
||||
|
||||
Reference in New Issue
Block a user