組込み・ファームウェア

割り込みに優先度を付けられるマイコンで、優先度の低い割り込みのハンドラを実行中に、優先度の高い割り込みが起きた。一般にどうなるか(割り込みのネストを許す設定とする)。

  1. A低いハンドラを中断して高いハンドラを実行し、終わったら低いハンドラの続きに戻る
  2. B低いハンドラが終わるまで、高い割り込みは捨てられる
  3. C両方のハンドラが同時に、同じCPUで並列に実行される
答えと解説を見る

正解:A. 低いハンドラを中断して高いハンドラを実行し、終わったら低いハンドラの続きに戻る

割り込みに優先度を付けると、急ぎの割り込みは、ほかのハンドラを実行している最中でも割り込んで処理されます。例えばモーターの過電流の検出を高い優先度に、通信の受信を低い優先度にしておけば、受信の処理中でも過電流にすぐ対応できます。ArmのCortex-MのNVICなどがこの仕組みを持っています。同じか低い優先度の割り込みは、今のハンドラが終わるまで待たされます。

  • A. 正しい。これを割り込みのネストと呼びます。
  • B. 捨てられるのではなく、すぐに処理されます。
  • C. 1つのCPUは同時に1つの処理しかしません。
この分野を解く 分野ページへ

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

  1. C言語で、レジスタregのビット3だけを1にし、ほかのビットは変えない書き方として正しいものはどれか。
  2. C言語で、レジスタregのビット3だけを0にし、ほかのビットは変えない書き方として正しいものはどれか。
  3. LEDをつないだ出力端子のビットを、実行するたびに点灯と消灯で切り替えたい。C言語の書き方として正しいものはどれか。
  4. 入力用のレジスタinのビット5が1かどうかを調べるC言語の条件として正しいものはどれか。
  5. 上のコードは、レジスタregの複数ビットの設定欄を書き換えている。何をしているか。