C言語

RL78マイコンで必ず必要な設定(オプション・バイト)

RL78マイコンは、電源投入時、または、リセットからの起動時に、自動的にオプション・バイトという設定値を参照して、指定された機能の設定を行います。
このため、必ずオプション・バイトを設定する必要があります。
今回は、このオプション・バイトについての簡単な説明と、CS+で、オプション・バイトの設定方法と設定内容について学びます。

オプション・バイトとは

マイコンの制御レジスタ(特殊機能レジスタ)設定のようなソフトウェアで設定するよりもハードウェアで設定したほうが好ましいものがあります。これを実現するために、電源投入時、または、リセットからの起動時に、プログラムとは別のメモリに格納された設定情報を参照して、設定を行うことになっています。この設定値のことをオプション・バイトといいます。

オプション・バイトは、ユーザ・オプション・バイトと、オンチップ・デバッグ・オプション・バイトで構成されています。
ユーザ・オプション・バイトには、ウォッチドッグ・タイマの設定情報と、低電圧検出(LVD)の設定、フラッシュメモリの動作モード、高速オンチップ・オシレータのクロックの設定があります。
オンチップ・デバッグ・オプション・バイトには、オンチップ・デバッグ動作設定と、セキュリティID認証失敗時のフラッシュメモリデータ消去有無の設定があります。

ウォッチドッグ・タイマの設定

ウォッチドッグタイマとは、プログラムが暴走していないかを監視するタイマです。マイコンに内蔵されているものや、外部にウォッチドッグタイマがあるものがあります。
オプション・バイトでは、内蔵のウォッチドッグタイマについての設定を行います。
ウォッチドッグタイマは、タイムアップするとリセット信号が出力されマイコンを再起動します。このため、タイマを開始してから、定期的にタイマをリセットして再スタートする必要があります。
定期的にタイマをリセットできれば、マイコンがリセットされることはありませんが、例えば、プログラムが暴走して無限ループとなり、処理が進まないなどがあると、ウォッチドッグタイマをリセットする処理までたどり着けず、マイコンがリセットします。
このように、本来、ウォッチドッグタイマの設定された時間までに処理できるはずなのに、処理されないなどを監視して、マイコンを再起動し、暴走を止める役割をします。

今回は、複雑なプログラムを記述することはないため、特にプログラムの暴走を監視するまでもないため、使用しません。

ウォッチドッグ・タイマのオプション・バイトは、0x000C0の1バイトの領域に設定します。
ビット4を0にすれば、ウォッチドッグ・タイマは無効となり、その他のビットはなんでも構いませんが、0xEFに設定することにします。
※ウォッチドッグ・タイマの設定内容の詳細はウォッチドッグ・タイマを使用するときに説明します。

低電圧検出(LVD)の設定

電源電圧を監視し、一定の電圧以下になると、割り込みを発生させることができます。この割り込みにより、プログラムでシャットダウン処理を行い、正常に停止させるような機能を実現できます。

今回は、定電圧検出機能は使用しません。

低電圧検出のオプション・バイトは、0x000C1の1バイトの領域に設定します。
ビット0とビット7を 1 にすれば、低電圧検出機能は無効となり、その他のビットはなんでも構いませんが、0xFFに設定することにします。

フラッシュメモリの動作モード、高速オンチップ・オシレータのクロックの設定

フラッシュメモリの動作クロックを設定するのと、高速オンチップ・オシレータの動作クロックを設定します。
CPUのクロックの設定というイメージでよいかと思います。

今回は、一番早いクロックを選択します。

これらのオプション・バイトは、0x000C2の1バイトの領域に設定します。設定値は、0xF8です。

オンチップ・デバッグ・オプション・バイト

オンチップ・デバッグ動作設定と、セキュリティID認証失敗時のフラッシュメモリデータ消去有無の設定があります。
オンチップ・デバッグ動作設定は、簡単に言うと、パソコンからデバッグできるようにするか、しないかを設定します。基本的にデバッグを行うことになるため、有効に設定しておきます。
セキュリティID認証失敗時のフラッシュメモリデータ消去有無の設定は、マイコンにプログラムを書き換えるときにセキュリティIDが設定されていると、同じIDでないとプログラムを書き換えることができないようにするために、IDを設定する場合があります。これは、勝手にプログラムを書き替えられたら困る場合に利用します。プログラムを書き換えるときに同じIDでなかったときに、フラッシュメモリデータを消去するか、しないかを設定します。
今回は、特にセキュリティIDを設定することはないため、どちらでもよいですが、消去するほうで設定します。

これらのオプション・バイトは、0x000C3の1バイトの領域に設定します。設定値は、0x84です。

オプション・バイトの設定方法

CS+でオプションバイトを設定する方法は、ビルドツールのプロパティで設定する方法と、スタートアップなどのアセンブラに記載する方法がありますが、今回は、ビルドツールのプロパティで設定しようと思います。

プロジェクト・ツリーのCC-RL(ビルド・ツール)を選択すると、右側のウィンドウにCC-RLプロパティが表示されます。
このプロパティのリンク・オプションのタブを選択し、ライブラリの箇所を次のように変更します。

デバイスの「オンチップ・デバッグの許可/禁止をリンク・オプションで設定する」を「はい(-OCDBG)」に設定します。この設定にすることにより、次の設定値が入力できるようになります。
次に「オンチップ・デバッグ・オプション・バイト制御値」に 84 と入力します。
オプション・バイトとは、関係ないですが、「デバッグ・モニタ領域を設定する」を「はい」にしないとデバッグができないので、ここも設定します。
次に「ユーザ・オプション・バイトを設定する」を「はい(-USER_OPT_BYTE)」に設定します。
次に「ユーザ・オプション・バイト値」を EFFFE8 と入力します。

この設定を行うことにより、ウォッチドッグ・タイマ機能の無効化と、低電圧検出(LVD)機能の無効化、オンチップ・デバッグの許可と、セキュリティID認証失敗時のフラッシュメモリデータ消去有を設定と、そして、フラッシュメモリを高速モード、高速オンチップ・オシレータのクロックを32MHzに設定しました。

以上が、RL78マイコンで必ず必要なオプション・バイトについてでした。

-C言語