嵌入式與韌體

想每1 ms進行一次固定的控制運算。在不使用OS的微控制器上,下列何者是最適當的實作方式?

  1. A以每1 ms一次的計時器中斷設立旗標,主迴圈查看旗標後進行運算
  2. B在主迴圈中放入大約需要1 ms的空迴圈來製造間隔
  3. C每次運算完成就重新啟動微控制器
查看答案與解析

正確答案:A. 以每1 ms一次的計時器中斷設立旗標,主迴圈查看旗標後進行運算

以空迴圈製造時間的話,間隔會隨其他處理所花的時間或編譯器的最佳化而改變,並不準確。硬體計時器不受處理影響,能準確計數,因此以每1 ms一次的中斷為基準,就能保持固定的間隔。若運算很短,也可以直接在中斷中進行;若很長,則以旗標通知並在主迴圈中進行,就不會妨礙其他中斷。

  • A. 正確。可用硬體計時器製造準確的間隔。
  • B. 間隔會隨其他處理的時間而改變,並不準確。
  • C. 不需要重新啟動。
練習這個領域 前往領域頁面

嵌入式與韌體的其他題目

  1. 關於微控制器的欠壓偵測(BOD、brown-out reset)的作用,下列何者正確?
  2. 在可為中斷設定優先順序的微控制器上,執行低優先順序中斷的處理常式期間,發生了高優先順序的中斷。一般會如何(假設設定為允許中斷巢狀)?
  3. 以C語言只將暫存器reg的位元3設為1、其他位元不變,下列何種寫法正確?
  4. 以C語言只將暫存器reg的位元3設為0、其他位元不變,下列何種寫法正確?
  5. 想讓連接LED的輸出腳位的位元,每執行一次就在亮與滅之間切換。下列何種C語言寫法正確?

這個領域的比較