Mutila: Mouse's Utilities for Arduino
Oft-used utilities: debouncing buttons, averaging samples, and so on.
Millis.cpp
1 #include <Arduino.h>
2 #include "MutilaDebug.h"
3 #include "Millis.h"
4 
5 float _MillisOffsetMs = 0.;
6 
7 uint32_t Millis() {
8  return millis() + (uint32_t)_MillisOffsetMs;
9 }
10 
11 uint32_t MillisSince(uint32_t previousMs, uint32_t now)
12 {
13  if (now == 0) {
14  now = Millis();
15  }
16 
17  return now >= previousMs ? (now - previousMs) : (0xFFFFFFFF - previousMs + now);
18 }
19 
20 bool DoEvery(uint32_t periodMs, uint32_t& previousMs, uint32_t now)
21 {
22  if (now == 0) {
23  now = Millis();
24  }
25 
26  if (MillisSince(previousMs, now) > periodMs) {
27  previousMs = now;
28  return true;
29  } else {
30  return false;
31  }
32 }
33 
34 void AddMillisOffset(float ms)
35 {
36  _MillisOffsetMs += ms;
37 }
38