RL78について

RL78導入メモ

RL78は開発環境E2Studioで自動生成機能が使えるのに気づき試してみました。
1 プロジェクト作成の説明を飛ばして制作編へ

E2Studioのファイルメニューから新規・C/C++Project・Gcc for Renesas RL78C/C++Executable Project(またはRenesas CC-RL C/C++・・・) と進んでいき、適当な名前をつけて、ツールチェーンやターゲットデバイスの選択をします。この画面で(戻る)(次へ)(終了)(キャンセル)のボタンがありますが (終了)しますと通常のコーディング画面(ポートの入出力やIICの初期設定CPUクロックは内部発振にするのか、等のイニシャライズをコーディングしなくてはならない、 従来どおり)になります。
次へ進むと「コード生成を使用する。」の選択ができますチェックを入れて終了します。 すると端子配置図や端子割当設定の画面が出ます。最初に出る「端子割当設定」は内臓機能の一部をどのPINに対応させるかを決めるものです。ここだけは 最初に決めないとコーディングに入れません。 機能が多すぎてpin数が足りないための苦肉の策だろうと思いますが、通常よく使われる 機能はデフォルト設定になっていますのであまり考えなくても良いと思います。(一度決定すると固定され変更できませんので(一応は)考えておく必要がありますが、 変更の必要があればプロジェクトを作り直せば良いだけの話です。)

2 初期設定 1

上述の通りあとから変更できませんが、タブ「端子割り当て設定」は取り敢えず初期設定のまま「確定する」ボタンを押します。(確定後変更できないのはこのボタンだけです。これ以後説明する項目は何度でも変更可能です)

タブ「クロック設定」では電源電圧を設定します。選択肢はいずれも上限が5.5vとなっており下限だけが異なります。電源電圧が降下した場合に自動リセットさせるための電圧設定だろうと思います。 メインシステムクロックはチップ内臓の発振器を使うか(精度の良いはずの)外部水晶発振子を使うか選択します。 タブ「ブロック図」はそのままです。内部ブロック図面が出ます。 タブ「オンチップ・デバッグ設定」はE1とかE2(lite)などを使用するかとの設定です。 その他、RRM/DMM機能設定、セキュリティID、タブ「リセット要因確認」等もデフォルト設定にします。 初期設定の最後に「コードを生成する」ボタンを押すと以下の細切れのファイルが生成されます。

初期設定 2 例えばA/Dコンバーターを使用するとか、IIC(簡易版とかフル機能のIICA0)等を使用する場合「コードを生成する」前に設定しても良いですし、一旦「コード生成する」 が終わってからでも良いので使用する機能を選択チェックしてコードを生成します。するとプロジェクトに機能ユニットごとに *.h,*.c,*_user.c の3種のファイルが 出来ます。 この内プログラムを記述するのは*_user.c だけです。(他のファイルは参照するだけです)しかも”ここから記述しろ” ”ここまでにしろ”という注意書きがあります。

注意

初期設定1でデフォルトのままコード生成しますと r_cg_wdt.c が出来ます。 この中では関数 void R_WDT_Restart(void) が出来ていますので適当なタイミングで呼び出さないとwdtのエラーになります。wdtを呼び出す(キチンと機能させる)のが 安全上は正しいとは思いますがMCUが暴走したら「けが人が出る、生産ラインが止まっていしまう」というような場合以外は(私は)使いませんので「使用しない」にします。 機能を切り替えたら単独でも複数まとめてでもOKのようですが必ず「コードを生成する」ボタンを押さないと変更は反映されません。「共通/クロック発生回路」機能設定以外は何度でも変更可能です。

自動生成は非常に便利です。その代わりにMCUハードウェアのことの理解はし難くなります。理解しなくても動くので考えるのは面倒になり、トラブル発生の際は少々大変になることもあります。

生成されたファイルの数が多く、細切れですので若干取っつきにくいこともありますが機能ごとに別れているので理解しやすい面もあります。通常プログラムを記述するには自身で題名をつけた ファイル:例えばtest.cとかを用意し、その中にmain関数や他のハードウェア関数を書きますが自動生成された「r_cg_main.c]ではハードウェアに依存する記述は最小限ですみます。

内部発振の周波数精度はRL78G10のハードウェアマニュアルによると-20~+85℃で+-2.0% -40~-20℃で+-3.0です。私の用途ですと全く申し分ありません。カレンダー時計機能があるMPU の時計用基準発振は水晶でないとだめでしょうが・・・。1%の誤差では1日で14.4分、1月で7.2時間で狂ってしまいます。

Z80ーCPUの頃はエミュレーターデバッガーはなかったしH8でもデバッガーを使用したことはありませんが、今となってはRXやRLで一度使ってしまったE1エミュレーター無しで開発するのは困難だろうと思います。E1(今はE2Lite)のような 安価なエミュレーター(エミュレーター本体はMCUオンチップだろうと思いますが)が用意され、しかもMCUオンチップROMの書き換え回数が圧倒的に伸びたことがエミュレーターの使用を容易にしていると思います。 Z80時代の紫外線消去ROM等は論外ですが、うろ覚えの記憶ではH8-3048は書き換え回数100回保証、H8-3664が1000回だったと思います。何個も書き込みエラーで潰してます。

プロジェクト作成 1