RL78/G23でRAMに保存したA/D変換値をCOM Port経由でPCに転送しcsvで保存したいです。

初めまして。Hibaと申します。
初めてのマイコンでRL78/G23-64p Fast Prototyping Boardを使用しています。
以下のサンプルコードを改変して、RAMに保存したA/D変換値をCOM Port経由でPCに転送しcsvで保存したく試用中です。

 サンプルコードをハードウエアデバッグすることは完了しましたが、A/D変換値を確認することができず詰まっております。
質問としましては、以下2点でございます。

①e2 studio上でRAMにに保存したA/D変換値を読む方法をご教示願いたいです?
②RAMに保存したA/D変換値をCOM Port経由でPCに転送することは可能でしょうか?

【環境】
・e2 studio(Windows11)
・ツールチェーンRenesas CCRL v1.11.00
・RL78/G23-64p Fast Prototyping Board

以上、よろしくお願いいたします。

Parents
  • Hibaさん、こんにちは。NoMaYと申します。

    > ①e2 studio上でRAMに保存したA/D変換値を読む方法をご教示願いたいです?

    質問された意図とは違った答えになっているかも知れませんけれども、アプリケーションノートの配列変数なら以下の何れかで確認出来ますよ。

    (1) 式ウィンドウ
    (2) メモリブラウザウィンドウ
    (3) (ちょっと不便ですけれども)メモリウィンドウ

    > ②RAMに保存したA/D変換値をCOM Port経由でPCに転送することは可能でしょうか?

    可能ですよ。RL78/G23-64p Fast Prototyping Board上のUART⇔USB変換IC経由でPCのTeraTerm等に出力出来ます。そのボードに関して、e2 studioで使う場合の小技等も含めて、以下のスレッドに私が試した(それなりに長大な)記録があります。また、以下のサンプルプログラムではLLVM-RL78というフリーコンパイラ+FreeRTOSを使用していますけれども、e2 studioで使う場合の小技等に関しては、CC-RLでも大差無かった筈だったと記憶しています。

    RL78/G23 Fast Prototyping Boardを買いました
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rl78/f/forum18/7087/rl78-g23-fast-prototyping-board/39350#39350

    RL78 Fast Prototyping Board+LLVMRL78+Cplusplus sample program
    community-ja.renesas.com/cafe_rene/forums-groups/beginners/f/002-2095199602/7430/rl78-fast-prototyping-board-llvmrl78-cplusplus-sample-program
     

Reply
  • Hibaさん、こんにちは。NoMaYと申します。

    > ①e2 studio上でRAMに保存したA/D変換値を読む方法をご教示願いたいです?

    質問された意図とは違った答えになっているかも知れませんけれども、アプリケーションノートの配列変数なら以下の何れかで確認出来ますよ。

    (1) 式ウィンドウ
    (2) メモリブラウザウィンドウ
    (3) (ちょっと不便ですけれども)メモリウィンドウ

    > ②RAMに保存したA/D変換値をCOM Port経由でPCに転送することは可能でしょうか?

    可能ですよ。RL78/G23-64p Fast Prototyping Board上のUART⇔USB変換IC経由でPCのTeraTerm等に出力出来ます。そのボードに関して、e2 studioで使う場合の小技等も含めて、以下のスレッドに私が試した(それなりに長大な)記録があります。また、以下のサンプルプログラムではLLVM-RL78というフリーコンパイラ+FreeRTOSを使用していますけれども、e2 studioで使う場合の小技等に関しては、CC-RLでも大差無かった筈だったと記憶しています。

    RL78/G23 Fast Prototyping Boardを買いました
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rl78/f/forum18/7087/rl78-g23-fast-prototyping-board/39350#39350

    RL78 Fast Prototyping Board+LLVMRL78+Cplusplus sample program
    community-ja.renesas.com/cafe_rene/forums-groups/beginners/f/002-2095199602/7430/rl78-fast-prototyping-board-llvmrl78-cplusplus-sample-program
     

Children
  • NoMaYさん、こんにちは。
    ご回答ありがとうございます。以下質問したく思います。お忙しいところ申し訳ありません。
    ご紹介いただきましたサンプルプログラムの、
    UART出力
    30_UART_Printf/
    をe2 studio上でハードウエアデバッグして、e2 studio終了後にTera Termで確認しましたが、Hello Worldが表示されません。(LEDは点滅しています。ボーレートは9600、COMポートはハードウエアデバックと同じものを選択。
    )
    NoMaYさんが以下のように記述なさっておりますが、こちらは関係ありますでしょうか?

    > シリアルコンソールのサンプルプログラムはボード上のFT232RQに接続されたUART0になっていますが、同じくボード上のFT232RQを使用するCOMPort通信デバッグ機能とは競合しますので、シリアルコンソールのサンプルプログラムではCOMPort通信デバッグは出来ません。

  • Hibaさん、こんにちは。NoMaYです。

    はい、関係あります。30_UART_Printfのソースを覗いて頂くと、以下のコメントが見えると思いますが、これはArduinoソケットのD1とD0を経由してPCのTeraTerm等に出力するサンプルです。(COMPort通信デバッグ機能を使用出来るように(残しておくように)、あえてArduinoソケットのD1とD0に繋がっているUARTを使う、というサンプルだったのでした。)

    // Please do the following steps
    // 1. Change the COM Port number of USB Serial Port connected to
    //    RL78/G23-64p FPB to COM9 by using Windows Device Manager.
    // 2. Push 'Launch in Run mode' button of launch bar of e2 studio
    //    to run the program. (This step includes launching Renesas
    //    Flash Programmer V3.08. Please install it before the step.)
    // 3. This example uses MCU's UART1 (TxD1/RxD1 = Arduino's D1/D0)
    //    and the UART is configured with 9600 baud.

     
    これ以外に、10_SerialConsole_printfのソースを覗いて頂くと、以下のコメントが見えると思いますが、これがRL78/G23-64p Fast Prototyping Board上のUART⇔USB変換IC経由でPCのTeraTerm等に出力するサンプルです。

    // Please do the following steps
    // 1. Change the COM Port number of USB Serial Port connected to
    //    RL78/G23-64p FPB to COM9 by using Windows Device Manager.
    // 2. Push 'Launch in Run mode' button of launch bar of e2 studio
    //    to run the program. (This step includes launching Renesas
    //    Flash Programmer V3.08. Please install it before the step.)
    // 3. Open Terminal view of e2 studio then open terminal choosing
    //    'Serial Terminal' mode with COM9 and 2000000 baud.

     
    ごめんなさい。これを作っていた時は気付かなかったのですけれども、10_SerialConsole_printfのコメントに、RL78/G23-64p Fast Prototyping Board上のUART⇔USB変換IC経由ですよ、といった文面が欲しいところですかね。そして逆に、30_UART_Printfのコメントに、こちらはそうでは無いですよ、といった文面が欲しいところですね。すみません、、、

  • NoMaYさん。重ね重ねご返信ありがとうございます。
    内容について理解しました。
    今回私がやりたいことはご紹介いただきました10_SerialConsole_printfの方ということですね。

    以下2点追加で質問させていただきたく思います。お忙しいところ大変申し訳ありません。
    ①10_SerialConsole_printfのコメント内に、
    >This step includes launching Renesas Flash Programmer V3.08. Please install it before the step.
    と記述ありますが、Renesas Flash Programmerは必須なのでしょうか?
    10_SerialConsole_printfをe2 studiioのハードウエアデバッグで書き込んだ場合に、Tera Term上でHello Worldが表示されませんでした。Renesas Flash Programmerで書き込んだ場合と挙動が異なるのでしょうか?という意図で質問させていただいております。なお、COM Portは9にWindowsのデバイスマネージャーで設定しました。

    ②Renesas Flash Programmerが必須な場合、書き込み用のmot or hexファイルが必要となると思います。これらファイルの出力がデフォルトでされず困っております。何か設定等が間違っているのでしょうか?
    Renesas Flash Programmer V3.11.00を導入しRL78/G23ボードとの接続まではできております。e2 studioのマニュアルではHardwareDebagフォルダにmotファイルが出力される旨、記述がありますが出力されません。またNoMaYさんの別のご回答を参考にArtifact extensionをmotにしてみたのですが出力されません。
    >これは、e2 studio あるある、だったような気がします。あるバージョン以降のe2 studioで以前のバージョンのe2 studioで作成したプロジェクトを使おうとすると発生する現象だったと思います。対処方法は以下の筈です。

    発生条件

    ・ projectのpropertyのC/C++ buildのSettings-->Build Artifact-->Artifact extensionが mot になっている
       (日本語モードでは、設定-->ビルド成果物-->Artifact extension、です。)

    対処方法

    ・ Artifact extensionを mot から abs へ変更する


    以上、お忙しいところ大変恐縮でございますがよろしくお願いいたします。

  • Hibaさん、こんにちは。NoMaYです。

    > Renesas Flash Programmerで書き込んだ場合と挙動が異なるのでしょうか?という意図で質問させていただいております。

    ルネサスさんのオフィシャル案件では、RL78では(というか多分RXやRH850も)最終確認はMOTファイル等をRFP等のプログラム書き込みツールで書き込んで行って下さい、ということになっていたと思いますけれども、少なくともRL78ではデバッガで書き込んだままでも動作しました。(今しがた手元で確認しました。)

    それで少し確認したいのですけれども、LEDは点滅していますでしょうか?点滅しているのであれば、TeraTermのボーレート設定を確認して頂けませんか?10_SerialConsole_printfのボーレートは2000000bpsつまり2Mbpsです。TeraTermのボーレート設定のドロップダウンリストのボーレートの候補には用意されていませんので、2000000を手入力して頂けませんか。

    どのみちArduinoシールドと接続することはありませんので(Arduinoシールドと接続するものでは無いですので)、PCのTeraTerm等へデバッグメッセージを出力する用途として、RL78/G23-64p Fast Prototyping Board上のUART⇔USB変換ICが動作するギリギリまで高速なボーレートに設定してあります。

    > 書き込み用のmot or hexファイルが必要となると思います。これらファイルの出力がデフォルトでされず困っております。

    以下をダウンロードしてe2 studio 2022-10でビルドしてみたところ、以下のMOTファイルが生成されていました。このMOTファイルはありませんでしたでしょうか?

    r01an5523xx0101-rl78g23-adc/workspace/e2studio/r01an5523/DefaultBuild/r01an5523.mot

    RL78/G23 A/Dコンバータ (スキャン・モード) Rev.1.01 - サンプルコード
    www.renesas.com/jp/ja/document/scd/rl78g23-ad-converter-scan-mode-rev101-sample-code

    LLVM-RL78の場合、MOTファイルの拡張子はsrecになります。つまり、以下のファイルがMOTファイルになります。

    SerialConsole_printf.srec

  • NoMaYさんこんにちは。Hibaです。重ね重ねありがとうございます。
    最終的にRFPで.srecを書き込んだところ、Tera Term上でHello Worldが表示できました!
    (ただしハードウエアデバッグでは表示されませんでした。)
    ありがとうございます。やっとスタートラインに立てました。

    以下、ご指摘事項の回答でございます。

    >ルネサスさんのオフィシャル案件では、RL78では(というか多分RXやRH850も)最終確認はMOTファイル等をRFP等のプログラム書き込みツールで書き込んで行って下さい、ということになっていたと思いますけれども、少なくともRL78ではデバッガで書き込んだままでも動作しました。(今しがた手元で確認しました。)

    ご検証いただきありがとうございました。
    最終はRFP等のプログラム書き込みツールで書き込みますが、デバッガで書き込んでも動いたということですね。

    >それで少し確認したいのですけれども、LEDは点滅していますでしょうか?点滅しているのであれば、TeraTermのボーレート設定を確認して頂けませんか?10_SerialConsole_printfのボーレートは2000000bpsつまり2Mbpsです。TeraTermのボーレート設定のドロップダウンリストのボーレートの候補には用意されていませんので、2000000を手入力して頂けませんか。

    デバッグモードで書き込んだ後に、LEDは点滅しております。
    しかしTeraTermのボーレート設定に2000000を手入力しましたが、何も表示されません

    >LLVM-RL78の場合、MOTファイルの拡張子はsrecになります。つまり、以下のファイルがMOTファイルになります。

    ご教示いただきありがとうございます。
    ビルド後にSerialConsole_printf.srecの生成を確認しましたので、これをRFPで書き込みをしたところ、Hello Worldが表示されました!

  • Hibaさん、こんにちは。NoMaYです。

    うむむむ、デバッグモードで書き込んだ後(e2 studioを終了して/もしくは少なくともデバッガを切断して)LEDが点滅しているのにTeraTermに表示されない、だが、srecファイルをRFPで書いたら表示された、というのは、少々(というか、かなり)私としては困惑する状況ですけれども、今はその点はHibaさんの方では先送りするのが得策ですかね。(操作に慣れてきたら、そのうち、そういうことだったのか、と思い至ることがあるかも知れません。)

  • NoMaYさん、こんにちは。Hibaです。
    ご返信ありがとうございます。

    確かに症状が不可解で私も納得はできておりません。。。
    (デバッグモードで書き込んで表示されなかった→やけくそでとりあえずsrecファイルをRFPで書き込んだところ成功という経緯です。)
    本件は一旦先送りして、後で何かわかりましたらここに追記したく思います。

  • NoMaYさん、こんにちは。Hibaです。

    1点追加でご相談です。
    (1)式ウインドウを試してみたのですが、配列変数がうまく表示されていないようです。
    対処法をご教示いただくことは可能でしょうか?お忙しいところ大変恐縮です。

    > ①e2 studio上でRAMに保存したA/D変換値を読む方法をご教示願いたいです?

    質問された意図とは違った答えになっているかも知れませんけれども、アプリケーションノートの配列変数なら以下の何れかで確認出来ますよ。

    (1) 式ウィンドウ
    (2) メモリブラウザウィンドウ
    (3) (ちょっと不便ですけれども)メモリウィンドウ

    【使用サンプルコード】

    以下のコードをe2 studio上でハードウエアデバッグした。

    【検討したこと】

    ①ANI2に0Vを入力すると、&g_result_buffer[0]=28と表示

    ②ANI2に1Vを入力しても、&g_result_buffer[0]=28のまま。

    ③"Eneble Real-time Refresh"をクリックしても上記①②の症状は変わらず。

  • Hibaさん、こんにちは。NoMaYです。

    画面コピーを見て、まず気になったことですけれども、プログラムがリセット番地で止まっている、のですが、A/D変換(に限らずマイコンの大抵の機能というの)はマイコンのプログラムを動かしていないと機能しないですよ。

    マイコンのプログラムを止めていてもデバッガで確認できるものは、ポート入力とかポート出力とか程度です。

    ですので、頂いている画面コピーからですと、そもそも何も変わらないですよ、というリプライになってしまうのですけれども、何か他に提示されていない情報がありますでしょうか?

    まずは、そこを確認したいです。(そして、そこが確認出来たら/分かって貰えたら、普通は皆さんどうしているのか、ということへ進みたいです。)

    [メモ]

    すみません、自分用のメモです。置かせて下さい。

    ・ CS+であればリアルタイムメモリ表示機能(プログラム実行を数十クロック程ちまちま止めながらメモリとかレジスタとか表示させる機能)を安心して使えるのだけれども、e2 studioではその辺りどうなっているのか?(e2 studioのプログラマさん達は、Javaでプログラムが書けます、Eclipseのプラグインが書けます、といった条件で採用された人達だと思っているので、組み込みプログラムを実行中に数百ms止めることがNGなどということを全く理解していないと思っているので、今までは、さすがに恐ろしくてe2 studioで実機の場合に試したことが無い。)

    ・ ただし、RL78/G23のFPBの場合、FT232でデバッグ機能を制御しているので、E1やE2Liteで動くと思っていたことが必ずしも同じように動く筈だと思って良いとは限らない。(少なくともCS+であるとしても)リアルタイムメモリ表示機能は、その辺りどうなっているのか?

    シリアルポートを使用したRL78デバッグ機能 アプリケーションノート Rev.2.10
    www.renesas.com/jp/ja/document/apn/rl78-debugging-functions-using-serial-port-application-note

    3.8.3. 疑似RRM/疑似DMM機能について
    疑似RRM/疑似DMM機能を使用する場合、以下の点に注意してください。
    ・ モニタリング時にスタンバイモード(HALT,STOP)が解除されることがあります。
    ・ CPU動作クロックが停止している場合、疑似RRM/疑似DMM機能が動作しません。
    ・ モニタリングの対象数が多い場合、デバッガの応答性が遅くなります。
    ・ メモリ・パネルを使用せずに、ウォッチ・パネルを使用してモニタリングすることでデバッガ応答性への影響が少なくなります。
    ・ サブクロックで動作している場合は、疑似RRM/疑似DMM機能が動作しません。
    ・ RAMガード有効時でも疑似DMMでは書き換えが可能です。


    (少なくともCS+であるとしても)オシロで確認しつつ試してみないと分からないかも、、、(オシロが、、、)

    [追記]

    すみません、自分用のメモです。置かせて下さい。

    ・ そうでも無いかな、、、さすがに、この文面ならば、そこまで想定外の振る舞いの差異は無いかな、、、

  • NoMaYさん、こんにちは。Hibaです。ご返信ありがとうございます。

    画面コピーを見て、まず気になったことですけれども、プログラムがリセット番地で止まっている、のですが、A/D変換(に限らずマイコンの大抵の機能というの)はマイコンのプログラムを動かしていないと機能しないですよ。

    マイコンのプログラムを止めていてもデバッガで確認できるものは、ポート入力とかポート出力とか程度です。

    ですので、頂いている画面コピーからですと、そもそも何も変わらないですよ、というリプライになってしまうのですけれども、何か他に提示されていない情報がありますでしょうか?

    まずは、そこを確認したいです。(そして、そこが確認出来たら/分かって貰えたら、普通は皆さんどうしているのか、ということへ進みたいです。)

    基本的なことが理解できておらず、お手間をおかけして申し訳ないです。
    他に提示できる情報はありません。
    デバッグモードにしてもプログラムが自動で動くわけではない、ということを今回理解しました。
    「プログラムがリセット番地で止まっている」ことの確認を含めましてご教示いただけますと幸いです。

    以上、お忙しいところ恐縮ですがよろしくお願いいたします。