Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Teasüti

    nagyúr

    válasz Tankblock #7328 üzenetére

    Köszönöm a választ. Akkor nincs semmilyen ütközés kezelés FreeRTOS-nál?
    Ha meghívom 1000x, akkor ki is fagy a kernel memóriahiány miatt. :D

    Vagy Taskot suspendedbe tenni és felkelteni amikor kell....
    A delay() elvileg pont ezt csinálja az Arduino Core-ban:
    void delay(uint32_t ms)
    {
    vTaskDelay(ms / portTICK_PERIOD_MS);
    }

    Azért, mert így jóval egyszerűbb programozni - mondjuk led villogás mintákat** (ez a feladat kifejezetten komplex és így szükségtelenül bonyolult volna a millis() módszerrel, valamint az adott folyamatot se muszáj pörgetni addig mivel önálló task-ról lévén szó) - és a kernel megoldja magának a váltást, ahogy akarja.
    Ebben a környezetben a delay() nem kerülendő, hanem bátran használható. :K

    **Példa:
    led(on);
    delay(150);
    led(off);
    delay(100);
    kettőször ismétel;
    led(on); // És bekapcsolva marad, ha villant hármat.

    A prell-lel nem kívánok itt foglalkozni, a kérdésem megválaszolásra került, ennyi most elég. :R
    Erre magam is ismerem a lehetséges megoldásokat.
    Mondjuk esetemben inkább zavarszűrésről lesz szó, csak egyszer rá kéne néznem milyen jel jön a kapcsoló felől (vagy a tápegység felől, passz), mikor folyamatosan vibrál. Érdekes, álló motornál egyenletesen világít, járó motornál meg-megszakad a jel és véletlenszerű vibrálást okoz.

Új hozzászólás Aktív témák