How to stop FreeRTOS running Task

rahulsakhare wrote on Friday, November 11, 2016:


I have project which is having many tasks and working fine on FreeRTOS. out of these tasks two task are called from ISR.
I want to change the implimatation such that if one interrupt is exicuting and anothet interrupt occurs, i wnat to stop the exicuting task and resume the secont task.

Senario would be like, i have system which receives illumination and shock/vibration interrupts and resumes the task for illumination and shock data processeng respectivly.
E.g if illumination task is running due to illumination interrupt and during this time if i got shock interrupt
i want stop illumination task and resume shock task.

Note: Both the tasks are having same priority and i dont want to change the priority of tasks.

richard_damon wrote on Friday, November 11, 2016:

It sounds like you DO want to change the priority of the tasks, as you are impling that you need to process the shock task over the illumination task.

Now, one thing is a bit unclear from your description. when you say ‘stop’ the illumination task, do you mean preempt its running and let the shock task run, and when the shock task finishes then the illumination task can finish, or do you mean that when the shock interrupt comes in, the work of the illumination task is now not needed at all and should be discarded.

In the first case, another important question is, you have said that a shock should suspend a previous illumination, if you get an illumination while processing a shock what should happen, should it wait for the shock to finish and then process the illumination (in which case you DO mean the shock has a higher priority) or do you want the latest interrupt to be processed first (in which case you need to think about the possibility of an interrupt occuring when that type of interrupt is already being processed)