レジスタでプログラム I/Oポート[Arduino UNO R4 MINIMA]
このソースコードで
void setup() {
R_PMISC->PWPR_b.B0WI = 0;
R_PMISC->PWPR_b.PFSWE = 1;
R_PFS->PORT[3].PIN[1].PmnPFS_b.PMR = 0; //GPIO
R_PFS->PORT[3].PIN[1].PmnPFS_b.PDR = 1; //output
R_PMISC->PWPR_b.PFSWE = 0;
R_PMISC->PWPR_b.B0WI = 1;
}
void loop() {
R_PORT3->PODR_b.PODR1 = 1;
R_PORT3->PODR_b.PODR1 = 0;
R_PORT3->PODR_b.PODR1 = 1;
R_PORT3->PODR_b.PODR1 = 0;
R_PORT3->PODR_b.PODR1 = 1;
R_PORT3->PODR_b.PODR1 = 0;
R_PORT3->PODR_b.PODR1 = 1;
R_PORT3->PODR_b.PODR1 = 0;
delayMicroseconds(2);
}
D0端子からバースト波が出てくる。
説明
上記ソースコードの内容は、setup()でD0端子(PORT301)をGPIOの出力に設定し、loop()でD0から何回かHi,Lowを出してしばらく待つ、を繰り返す。
参考にするのはR4 MINIMAの回路図と Renesas RA4M1グループ ユーザーズマニュアル ハードウェア編。
回路図ではD0端子の隣にP301_SCI2_RXDと示されており、PORT3の1pinだとわかる。他にもSCI2,RXDの機能があるのかも。
マニュアルにはこんなことが書かれている↓
この通りにプログラムは書いた。 P425,P429-431に今回使ったレジスタのことが書かれている。
レジスタの書き方
最初に「R_」を書く。次に来るのはレジスタのページを見て、それを「->」や「.」でつなぐ。 レジスタが選べた。
そしてレジスタ内のビットを選ぶために「_b.」を足しビット名を書く。
「R_PORT3->PODR_b.PODR1」が出来る。
「R_PORT3->PODR_b.PODR1 = 1」=「R_PORT3->PODR |= 0x00020000」なので好きな方を。
「R_PFS->PORT[3].PIN[1].PmnPFS」これはこう書くものらしい。
この記事が気に入ったらサポートをしてみませんか?