กำหนดเวลาความแม่นยำสูงบน Arduino สำหรับการสื่อสารแบบอนุกรม
ฉันใช้ Arduino Uno เพื่อส่งข้อมูลเวลาและแรงดันไฟฟ้าผ่านพอร์ตอนุกรมไปยัง Python เพื่อลงจุด อย่างไรก็ตามการกำหนดช่วงเวลาระหว่างการประทับเวลาต่อเนื่องจะเพิ่มขึ้นเมื่อเวลาผ่านไปส่งผลต่อการวางแผนของฉัน นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเมื่อตั้งค่าอัตรารับส่งข้อมูลเป็น 9600 ซึ่งความแตกต่างของเวลาเริ่มต้นของฉันอาจเป็น 1320 และเพิ่มขึ้นเป็น 16400 หลังจากช่วงเวลาสั้น ๆ เมื่ออัตรานี้เพิ่มสูงสุดถึง 1,150,200 bps การเปลี่ยนแปลงจะช้าลงและสังเกตได้น้อยลงจากประมาณ 1,340 เป็น 1,500 แม้หลังจากการส่งในระยะยาว เวลาทั้งหมดถูกกำหนดในหน่วยไมโครวินาที ฉันต้องการทราบว่าฉันสามารถลดหรือกำจัดผลกระทบนี้ได้หรือไม่และหากไม่เข้าใจว่าทำไมถึงมีอยู่จริง ฉันได้อ่านสิ่งต่าง ๆ เกี่ยวกับการขัดจังหวะและความล่าช้าที่ก่อให้เกิดสิ่งนี้ แต่ฉันไม่ได้ชื่นชมความซับซ้อนของอุปกรณ์อิเล็กทรอนิกส์ในมือและอยากจะรู้ว่า: ฉันจะได้รับความแม่นยำมากขึ้นในเวลา? ทำให้การเปลี่ยนแปลงในเวลานี้คืออะไร? นี่คือสิ่งที่ฉันมีอยู่ในปัจจุบัน: #include <eHealth.h> extern volatile unsigned long timer0_overflow_count; float fanalog0; int analog0; unsigned long time; byte serialByte; void setup() …