看板 ASM 關於我們 聯絡資訊
各位板友好 目前在練習RTOS的使用,但是碰上了一些問題 TASK_1每秒偵測開關所代表的數字(1 ~ 5) TASK_2利用TASK_1偵測到的參數,做LED閃爍與延遲 每秒閃1~5次並延遲1~5秒,起初練習時,我用TASK_2-6... 後來想學著用參數的傳遞,這樣應該只需要一個TASK_2, 只是兩個是否都會碰到延遲的問題呢? 因為在判斷參數的更動,我用TASK_1去做,然後傳給TASK_2 當參數改變,TASK_2完成一次loop,可能還會有一段時間, TASK_1發現參數改變,那該如何馬上讓TASK_2做新一輪的任務, 如果在TASK_2加一個判斷式,好像也得loop跑完才能執行。 這樣該如何解決延遲的問題呢? 我有想過刪除再創Orz 也有查到似乎能用Quene或是Event去做? 懇請板友解惑,也希望沒有違反板規,謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.176.170 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1510767988.A.546.html ※ 編輯: fengwing (114.37.176.170), 11/16/2017 01:50:54
purpon: 看不太懂你的問題。如果task2 用sleep特定秒數,這樣就是 11/17 00:14
purpon: 在blocking state,之後等到秒數到了才回到ready state. 11/17 00:14
不好意思說明的不太好Orz task1偵測、傳遞參數,以及讓task2 suspended、resume, task2重覆做當下的任務,比如說重覆1秒閃5次、延遲5秒, 會有5種不同的參數被傳進task2,讓task2有5種運作方式, 我想請教當task1隨機時間傳遞不同的參數給task2, 當task2運行到一半的時候,因參數不同,要求task2做任務的切換, task2是不是會將任務的最後一次迴圈做完,然後才會改做新的任務呢? 這樣我該如何讓task2立即中止舊任務,馬上開始做新的任務呢? ※ 編輯: fengwing (118.166.214.149), 11/17/2017 09:13:35
purpon: 這感覺跟rtos沒什麼關係吧。 你task2在做task時進到一個wh 11/17 09:19
purpon: ile loop 偵測到有新參數時,就break,這樣能解決? 11/17 09:19
我在學習使用rtos的函數,還不是很熟,所以都用很簡單的例子Orz ※ 編輯: fengwing (118.166.214.149), 11/18/2017 12:15:12