Advertisement
gm310509

Delays via millis wraparound test

Jun 2nd, 2023
1,125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | Source Code | 0 0
  1. void outputCountdown(char *lbl,
  2.     unsigned long currMillis,
  3.     unsigned long prevMillis,
  4.     unsigned long interval) {
  5.  
  6.  
  7.   Serial.print('\n');Serial.println(lbl);
  8.   Serial.print("Count from: ");
  9.   Serial.print(prevMillis);
  10.   Serial.print(", interval: ");
  11.   Serial.println(interval);
  12.   Serial.print("target millis: ");
  13.   Serial.println(prevMillis + interval);
  14.  
  15.   unsigned long elapsed;
  16.   do {
  17.     currMillis++;
  18.     elapsed = currMillis - prevMillis;
  19.     Serial.print("curr: ");
  20.     Serial.print(currMillis);
  21.     Serial.print(", elapsed: ");
  22.     Serial.print(elapsed);
  23.     Serial.println(elapsed >= interval ? " Expired" : "...");
  24.     delay(100);
  25.   } while (elapsed < interval);
  26. }
  27.  
  28. void setup() {
  29.   Serial.begin(115200);
  30.  
  31.     // Parameters: lable, currentMillis, previous millis, interval);
  32.   outputCountdown("wrap: ", 0xFFFFFFF8, 0xFFFFFFF8, 16);
  33.   outputCountdown("plain: ", 25, 25, 10);
  34. }
  35.  
  36. void loop() {
  37.   // put your main code here, to run repeatedly:
  38.  
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement