嵌入式與韌體

在8位元微控制器上,計時器中斷每次將32位元變數ticks加1,主程式讀取ticks來計算經過時間。偶爾會讀到偏差很大的值,其原因下列何者正確?

  1. A因為8位元微控制器無法使用32位元的變數
  2. B因為計時器中斷的週期每次都隨機改變
  3. C因為32位元的讀取分成4次,在途中插入中斷,可能使只有部分位元組變成新值
查看答案與解析

正確答案:C. 因為32位元的讀取分成4次,在途中插入中斷,可能使只有部分位元組變成新值

8位元微控制器一次只能讀取1個位元組,因此32位元的值要分4次讀取。例如在0x000000FF變成0x00000100的瞬間,若在讀取低位位元組之後插入中斷,就會得到舊的低位(0xFF)與新的高位(0x01)組合而成的0x000001FF這樣的值。只要在讀取期間禁止中斷,或是讀取兩次直到值相同為止,就能防止。

  • A. 可以使用,但無法一次讀完。
  • B. 週期是固定的。
  • C. 正確。可藉由在讀取期間禁止中斷等方式防止。
練習這個領域 前往領域頁面

嵌入式與韌體的其他題目

  1. 關於UART序列通訊的特徵,下列何者正確?
  2. 以115200 bps的UART,用資料8位元、無同位檢查、停止位元1(8N1)的格式傳送時,每秒可傳送的位元組數最接近下列何者?
  3. UART的傳送端與接收端的鮑率若有些許偏差,可能會出現亂碼。偏差的容許範圍只限於大約數%左右,其原因下列何者正確?
  4. 關於SPI通訊的特徵,下列何者正確?
  5. SPI一般使用的4條訊號的組合,下列何者正確?

這個領域的比較