Я використовую 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()
? Чи завжди цей дзвінок триває однакову кількість часу?