組込み・ファームウェア

8ビットのマイコンで、タイマ割り込みが32ビットの変数ticksを1ずつ増やし、メイン処理がticksを読んで経過時間を求めている。まれに大きくずれた値が読めてしまう原因として正しいものはどれか。

  1. A8ビットのマイコンでは、32ビットの変数は使えないから
  2. Bタイマ割り込みの周期が毎回ランダムに変わるから
  3. C32ビットの読み出しが4回に分かれ、その途中で割り込みが入って一部のバイトだけが新しい値になることがあるから
答えと解説を見る

正解:C. 32ビットの読み出しが4回に分かれ、その途中で割り込みが入って一部のバイトだけが新しい値になることがあるから

8ビットのマイコンは1回に1バイトしか読めないので、32ビットの値は4回に分けて読みます。例えば0x000000FFから0x00000100に変わる瞬間に、下位のバイトを読んだ後で割り込みが入ると、古い下位(0xFF)と新しい上位(0x01)を組み合わせた0x000001FFのような値になります。読む間だけ割り込みを禁止するか、2回読んで同じ値になるまで読み直すことで防ぎます。

  • A. 使えますが、1回では読めません。
  • B. 周期は一定です。
  • C. 正しい。読む間だけ割り込みを禁止するなどで防ぎます。
この分野を解く 分野ページへ

組込み・ファームウェアのほかの問題

  1. UARTによるシリアル通信の特徴として正しいものはどれか。
  2. 115200 bpsのUARTで、データ8ビット・パリティなし・ストップビット1(8N1)の形式で送るとき、1秒間に送れるバイト数に最も近いものはどれか。
  3. UARTの送信側と受信側のボーレートが少しずれていると、文字化けが起こることがある。ずれの許容範囲がおよそ数%程度に限られる理由として正しいものはどれか。
  4. SPI通信の特徴として正しいものはどれか。
  5. SPIで一般に使われる4本の信号の組み合わせとして正しいものはどれか。