stabilizerTask是如何以1000Hz的频率执行的呢?
Closed this issue · 6 comments
HelloIDTC commented
在stabilizerTask任务的while(1)循环中并没有调用vTaskDelayUntil之类的时间函数,那么stabilizerTask是如何以1000Hz的频率执行的呢?
leeebo commented
@HelloIDTC stabilizerTask
是传感器事件驱动的,传感器是 1000 Hz 报中断,所以 stabilizerTask
以同样的频率执行
HelloIDTC commented
@leeebo 感谢回复
是不是执行到sensorsWaitDataReady()这里,然后stabilizerTask任务阻塞,等待传感器1ms中断然后唤醒stabilizerTask任务?
那么传感器1000Hz的中断时间是非常精确的么?会不会有时候有抖动?
我看crazyflie的源码原来在stabilizerTask中会调用vTaskDelayUntil(&lastWakeTime, F2T(RATE_MAIN_LOOP));来延时,后来也改成等待传感器中断的方式了,不知道有什么优势
leeebo commented
@HelloIDTC 传感器来的中断信号是基本准确的,你可以用逻辑分析仪抓一下