過去記事の訂正① 端子の出力について 

 

 2023年9月12日の記事にて、ポートレジスタ直接制御でArduino UNO R4 MINIMAのD13ポートを制御する方法を解説している。

 

 

端子の入出力方向のことはいいのだが、出力設定の所に間違った記述があったので訂正したい。

 記事の中には、「制御したい端子の出力を設定するにも5種類の方法がある。」と書いたのだが、RA4M1マイコンについて調べているうちに、もう一つ、いやもう三つやり方があることがわかった。
そんなわけで、端子の出力設定は全部で8種類あることに。
追加の記述は以下の二つ。

R_PORT1->PCNTR3 |= 1 << 11;
R_PORT1->POSR_b.POSR11 = 1;
R_PORT1->POSR |= 1 << 11;

 見てわかる通り、ポートコントロールレジスタ3であるPCNT3レジスタ内のPOSRレジスタを使っている。 このレジスタの詳しい使い方は別に解説しようかと思うので、ここでは要点だけ。
実はこのPOSRレジスタで設定できるのは出力をHighにするだけ。 なので、このPOSRレジスタに"0"を代入しても何も変わらない。
じゃあ出力をLowにしたい時はどうするんじゃい、って思うのも当然。

 上記ではPOSRレジスタを使った出力Highの方法を三つ記述したのだが、出力をLowにする方法も三つあるのだ。 それは、PORRレジスタを使う方法だ。
その記述方法は以下の通り。

R_PORT1->PCNTR3 |= 1 << 27;
R_PORT1->PORR_b.PORR11 = 1;
R_PORT1->PORR |= 1 << 11;

 これを見て不思議に思うかもしれない。 そう、端子の出力をLowにしたいのに、レジスタには"1"を代入しているからだ。 今までの記述では出力Lowの時は必ず"0"だったが、このPORRレジスタを使う時だけは例外なのだ。 詳しくは別途解説する予定。