我正在使用Arduino Uno通过串行端口将时间和电压信息发送到Python进行绘图。但是,连续时间戳之间的间隔时间似乎随着时间而增加,影响了我的绘图。当波特率设置为9600时尤其如此,我的初始时间差可能是1320,而在相对较短的时间后增加到16400。当此速率设置为最大115200 bps时,即使经过较长时间的发送,更改也较慢且不那么明显,从1340到1500。所有时间均以微秒为单位。
我想知道我是否可以减少或消除这种影响,以及是否不知道为什么存在。我已经阅读了有关引起这种情况的中断和延迟的内容,但是我不完全了解当前电子设备的复杂性,并且想知道:
- 我可以在时间上获得更高的精度吗?
- 是什么原因导致时间变化?
这是我目前拥有的:
#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()
办?该通话是否总是持续相同的时间?