FreeRTOS - RTOS FundamentalsYou want a task to run every 200 ticks precisely using FreeRTOS. Which approach ensures this timing despite task execution time?AUse vTaskDelayUntil() with a previous wake time variableBUse vTaskDelay(200) at the end of the task loopCUse xTaskGetTickCount() inside the task and delay manuallyDUse vTaskDelay(100) twice in the task loopCheck Answer
Step-by-Step SolutionSolution:Step 1: Understand vTaskDelay() limitationUsing vTaskDelay(200) delays from current time, so task execution time adds up causing drift.Step 2: Use vTaskDelayUntil() for fixed periodic timingvTaskDelayUntil() uses a previous wake time to maintain exact periodic intervals regardless of execution time.Step 3: Evaluate other optionsManual delay or multiple delays do not guarantee precise timing; only vTaskDelayUntil() does.Final Answer:Use vTaskDelayUntil() with a previous wake time variable -> Option AQuick Check:Precise periodic task = vTaskDelayUntil() [OK]Quick Trick: Use vTaskDelayUntil() for exact periodic task timing [OK]Common Mistakes:Using vTaskDelay causes timing driftTrying manual delay calculationsIgnoring task execution time in timing
Master "RTOS Fundamentals" in FreeRTOS9 interactive learning modes - each teaches the same concept differentlyLearnWhyDeepVisualTryChallengeProjectRecallTime
More FreeRTOS Quizzes RTOS Fundamentals - Real-time vs general-purpose OS - Quiz 5medium RTOS Fundamentals - Real-time vs general-purpose OS - Quiz 3easy RTOS Fundamentals - Task states (Ready, Running, Blocked, Suspended) - Quiz 11easy Task Creation and Management - Stack size allocation - Quiz 3easy Task Creation and Management - Stack size allocation - Quiz 11easy Task Priorities - vTaskPrioritySet() dynamic priority - Quiz 9hard Task Priorities - vTaskPrioritySet() dynamic priority - Quiz 3easy Task Scheduling - Time-slicing for equal priority tasks - Quiz 10hard Task Scheduling - Task starvation and priority inversion - Quiz 2easy Task Scheduling - vTaskDelayUntil() for precise timing - Quiz 6medium