I have two tasks that are on a 10 ms time slice.
My understanding is that after 10ms each task will defer to the highest priority task.
Here is my template:
const TASK_TEMPLATE_STRUCT MQX_template_list[] ={ /* Task Index, Function, Stack, Priority, Name, Attributes, Param, Time Slice */{TELNET_TASK_ID, uTelnet_task, 1500, 10, "nc500_Telnet" , 0, 0, 0 },{HTTP_TASK_ID, uhttp_task, 2500, 7, "http" , 0, 0, 0 },{ARCNET_TASK_ID, uArcnet_task, 512, 9, "Arcnet" , 0, 0, 0 },{SOCKET_TASK_ID, uSocket_task, 1000, 7, "Socket" , 0, 0, 0 },{LIF_TASK_ID, uLif_task, 700, 10, "Lif" , 0, 0, 0 },{FLASH_UP_TASK_ID, uFlash_Up_task, 1000, 10, "Flash_up" , MQX_AUTO_START_TASK, 0, 0 },{VNC_TASK_ID, uVNC_task, 3000, 10, "VNC", 0, 0, 10},{A2D_TASK_ID, uA2D_task, 1000, 10, "A2D", 0, 0, 10}, {0, 0, 0, 0, 0, 0, 0, 0 }}; My "VNC" and "A2D" tasks use a time slice of 10ms. My "Arcnet" task has a priority of 9 and "VNC has a priority of 10.
During a memory write operation that takes longer than 10 ms to complete while in my VNC task the "Arcnet " task switches on and changes the chip select on my hardware and when I return to the VNC task I am no longer selecting the correct memory chip.
I have tried disabling interrupts during big memory operations but didnt acheive good results.
I have also tried _sched_set_rr_interval(_task_get_id(),0);
but it didnt work also.