はじめまして、ときまると申します。
現在Renesas RL78/G13にて、マイコンを学習しております。
学習の教材として、「チョコさんのRL教室ーRL78初心者向けプログラム解説」にて学習を行っております。
この第2回のプログラムにて、シミュレータ上でLEDを点灯させることはできているのですが、P36以降の実機での点灯を行うことができません。
CS+ではエラーは出ていないため、どこに問題があるのか把握できない状況となっております。
この問題の原因について、どなたかご教授いただけないでしょうか?
よろしくお願いいたします。
チョコです。
どのようなボードで動作確認されていますか?
「チョコさんのRL教室」で使用したボードは秋月電子通商で購入した「BlueBoard-RL78/G13_64pin」で、RL78/G13は64pinのデバイスです。64pinのRL78/G13ではポート3はP30とP31しかありません。
デバイスとして何を選択してビルドしたのでしょうか。
よければ、プロジェクトのzipファイルを添付してもらえれば、確実に確認できます。
以上
ときまるさん、もしかして、128pinのRL78/G13を使おうとしているのではないですか。
そのうえで、P35~P37でLEDの点滅ができない状態ではないですか?
もし、PMレジスタで出力に設定しても出力にできないのでなら、おそらくPMC3レジスタでPMC35~PMC37が初期状態(=1)になっていて、端子がアナログ入力のままになっている可能性があります。PMC3レジスタのビットを0にする(これで、入出力ポートになり)、PM3の設定が有効になります。
ご返信ありがとうございます。ご教授いただいたようにSFRの状態を確認し、P3の値を0x00に変更しました。
そして、「プロジェクトをリビルドします。」→「デバッグ・ツールへプログラムをダウンロードします。」→「CPUリセット後、プログラムを実行します。」の順でボタンを押しましたが、やはり実機でのLEDは点灯しませんでした。(powerボタンのみ点灯しております。)
また、P3の値を0x00としておりましたが、「デバッグ・ツールへプログラムをダウンロードします。」ボタンを押した際に以下のようにP3の値は0x02に戻ってしまいました。
一方で、r_mail.cファイルのR_MAIN_UserInit()関数は以下のようになっております。
お手数をおかけしますが、なにとぞよろしくお願いいたします。
上記について、供給電圧を5Vにして再度試みましたが、同様の結果となりました。
RL78_G13_PORT1_2_E1.zip
ときまるさん、書かれた手順から判断して、何か誤解があるようです。
先ず、添付された画面イメージから、デバッガが起動しているのは、確認しました。
かふぇルネでこれまでよくあったのが、E1を起動しているつもりで、実はシミュレータで動作させていたためにポートが変化しないというものです。この問題はないでしょうか?
>また、P3の値を0x00としておりましたが、「デバッグ・ツールへプログラムをダウンロードします。」ボタンを押した際に以下のようにP3の値は0x02に戻ってしまいました。
「P3の値を0x00にする」は「デバッグ・ツールへプログラムをダウンロードした」後の処理です。プログラムそのものは、変更しないので、「デバッグ・ツールへプログラムをダウンロード」する前に「P3の値を0x00にする」ことはできません。
以下の手順で処理してください。
①プログラムをE1でダウンロードします。
②デバッガが起動し、添付された画面イメージになったら、「表示」ー「SFR」でSFRの状態を確認してください。
③「SFR」表示のP3を選択(左クリック)して、右クリックしてポップアップ・メニューを表示させ、「ウォッチ1に登録」してください。
④「ウォッチ1」のP3のデータ(0x02)を反転表示させて、「0x00」と入力しenterキーで確定してください。
プログラムがブレーク(停止)している状態で、④の処理を行うと、P31端子はロー・レベルになるはずです。これで、LEDが点灯しないなら、P31の端子の電圧をテスタで確認してください。(P31はUSER LEDのカソードに接続されているので、USER LEDのはんだ付けされたパターンで電圧が確認できるはずです。
これで、LEDが点灯しない(端子の電圧が0V近くに下がらない)なら、ボードに問題があると考えられます。
念のために、私が確認で使ったプロジェクトのzipファイルを添付しておきます。
このプロジェクトでは、P3に加えてP3.1も追加で設定しています。また、ブレークポイントを2か所に設定しているので、ブレーク・ポイント付きでの実行を行うとブレークするごとにLEDが点灯したり消灯したりするはずです。
チョコさん
ありがとうございます。
先ほど上記の手順を取らせていただいたのですが、④の操作を行ってもLEDは点灯しませんでした。
また、P31 の電圧を測定したところ、2.2Vほどの電圧が検出されました。
これは、ボードに問題があるということになりますでしょうか?
>P31 の電圧を測定したところ、2.2Vほどの電圧が検出されました。
>これは、ボードに問題があるということになりますでしょうか?
はい、そのように考えられます。
回路図では、単純にP31がヘッダーピンのパターン(J4の5pin)を経てUSER LEDのカソードに接続されているようなので、後は、ヘッダーピンのパターン(J4の5pin)でも電圧を確認してみてください。それで、確実でしょう。
一つお伺いしたいことがございます。
現在私が使用しているボードは"RSKRL78G13-3"というものとなります。
一方で、「初心者のためのRL78 入門コース 」で使用しているボードは"RL78 G13/G14"というもののようです。
PDFの37ページに記載のあるRL78 G13/G14では、USER LEDが点灯しておりますが、私が使用しているボードにはUSER LEDは見当たらず、POWERならびに0~3の番号の計5つのLEDがあります。
PDF資料にあるUSER LEDの代わりに、上記の5つのうちのいずれかが点灯する仕組みとなっているのでしょうか?
>現在私が使用しているボードは"RSKRL78G13-3"というものとなります。
同じRL78/G13を使っていても、LED等の外部の回路が全く異なるハードウェアなので、差がある部分のハードウ;エアを制御する場合には、同じソフトは使えません。
「初心者のためのRL78 入門コース 」で使用している「BlueBoard-RL78/G13_64pin」ではP31にUSER LEDが接続されているだけです。
一方、「RSKRL78G13-3」では、P52にLED0(緑)、P53にLED1(赤)、P62にLED2(赤)、P63にLED3(赤)が接続されています。(ちなみにP31は入力ポートとしてSW3に接続されているようです。)
そのため、「初心者のためのRL78 入門コース 」で使用しているUSER LEDをLED0に変更するなら、「P31」を「P.52」に変更する必要があります。
LEDを制御するポートを変更したプログラムに変更してみました。それだけでは面白くないので、r_main.cに以下の定義を追加しました。
そのうえで、main関数のプログラムを以下のように抽象化しました。2か所ある「LED0」の部分を「LED1」にするとLED1が点滅し、「LED2]にするとLED2が点滅するようになります。
また、コード生成でポートに設定を変更して、LED0~LED3の全てのポートを出力に設定しています。下はLED0とLED1の設定ですが、LED2とLED3も同様に変更しています。
このプロジェクトを添付しておきます。
RL78_G13_PORT1_2B_E1.zip
これで、動作確認してみてください。
「RSKRL78G13-3」は持っていないので、一応シミュレータを使ったプロジェクトも作ってみました。
単にE1をシミュレータに変更して、LED0~LED3の4つのLED が見れるように下ものです。
RL78_G13_PORT1_2B.zip
先ほど上記のプログラムを使用したところ、問題なく動作させることができました。
ご対応、誠にありがとうございました。
RSKRL78G13-3ボードでは、0,1番のLEDをどのように点灯させるかわかっておりませんでしたので、これらの点灯方法についても併せてご教授いただき、ありがとうございます。
この0,1番のLEDについて、お伺いしたいことがございます。
RSKRL78G13-3には、power LEDのほかに0~3の4つのLEDがありますが、CS+のtutorialコードでは2, 3番のLEDのみを点灯させており、0, 1番のLEDがどのportが対応しているのかわかっておりませんでした。
チョコさんはこのport番号について、どのように特定を行ったのでしょうか?
お手数をおかけしますが、何卒よろしくお願いいたします。
「RSKRL78G13回路図」でサーチしたら、以下の画面になったので、このリンクに進みました。
すると、「Renesas Starter Kit for RL78/G13]のページが開きました。
そこで、右側の「ドキュメント」をクリックしました。
ドキュメントの部分が表示されたら、そこで、スクロールして回路図(Renesas Starter Kit for RL78/G13 CPU Board Schematics Rev.1.01)を選択します。
すると、RL78/G13のところが表示されます。
この回路で、RL78/G13の左下側で下から4番目と3番目に「LED0」と「LED1」があります。(右側の上の方にはLED2及びLED3もあります。)
これが、私が確認した方法です。
いつも宣言していますが、私はハードウェアの人間なので、基本的に回路図を元にしています。
ドキュメントのところに、「Renesas Starter Kit for RL78/G1 ユーザーズマニュアル Rev.1.00」もありましたので、眺めたところ、「5.ユーザ回路」に「5.4 LED」の項目があり、そこには以下の内容が記載されていました。こちらの方が分かりやすいですね。
ご返信ありがとうございます。
上記のユーザーズマニュアルについて、確認いたしました。
何度もご丁寧に対応いただき、誠にありがとうございました。