I am using vTaskDelay in every task. I have no problem using a single task.but when I create the second task, one task gets blocked and the other one works correctly in response to its ticks (increments correctly) but it increments again on the tick of the blocked task.
Both tasks start correctly but later it goes wrong as described above.
I have tried to use taskYIELD calls instead of vTaskDelay and it works if priority of both tasks is the same. highest priority task gets blocked if I give different priorities to both created tasks.
I would appreciate any hint or clue on how to find the problem or how to fix it
I took a quick look at your code and the only thing I can suggest is to convert the C code in the naked functions into assembler code. Whether this is necessary or not is dependent on the version of GCC being used. Compare your portASM.c to FreeRTOSSourceportableGCCARM7_LPC23xxportASM.c to see the differences.
Other than that, try it on real ARM9 hardware, historically support requests from using using simulators highlight simulator bugs rather than code bugs.