TridentTD / TridentTD_EasyFreeRTOS_Ardu

TridentTD's Multitasking FreeRTOS for Arduino

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TridentTD_EasyFreeRTOS_Ardu Library

             ไลบรารี่สำหรับ เขียนแบบ Multitasking แบบ TridentTD บนเพรตฟอร์ม Arduino
อาทิ Arduino UNO , Arduino Mega เป็นต้น

image

วิธีการใช้งาน

  1. เรียกใช้ไลบรารี่
     #include <TridentTD_EasyFreeRTOS_Ardu.h>
  1. ประกาศตัวแปร task ย่อยๆ และ ฟังกชั่น ที่ task จะเรียกขึ้นทำงาน
     TridentOS   task1, task2, task3;
     void task1_func(void*), task2_func(void*), task3_func(void*);
  1. รูปแบบมาตรฐาน ฟังก์ชั่น task ย่อยๆ ที่จะถูกเรียกใช้งาน เป็นดังนี้
    void task1_func(void*)  {   // ฟังกชั่นที่ task1 เรียกทำงาน  - void ใช้ตัวพิมพ์เล็ก
          //----พื้นที่สำหรับประกาศตัวแปรที่ใช้ภายใน task นี้เท่านั้น----

          //-----------------------------------------------

          VOID SETUP() {  // VOID SETUP() ใน task ให้ใช้ตัวพิมพ์ใหญ่

          }
          VOID LOOP() {   // VOID LOOP() ใน task ให้ใช้ตัวพิมพ์ใหญ่

          }
    }

             หมายเหตุ
             ภายในฟังกชั่น task ให้ใช้ delay ด้วยคำสั่ง DELAY(..) ตัวพิมพ์ใหญ่เท่านั้น

  1. หากจะเรียก task ไหนทำงาน เช่น สำหรับ task1 ใช้คำสั่ง
     task1.start(task1_func);
  1. หากจะหยุด task ไหนทำงาน เช่น สำหรับ task1 ใช้คำสั่ง
     task1.stop();
  1. หากจะใช้งานต่อ task ไหนทำงาน เช่น สำหรับ task1 ใช้คำสั่ง
     task1.resume();
  1. สำหรับการแลกเปลี่ยนข้อมูลระหว่าง task ให้ ประกาศตัวแปรไว้ใน
    พื้นที่ ประกาศตัวแปรสำหรับแชร์ระหว่าง task (ดูที่ Template)
    โดย ให้มีมาตรฐานการตั้งชื่อ ตัวแปรสำหรับแชร์ระหว่าง task ให้ขึ้นต้นนำด้วยตัว x (เอ็กซ์พิมพ์เล็ก)
    //------- พื้นที่สำหรับประกาศตัวแปรแชร์ระหว่าง task ---------------
     float  xDHT_temp, xDHT_humid;    // มีตัว x เล็กนำหน้า เพื่อง่ายต่อการสังเกตุ
    //---------------------------------------------------------

VDO Tutorial : Multitask-Exchange Variables Example
Multitask

การจูนพื้นที่เม็มโมรี่สำหรับ task นึงๆ ใน Arduino UNO

             เนื่องจาก Arduino Uno เป็น MCU ขนาด 8bit มีพื้นที่เม็มโมรี่ในการทำงานที่มีขนาดเล็ก
บางคราวเราจึงมีความจำเป็นต้องมีการปรับจูนพื้นที่เม็มสำหรับ task นึงๆให้เหมาะสม
เพื่อให้หลายๆ task สามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพ

วิธีการปรับจูนพื้นที่เม็มโมมี่ สำหรับ task นึงๆสามารถปรับได้ด้วยคำสั่งดังนี้

     task1.start(task1_func, NULL, 64);  // ขอใช้พื้นที่ขนาดเพียง 64bytes

TridentTD
29 พฤษภาคม 2561 (ปีแห่งฤดูฝนตกชุก)
วันวิสาขบูชา ขึ้น ๑๕ ค่ำเดือน ๗
แห่งปีอธิกมาส ปีที่มีเดือนแปดสองหน

About

TridentTD's Multitasking FreeRTOS for Arduino


Languages

Language:C 83.7%Language:C++ 16.3%