Tôi đang sử dụng Arduino Uno để gửi thông tin về thời gian và điện áp qua cổng nối tiếp tới Python để vẽ. Tuy nhiên, khoảng thời gian giữa các dấu thời gian liên tiếp dường như tăng theo thời gian, ảnh hưởng đến âm mưu của tôi. Điều này đặc biệt đúng khi tốc độ truyền được đặt thành 9600, trong đó chênh lệch thời gian ban đầu của tôi có thể là 1320 và tăng lên 16400 sau một khoảng thời gian tương đối ngắn. Khi tốc độ này được đặt ở mức tối đa là 115200 bps, sự thay đổi sẽ chậm hơn và ít được chú ý hơn, từ khoảng 1340 đến 1500 ngay cả sau một thời gian gửi tương đối dài. Tất cả thời gian được đưa ra trong micro giây.
Tôi muốn biết nếu tôi có thể giảm hoặc loại bỏ hiệu ứng này, và nếu không hiểu tại sao nó tồn tại. Tôi đã đọc những điều về sự gián đoạn và sự chậm trễ gây ra điều này, nhưng tôi không hoàn toàn đánh giá cao sự phức tạp của các thiết bị điện tử trong tay và muốn biết:
- Tôi có thể có được độ chính xác cao hơn trong thời gian?
- Điều gì gây ra sự thay đổi trong thời gian này?
Đây là những gì tôi hiện có:
#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()
làm gì? Cuộc gọi đó có luôn kéo dài cùng một khoảng thời gian không?