はじめまして、ときまると申します。
現在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の設定が有効になります。
ご返信、誠にありがとうございます。P36とはPDF36ページとなります。紛らわしい表現をしてしまい、申し訳ございません。
PDF33ページまでのシミュレータ上での動作はうまくいっているのですが、33ページ以降でデバッグツールをRL78 シミュレータ(S)からRL78 E1(Serial)(L)に変えて作動させたところ、実機でのLEDの点灯が行われないという状況となっております。
先ほどポートを確認したところ、以下のような競合が発生しておりました。
>先ほどポートを確認したところ、以下のような競合が発生しておりました。
P40はTOOL0端子として、OCDでE1と接続するために使用するので、通常はこのようになっています。
①P3については、どのようになっていますか?E1との接続はきちんと行われているようなので、P3の状態も同様に確認してください。
②P3レジスタを確認するために、「表示()」のプルダウンメニューから「SFR(R)」を選択します。
そうすると、以下のようにSFRの状態を確認できます。E1に接続した状態ではP3は初期値の0x02とP31が1になっているのが分かります。
他のレジスタは邪魔なので、P3を選んだ状態で右クリックしてポップアップメニューから「ウォッチ1に登録(R)」を選択します。
ウォッチ1にP3だけが以下のように表示されます。
この状態で値(0x02)の部分を選択すると、0x02の部分が白くなります。
0x02を再度クリックすると、以下のように0x02も反転表示になるので、値を変更できるようになります。
ここを0x00に変更すると、P31はロウレベルとなり、LEDが点灯するはずです。
同じように、0x02に変更するとLEDは消灯するはずです。
このようなマニュアル(手動)手順で、P31の状態とLEDの状態を確認してください。
ご返信ありがとうございます。
P3については、下のようになり、競合などは起こっておりませんでした。
一方で、SFR(R)についてですが、下のように選択ができない状態となっております。
お手数をおかけしますが、なにとぞよろしくお願いいたします。
CS+の状態で表示を選択していませんか。
これは、デバッガ(E1)の状態での選択です。
デバッガ動作状態で「表示」を選択すると、以下のようにアイコンがちゃんとカラー表示されるので、分かります。
おかしいところがあったので、まとめなおします。
>①P3については、どのようになっていますか?E1との接続はきちんと行われているようなので、
まだ、E1ときちんと接続できているとは言えないですね。
この画面イメージはCS+のコード生成の設定画面のイメージであり、E1によるデバッグ時の画面イメージではなかったですね。
以前コメントしたように、「そもそも、プログラムのダウンロードはできていますか?」が先ず気になります。
PDFの「7. BlueBoard RL78/G13_64pin での動作確認」(34ページ~)に従って、設定を変更して、プログラムをダウンロード(以下のように「デバッグ(D)のプルダウンメニューから「デバッグ・ツールへダウンロード(D)」を選択)してください。
正常にE1と接続できていて、ビルドしたプログラムをダウンロードしてデバッガが正常に立ち上がると以下のような表示になります。
ここまで来ていれば、ほとんど問題なくプログラムは動作するはずです。
ボードのRL78/G13がきちんと起動すれば、この画面になりますが、これまでのトラブルの大半はここまで、たどりつけないものです。この原因の一つが、ボードに搭載されているRL78/G13の電圧検出回路の設定(オプションバイトで設定)が4V程度になっており、3.3Vでは電圧検出回路が解除されないことが考えられます。この場合には、E1からの供給電圧を5Vに変更してみて下さい。
これ以外には、E1を接続している(接続している)PCのUSBの電圧が5Vより低かったために3、ボードに.3Vの電圧が供給できていないという例もありました。
この場合には、7.5VのACアダプタでボードに直接電源を供給して、E1からは電源を供給しないようにすることが考えられます。
とりあえず、ここまでを確認してみてください。
ご返信ありがとうございます。ご教授いただいたように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」の項目があり、そこには以下の内容が記載されていました。こちらの方が分かりやすいですね。
上記のユーザーズマニュアルについて、確認いたしました。
何度もご丁寧に対応いただき、誠にありがとうございました。