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ć.