嵌入式與韌體
想每1 ms進行一次固定的控制運算。在不使用OS的微控制器上,下列何者是最適當的實作方式?
- A以每1 ms一次的計時器中斷設立旗標,主迴圈查看旗標後進行運算
- B在主迴圈中放入大約需要1 ms的空迴圈來製造間隔
- C每次運算完成就重新啟動微控制器
查看答案與解析
正確答案:A. 以每1 ms一次的計時器中斷設立旗標,主迴圈查看旗標後進行運算
以空迴圈製造時間的話,間隔會隨其他處理所花的時間或編譯器的最佳化而改變,並不準確。硬體計時器不受處理影響,能準確計數,因此以每1 ms一次的中斷為基準,就能保持固定的間隔。若運算很短,也可以直接在中斷中進行;若很長,則以旗標通知並在主迴圈中進行,就不會妨礙其他中斷。
- A. 正確。可用硬體計時器製造準確的間隔。
- B. 間隔會隨其他處理的時間而改變,並不準確。
- C. 不需要重新啟動。