Używam Arduino Uno do wysyłania informacji o czasie i napięciu przez port szeregowy do Pythona w celu wykreślenia. Wydaje się jednak, że odstępy czasu między kolejnymi znacznikami czasu z czasem się zwiększają, co wpływa na moje planowanie. Jest to szczególnie prawdziwe, gdy szybkość transmisji jest ustawiona na 9600, gdzie moje początkowe różnice czasowe mogą wynosić 1320 i wzrastają do 16400 po stosunkowo krótkim czasie. Gdy ta szybkość jest ustawiona na maksymalnie 115200 bps, zmiana jest wolniejsza i mniej zauważalna, od około 1340 do 1500 nawet po stosunkowo długim okresie wysyłania. Wszystkie czasy podawane są w mikrosekundach.
Chciałbym wiedzieć, czy mogę zmniejszyć lub wyeliminować ten efekt, a jeśli nie rozumiem, dlaczego on istnieje. Czytałem już o przerwaniach i opóźnieniach powodujących to, ale nie w pełni doceniam złożoność elektroniki i chciałbym wiedzieć:
- Czy mogę uzyskać większą precyzję pomiaru czasu?
- Co powoduje tę zmianę czasu?
Oto, co obecnie mam:
#include <eHealth.h>
extern volatile unsigned long timer0_overflow_count;
float fanalog0;
int analog0;
unsigned long time;
byte serialByte;
void setup() {
Serial.begin(9600);
}
void loop() {
while (Serial.available()>0){
serialByte=Serial.read();
if (serialByte=='S'){
while(1){
fanalog0=eHealth.getECG();
// Use the timer0 => 1 tick every 4 us
time=(timer0_overflow_count << 8) + TCNT0;
// Microseconds conversion.
time=(time*4);
//Print in a file for simulation
//Serial.print(time);
//Serial.print(" ");
Serial.print(fanalog0,5);
Serial.print("\n");
if (Serial.available()>0){
serialByte=Serial.read();
if (serialByte=='F') break;
}
}
}
}
}
eHealth.getECG()
zrobić? Czy to połączenie zawsze trwa tyle samo?