Ubuntu 14.04-LTS, Acer i5, Arduino 1.8.1 The non-blocking code take from the Digital Example for Blink no delay.
With "good" defined I get
Start
Stat = 3
Stat = 2
Stat = 1
Stop
REM out "good" I get
Start
Stop
bool Err = false;
int procDelay = 3000;
unsigned long prevMillis = 0;
void showStatus(int mins) {
Serial.print(" Stat = ");
Serial.println(mins);
}
#define good
void procWait(int mins) {
for (int i = mins; i > 0; i--) {
#ifdef good
showStatus(i);
delay(procDelay);
#else
unsigned long currMillis = millis();
if (currMillis - prevMillis > procDelay) {
prevMillis = millis();
showStatus(i);
}
#endif
}
}
void progTest(int mins) {
if ((mins > 0) && (!Err)) {
procWait(mins);
}
}
void setup() {
Serial.begin(115200);
while (!Serial);
Serial.println("Start");
progTest(3);
Serial.println("Stop");
}
void loop() {
// put your main code here, to run repeatedly:
}