Renesas Synergy™

FAQ 1006556 : マイコンに内蔵された機能の使い方についての考え方

[はじめに]
最近のマイコンには、各種の機能が内蔵されていて、どのように使いこなすか、迷うようなことがあります。特に、1本の端子を複数の機能で兼用している場合には、各機能の間の関係や使い分ける方法に注意が必要です。

[機能設定]
なお、1本の端子に複数の機能があるからと言って、それらをダイナミックに切り替えては使いません。通常は、ある特定の機能で使用する場合には、最初にその機能に設定した以降はそのままの機能で使用します。これは、端子に接続される相手との問題もあります。マイコン側だけが勝手に設定を変更するのは問題です。端子の機能を変更する場合には、十分に接続相手側の動きも考慮して、問題が発生しないようにしてください。
また、端子の機能によっては常に使用するわけではなく、限られたときのみ使用する場合もあります。この場合にも、使用しないからといって、直ぐに機能を停止することには問題がある場合があります。例えば、UARTでの送信では、ストップビットの先頭や中央で完了のステータスが立ったり、割り込みが発生したりすることがあります。この状態で直ぐに機能を停止し、直後に次の通信を開始しようとした場合にストップビットが途中で切れるようなことも考えられます。シリアル通信では動作を許可していても実際にデータを書き込まないと通信そのものを実行しないので、殆どの場合には機能を停止する必要はないはずです。

[入力ポート]
端子の基本はポートとしての使い方です。殆どの場合、マイコンがリセットから起動した場合には、通常は端子の状態は入力ポートに設定されています。このとき、入力ポートとして使用する場合には特に設定を変更する必要はありません。この状態で、ポートレジスタを読むことで、端子の状態を読み出すことができます。
なお、入力ポートに設定すると、プルアップ抵抗を使用することができる場合があります。

ちょっと注意 1
殆どのポートは入出力のポートですが、中には出力専用のポートや入力専用のポートもあります。アナログ入力と兼用になったポートは入力専用になっていることが多く、機能を切り替えるレジスタはありませんが、78K0/Kx2や78K0S/Kx1+のように入出力ポートとアナログ入力が兼用の場合には機能を切り替えるレジスタがあります。
なお、78K0/Kx2のポート2はリセット直後にはアナログ入力になっています。そのため、入力ポートとして使用するには、ADPCレジスタでポートとしての使用に設定する必要があります。
また、一部の入力ポートでは耐圧が高くなっていて、電源電圧以上の入力電圧をかけることができるようなものがあります。このうち、12Vの耐圧のものでは、ポートを読み出したときだけリーク電流が大きくなることがあります。このような入力が可能な場合、入力する信号に応じた使い分けが必要になります。


[出力ポート]
端子を出力ポートで使用する場合には、ポートモードを入力から出力に変更します。この状態でポートレジスタにデータを書き込むと、その内容が端子に出力されます。出力には通常のCMOS出力以外にN-chオープンドレイン出力等があります。
リセット起動後にポートモードを変更して出力ポートに設定した場合には問題ないのですが、兼用機能を使った後でポートを使用する場合に単純に兼用機能を停止するだけでは正常にデータを出力できないことがあります。

[兼用機能]
端子を兼用機能で使用する場合に大きく分けて3種類の方法があります。一つは、主に78Kで使用されている方法で、ポートの設定を行なうPMレジスタとポートの出力ラッチに設定するデータを用いる方法です。下記に例を示します。この例では、端子の入/出力の設定をポートと同じくPMレジスタで設定します。端子への出力データはANDゲートにより結合されています。従って、兼用機能を使用する場合にはポートの出力ラッチには1を設定します。逆に、ポートを使用するとき(兼用機能を使用しないとき)には兼用機能の出力は1(ハイレベル)になっている必要があります。



もう一つの方法は、主にV850で使用されている方法で、端子の機能を切り替えるための専用レジスタを用いるものです。この場合、ポートとして使用するか、それとも兼用機能として使用するかの切り替えはPMCレジスタで設定します。さらに、一つの端子に複数の兼用機能がある場合にはPFCレジスタやPFCEレジスタを用いて、使用する兼用機能を選択します。端子によっては兼用機能の中に専用のレジスタを準備している場合もあります。下図に兼用機能が2つの場合の例を示します。



[特殊な設定の端子]
以上で説明したような端子以外に、78K0や78K0SのAll Flashの製品では、クロック発振回路の端子やRESET端子をポートとして使用できる製品があります。これらの場合には、上記の制御方法とは異なる方法で設定を行ないます。
78K0/Kx2の製品では、内蔵発振回路を使用する場合に、クロック発振回路の端子をポートとして使用できます。この場合、OSCCTLレジスタ(サブクロックはPCCレジスタも)により機能を指定します。リセット解除後にはこれらの端子は入力ポートとなります。従って、クロックを外部から入力する場合やクロックを発振させる場合には端子機能の設定や必要な設定を行ない、クロック入力を有効にする/発振を開始させる必要があります。
78K0S/Kx1+の製品では、オプションバイトにより指定します。オプションバイトはリセット解除直後(CPUが動作する前)に参照され、設定された内容が有効になります。

ちょっと注意 2
78K0/Kx1+(小ピン・マイコン)では端子数が少ないので、RESET端子もポートと兼用になっています。そのために、使い方で少し注意が必要です。FAQのリセット兼用端子のポートとしての使用方法[小ピン]でも触れていますが、この端子は電源投入後POCが解除された時点ではオプションバイトはまだ読み出されていないため、RESET端子として動作しています。このため、POC解除時点でこの端子にロウレベルの信号を入力したままにすると、いつまでもリセットがかかった状態となってしまいます。この端子を入力として使用するにはアクティブ・ロウ(つまり、通常はハイ・レベルになっている)の信号入力で使用する必要があります。
また、オン・ボード書き込みを行なう場合や簡易ライタを用いて書き込む場合にも注意が必要です。ポートとして使用するように設定してあり、電源投入後のPOC解除時点で、この端子がハイ・レベルになっていると、以降はこの端子を使ってリセットをかけることができなくなります。このため、書き込みができなくなります。これを避けるには通常動作とオン・ボード書き込みで端子の処理を切り替える必要があります。
他にご質問がございましたら、リクエストを送信してください