Hello Roberto,
Use whichever timer is most suited to your project requirements. However, for a time-based kernel, a timeslot period of 50 microseconds (say 500 bus cycles) is really too short unless your tasks are extremely simple. My normal expectation would be a timeslot period in the milliseconds region, so useful work can be done without overflow of the timeslots.
If you have operations that must be processed every 50 microseconds, this code should be directly incorporated within the timer interrupt service routine (ISR), and the code would need to be kept very short (the ISR should be completed within significantly less than 500 bus cycles).
In this case, you would probably need to use an output compare interrupt associated with a TPM channel. This is the method that the previously posted sample assembly code uses.
Application note AN2616 may also be of interest to you. Look in the FAQ section for the various methods available for implementing ISRs in C, using CW.
Regards,
Mac