Arduino Uno를 사용하여 직렬 포트를 통해 Python에 시간 및 전압 정보를 보내 플로팅합니다. 그러나 연속 타임 스탬프 사이의 간격 타이밍은 시간이 지남에 따라 증가하여 플로팅에 영향을 미칩니다. 이것은 보오율이 9600으로 설정 될 때 특히 그렇습니다. 여기서 초기 시간 차이는 1320 일 수 있으며 비교적 짧은 시간 후에 16400으로 증가합니다. 이 속도를 최대 115200bps로 설정하면 상대적으로 장시간 전송 한 후에도 약 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()
합니까? 그 전화는 항상 같은 시간 동안 지속됩니까?