ขอถามเรื่องคำสั่งหน่อยนะครับ

  • 2 Replies
  • 1683 Views
*

Offline LFC

  • *
  • 10
    • View Profile
คำสั่ง t.update(); ใน Example ของ TIMER  มันหมายถึงอะไรอะครับ ผมงงมาก ขอรบกวนพี่ๆช่วยตอบหน่อยนะครับ ขอบคุณครับ

void loop(void)
{
    t.update();
}

ผมก็ยังงงๆนะครับ

*

Offline ozuke

  • *****
  • 118
    • View Profile
    • MCU & Computer Programing Learning by Wittawat Sompong
ผมก็งงครับ แต่ผมก็หาจนเจอะ

http://www.doctormonk.com/2012/01/arduino-timer-library.html

เนื่องจาก Lib Timer ที่คุณว่านั้นมันเป็นตัวจำลอง Timer ขึ้นมา
จึงไม่สามารถจับเวลาด้วยตัวมันเองได้ หรือทำงานเป็น Background ได้
ดังคำสั่ง t.update(); จึงเป็นคำสั่งให้ Object Timer นั้นอัพเดทเวลาของตัวเอง


อ้างอิงจากโค้ดบรรทัดที่ 112 - 127 ของไฟล์ Timer/Timer.cpp
Code: [Select]
void Timer::update(void)
{
unsigned long now = millis();
update(now);
}

void Timer::update(unsigned long now)
{
for (int8_t i = 0; i < MAX_NUMBER_OF_EVENTS; i++)
{
if (_events[i].eventType != EVENT_NONE)
{
_events[i].update(now);
}
}
}

จากโค้ดจะเห็นว่าคำสั่ง update(); จะมีไว้สำหรับอัพเดทเวลา
เมื่อเวลานั้นมากกว่าหรือเท่ากับเวลาที่ตั้งเอาไว้โปรแกรมก็จะโดดไปทำงานตาม Event ที่เราตั้งค่าเอาไว้ครับ

"ถ้าผมลบคำสั่ง t.update() ออกหรือมาสั่งงานคำสั่งนี้ช้าหล่ะ?"
มันก็จะเกิดความผิดเพี้ยนทางเวลาของ Event ที่คุณตั้งไว้ครับ