こんにちは。NoMaYです。いま2つ気になっています。(1) ICCRL78とLLVM-RL78(とGNURL78)でワーニングレベルを上げるとワーニングがとてもたくさん出る(2) RL78スマートコンフィグレータGUI上でオンチップデバッグトレースを使用する設定にしても予約RAM領域を空けていない
チョコです。
RL78/G23FPBにRL78/G14FPBからArduinoのデジタル入出力関数を移植することを検討していて、少し手抜きをしようと考えて、SCでデジタル入出力の端子兼用機能であるアナログ入力(デバイスの初期状態)を初期設定でデジタル入力に設定しようと考えました。そこで、SCで以下のように設定を行いました。
すると、Config_PORT.cは以下のようにコード生成されていました。
PDIDIS0レジスタで該当するビットが1になっていて、確かに設定内容には合っているのですが、違和感を禁じえません。
PDIDIS0レジスタはディフォルトでは0になっているのをわざわざセットしています。
これは、以下のように入力バッファがオプション的な扱いになっているのが原因していると思われます。
出力に設定すると、これは選択できなくなりますが、入力に指定したときにもこの設定はなくていいはずです。
ここで、念のためにP00を出力に設定してコード生成すると、以下のように、P00でもPDIDIS0レジスタの該当するビットが1になっています。
これは、PDIDIS0レジスタの意味を取り違えていると考えられます。
ハードウェア マニュアルには、以下のように書かれています。
つまり、入力や出力の時にPDIDIS0レジスタの該当するビットを1にするのは明らかに間違いです。
どちらかというと、未使用時のみ選択できるようにすべきでそれ以外では0にしておくべきです。
または、入力や出力と同等にして、「入力バッファオフ」の選択子にすべきです。
以上
>つまり、入力や出力の時にPDIDIS0レジスタの該当するビットを1にするのは明らかに間違いです。
>どちらかというと、未使用時のみ選択できるようにすべきでそれ以外では0にしておくべきです。
>または、入力や出力と同等にして、「入力バッファオフ」の選択子にすべきです。
以下のように修正します。
PDIDIS0レジスタの該当するビットを1にできるのは、未使用かNchオープンドレイン出力だけにすべきです。(この2つの場合には、無条件に1にしてもいいかもしれません。)