First, I want to confirm how configUSE_TIME_SLICING = 0 works.
Assuming two processes A and B at the same priority, I understand (I think)
as long as A calls no FreeRTOS functions or only *FromISR" functions it will not lose the CPU to B, but of course may lose the CPU to interrupts and higher priority tasks.
If A calls a function that blocks (send/receive with timeout, vDelayUtil with a timeout in the future), B will execute (assuming it is READY)
I am unsure of taskYield, and whether vDelay(1) guarantees a task switch to B (assuming B is READY).
Is there any other “standard” way of forcing the task switch?
In particular, I am considering how to share common resources (in my case I2C, SPI and DSP on a dsPIC33E processor and a non-reentrant sprintf), and think of placing all process that use the resource on the same priority level, in particular all process that use the math(DSP) functions. This seems easier (but perhaps not) than protecting the calculations with semaphores/mutexes, but certainly easier than trying to move everything to a single process.