Sto usando un Arduino Uno per inviare informazioni sul tempo e sulla tensione tramite la porta seriale a Python per tracciare. Tuttavia, i tempi degli intervalli tra i timestamp successivi sembrano aumentare nel tempo, influenzando la mia rappresentazione. Ciò è particolarmente vero quando il baud rate è impostato su 9600, dove le mie differenze di tempo iniziali forse sono 1320 e aumentano a 16400 dopo un periodo di tempo relativamente breve. Quando questa velocità è impostata a un massimo di 115200 bps, la variazione è più lenta e meno evidente, da circa 1340 a 1500 anche dopo un periodo relativamente lungo di invio. Tutti i tempi sono indicati in microsecondi.
Vorrei sapere se posso ridurre o eliminare questo effetto e se non capisco perché esiste. Ho letto cose su interruzioni e ritardi che causano questo, ma non apprezzo pienamente la complessità dell'elettronica a portata di mano e vorrei sapere:
- Posso ottenere una maggiore precisione nei tempi?
- Cosa causa questo cambiamento nei tempi?
Ecco quello che ho attualmente:
#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()
? Quella chiamata dura sempre la stessa quantità di tempo?