Hirdetés

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

  • Janos250

    őstag

    válasz Teasüti #7312 üzenetére

    Hát, ezt éppen nem próbáltam. Elég érdekes ez a két mag, több task rendszer. Azért pár dolgot leírok, nem Neked, hanem azoknak, akik még most kezdik. Automatikusan a core1-re megy a loop. Azt úgy lehet áttenni a core0-ra, ha megkeressük a main programot, és átírjuk benne 0-ra. Megy, bár lehetnek gondok, pl. mindkét magnak - úgy tűnik - külön számlálója van, ezért vigyázni kell az időzítésekkel. A számlálót ezzel lehet olvasni:
    __asm__ __volatile__("esync; rsr %0,ccount":"=a" (CycleCount32));
    Ez 240 MHz-el jár, de csak 32 bites, ezért tizen.. másodpercenként átfordul. Én csináltam hozza egy 64-bitest, az már az unokám életében sem fog átfordulni. Viszont, mivel gyors, finom időzítéseket lehet vele csinálni. Elvileg. Ugyanis hiába próbálunk mindent átrakni a core1-ről a 0-ra, akkor is szaggat valami. Talán a saját szoftver számlálója, amit az xTaskGetTickCount()-al lehet olvasni. A 240 MHz-es számlálót írni lehet, de ne írd, mert megbolondul az időzítés. Hogy pontosan mi hol fut, azt nem lehet tudni, mert a vTaskList nem működik. Meg a statisztika sem. A taskok számát le lehet kérdezni, de nem sokra mentem vele, hogy tudom, hogy nálam 7 task van, amiből háromról tudom, hogy mi, a többiről nem. A taskról információt akkor lehet lekérni, ha tudjuk a "nevét". Na, ezt nem tudjuk. Az IRAM-ba rakással is vigyázni kell, mert amit oda pakolunk, csak az egyik magon futtatható. Na, így egy szuszra ennyit.
    Egyébként, ha a specialitásait nem akarja kihasználni az emberfia, akkor nagyon jó kis proci, ajánlom mindenkinek. Két mag, gyors, multitasking, de hiába freeRTOS, nem igazán RT (real time), a már említett okok miatt. Előbb-utóbb csak megoldja valaki, hogy a core1-en ne legyen szaggatás, de ezt még a neten is keresik.
    Ha mondjuk egy UNO-n futó programot teszünk rá, akkor természetesen ilyen gondok nincsenek, csak annyit tapasztalunk, hogy megy mint a szélvész. Ajánlom is mindenkinek, hiszen alig drágább mint egy kínai UNO, az eredeti UNO árából meg féltucatot vehetünk.
    Neked:
    Kíváncsiságból megnéztem az RTM kezelést, de csak megnéztem, mert elég macerásnak tűnik első látásra, pedig nagyon jó lenne. Berakja az ember egy külön memória területre az adatokat (1 bit, hogy hi vagy low, és 15 bit a hossz, az időzítés), és utána elindítja, és a hardver sorra veszi ezeket a 16 bites (32= 2*16) adatsorokat és öntevékenyen kiküldi a "PWM" jelet.
    Az eredeti kérdésedhez: a static változókra mindenképpen vigyázz, mert az közös!

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