Special use of vTaskDelayUntil()

Hi, Normally vTaskDelayUntil() is used where you want to execute your task periodically with a fixed frequency. I want to run my task with a frequency of 50Hz as long as two global values are different. Then the task is blocking on a queue waiting for a command. My problem: When executing my code like shown below I sometimes get a strange behaviour. The inner while loop which shall be executed with 50Hz repeats much too fast without any delay. My question: When using vTaskDelayUntil() in this context the single initialization prior to the first while loop does not seem to be sufficient. Must I call xTaskGetTickCount() every time I enter the inner while loop? Snippet:     static portTASK_FUNCTION(vSampleTask, pvParameters) {
    portBASE_TYPE xRes;
    xTasksvTypeCommand xCmdIn;
    portTickType xLastWakeTime;
   
    // Initialize with current tick count
    xLastWakeTime = xTaskGetTickCount();
   
    // Task loop
    while (1) {
    while (global_a != global_b) {
    // Do some periodic action
    // …
    vTaskDelayUntil(&xLastWakeTime, 20 / portTICK_RATE_MS);
    }
    // Block until any command has been written to the task command queue
    xRes = xQueueReceive(xCommandQueue, &xCmdIn, portMAX_DELAY);
    if (xRes == pdPASS) {
    // Process command
    // …
    }
    }
    } Thank you for your comments! Regards

Special use of vTaskDelayUntil()

You must re-init xLastWakeTime after you unblock from the queue.