作者fengwing (liberty)
看板ASM
標題[問題] RTOS傳參數給Task
時間Thu Nov 16 01:46:25 2017
各位板友好
目前在練習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://webptt.com/m.aspx?n=bbs/ASM/M.1510767988.A.546.html
※ 編輯: fengwing (114.37.176.170), 11/16/2017 01:50:54
1F:推 purpon: 看不太懂你的問題。如果task2 用sleep特定秒數,這樣就是 11/17 00:14
2F:→ 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
3F:推 purpon: 這感覺跟rtos沒什麼關係吧。 你task2在做task時進到一個wh 11/17 09:19
4F:→ purpon: ile loop 偵測到有新參數時,就break,這樣能解決? 11/17 09:19
我在學習使用rtos的函數,還不是很熟,所以都用很簡單的例子Orz
※ 編輯: fengwing (118.166.214.149), 11/18/2017 12:15:12