GPIOポート初期化手順におけるグリッチ防止と負論理LED制御

I/OポートにおけるLED制御の初期化シーケンスを論理的に検証します。 1. ハードウェア仕様の確認 : - 方向レジスタ: 0 で入力(ハイインピーダンス)、 1 で出力モード。リセット直後は 00 (全ビット入力)。 - LEDは 負論理(Active-Low) で接続されているため、出力が 0 (Lowレベル)のときに点灯し、 1 (Highレベル)のときに消灯します。 - データレジスタのリセット時の値は「 不定 」です。 2. 不要な点灯(グリッチ)を防止する手順 : - もし先に方向レジスタを FF (出力モード)に設定してしまうと、データレジスタの初期値が不定であるため、 0 になっていたビットのLEDが一瞬勝手に点灯してしまいます。 - したがって、ポートを出力モードに切り替える 前 に、データレジスタへ全ビット消灯を意味する FF (全ビット 1 )を書き込んでおく必要があります。 - その後、方向レジスタに FF (全ビット出力モード)を書き込めば、ポートが出力に切り替わった瞬間から確実に全LEDが消灯状態(High)となり、起動時の不要な点灯を完全に防ぐことができます。 したがって、適切な手順は「 データレジスタに FF を書き込んでから,方向レジスタに FF を書き込む 」であり、正解は イ です。 ア: データレジスタに 00 (全点灯)を書き込んでから出力モードにしているため、全LEDが点灯してしまいます。 ウ: 先に方向レジスタを出力にした時点で不定値によりLEDが誤点灯し、さらに 00 を書き込むことで全点灯してしまいます。 エ: 先に方向レジスタを出力にしているため、データレジスタに FF を書き込むまでの微小時間(数クロック間)、不定値によってLEDがチラつく(誤点灯する)恐れがあります。

8ビットの方向レジスタ及びデータレジスタで構成される I/O ポートがあり,各ビットに LED が一つずつ負論理で接続されている。システム起動時に LED の不要な点灯を避けるための手続として,適切なものはどれか。ここで,レジスタに書き込む値は 16進数で表現している。 - 方向レジスタ(0: 入力,1: 出力、リセット時の値: 00) - データレジスタ(0: 点灯,1: 消灯、リセット時の値: 不定)

問題画像
出典令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問4
ア
データレジスタに 00 を書き込んでから,方向レジスタに FF を書き込む。
イ
データレジスタに FF を書き込んでから,方向レジスタに FF を書き込む。
ウ
方向レジスタに FF を書き込んでから,データレジスタに 00 を書き込む。
エ
方向レジスタに FF を書き込んでから,データレジスタに FF を書き込む。