Я использую Arduino Uno для отправки информации о времени и напряжении через последовательный порт на Python для построения графика. Однако временные интервалы между последовательными метками времени, по-видимому, со временем увеличиваются, что сказывается на моем графике. Это особенно верно, когда скорость передачи данных установлена на 9600, где моя начальная разница во времени может быть 1320 и увеличивается до 16400 после относительно короткого периода времени. Когда эта скорость установлена на максимум 115200 бит / с, изменение происходит медленнее и менее заметно, с 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()
? Этот звонок всегда длится одинаковое количество времени?