From 96f47bf44f732de93e3277315c8b7e15df3c4cba Mon Sep 17 00:00:00 2001 From: Harald Barth Date: Fri, 25 Nov 2022 10:48:18 +0100 Subject: [PATCH] protect analogvals read from interrupt --- DCCTimerAVR.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/DCCTimerAVR.cpp b/DCCTimerAVR.cpp index d98d3d4..043edfb 100644 --- a/DCCTimerAVR.cpp +++ b/DCCTimerAVR.cpp @@ -169,9 +169,13 @@ int16_t ADCee::ADCmax() { int ADCee::read(uint8_t pin, bool fromISR) { (void)fromISR; // AVR does ignore this arg uint8_t id = pin - A0; + int a; // we do not need to check (analogvals == NULL) // because usedpins would still be 0 in that case - return analogvals[id]; + noInterrupts(); + a = analogvals[id]; + interrupts(); + return a; } /* * Scan function that is called from interrupt