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()
ますか?その通話は常に同じ時間続きますか?