You need to be aware that there are blocking functions involved. The println() for example, since there are a different number of calls in each task, depending on the baud rate, the smaller it is and the larger the number of characters, the smaller the amount of data sent by the Serial port from each task with the same priority level. Another strongly blocking function is the ADC, which even without knowing the library you are using, looks like a callback for a sample-hold/conversion in a single instance. In short, consider a timed call, or the use of semaphores as Aussie Susan mentioned.