Używam Arduino do rejestrowania niektórych danych. W moim szkicu Arduino również użyłem tej millis()
funkcji, dzięki czemu mogę śledzić czas, w którym pobierana jest każda mierzona wartość. Zauważyłem jednak, że czas nie jest prawidłowy. Na przykład 30 sekund w prawdziwym życiu pojawia się tylko jako 10 sekund (wymyślony przykład).
Czy mam rację mówiąc, że funkcja opóźnienia Arduino wpływa na czas używania millis()
? Innymi słowy, załóżmy, że mam opóźnienie 50 ms, czy to oznacza, że millis()
funkcja zatrzymuje się również na ten czas, a następnie trwa i tak dalej na czas połączenia? Zauważyłem to, kiedy próbowałem wykreślić jakieś dane i stwierdziłem, że częstotliwość pików w moich danych była zbyt częsta, biorąc pod uwagę upływający czas. Więc chcę wiedzieć, czy to jest przyczyna tego niedopasowania czasowego, a jeśli tak, to jak to naprawić, aby zachować czas każdej próbki?
Aby podać kontekst, oto mój szkic:
#include <eHealth.h>
unsigned long time;
// The setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
}
// The loop routine runs over and over again forever:
void loop() {
float ECG = eHealth.getECG();
time = millis();
Serial.print(time);
Serial.print(" ");
Serial.print(ECG, 5);
Serial.println("");
delay(50);
}
millis()
są oparte na przerwie, więc delay()
nie powinny na to wpływać.