RL78 SmartConfiguratorで気になった点とか改善する案とか報告してみるスレッド

こんにちは。NoMaYです。

いま2つ気になっています。

(1) ICCRL78とLLVM-RL78(とGNURL78)でワーニングレベルを上げるとワーニングがとてもたくさん出る
(2) RL78スマートコンフィグレータGUI上でオンチップデバッグトレースを使用する設定にしても予約RAM領域を空けていない

Parents
  • こんにちは。NoMaYです。

    最近以下のスレッドに関わったのですけれども、以下のサンプルプログラムにおいてA/D変換の終了待ちにHALTを使用していました。初学者さんレベルを超えていれば、他の割り込みも発生する状況では正しく動作しないサンプルプログラムである、というのはすぐに気付くことなのですけれども、初学者さんレベルを超えている人はまず見ない、言い換えると、初学者さんレベルの人しか見ない、そのようなタイプのサンプルプログラムとしては、あまり良くないのでは?、と思いました。

    以前、かふぇルネに投稿されていた相談者さんのプログラムで、コード生成機能またはRL78スマートコンフィグレータでUARTの複数バイト受信の受信完了待ちの部分で同じ様にHALT命令が使用されていて、チョコさんに、動作しない可能性がありますよ、と指摘されていた記憶がありますけれども、そういう事例に成長していってしまうのかも知れない、という気もしました。

    ここは、ちゃんと、コールバックルーチンでフラグを立てるようにし、フラグが立つのをポーリングするのが良いのではないでしょうか。

    また、確かに、単にフラグを立てる、ポーリングする、という処理を追加するだけなのですけれども、初学者さんのみに限らず、ルネサスさんの中の人ですらそれが出来るとは限らない、ということも課題ではないでしょうか。(チョコさんが10年言い続けていることですけれども。)

    RL78/G23でRAMに保存したA/D変換値をCOM Port経由でPCに転送しcsvで保存したいです。
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rl78/f/forum18/9846/rl78-g23-ram-a-d-com-port-pc-csv

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

    void main(void)
    {
            DI();                                                   /* Disable interrupt */
     
        {
            R_Config_ADC_Set_OperationOn();
            R_Config_ADC_Start();                                   /* Start AD converter */
            
            /* ---- Main loop ---- */
            while (1U)
            {
                HALT();                                             /* Wait for interrupt */
                ADIF = 0U;                                          /* Clear INTAD request */
                R_Config_ADC_Get_Result_12bit(g_result_buffer);     /* Get result */
            }
        }

    }

     

Reply
  • こんにちは。NoMaYです。

    最近以下のスレッドに関わったのですけれども、以下のサンプルプログラムにおいてA/D変換の終了待ちにHALTを使用していました。初学者さんレベルを超えていれば、他の割り込みも発生する状況では正しく動作しないサンプルプログラムである、というのはすぐに気付くことなのですけれども、初学者さんレベルを超えている人はまず見ない、言い換えると、初学者さんレベルの人しか見ない、そのようなタイプのサンプルプログラムとしては、あまり良くないのでは?、と思いました。

    以前、かふぇルネに投稿されていた相談者さんのプログラムで、コード生成機能またはRL78スマートコンフィグレータでUARTの複数バイト受信の受信完了待ちの部分で同じ様にHALT命令が使用されていて、チョコさんに、動作しない可能性がありますよ、と指摘されていた記憶がありますけれども、そういう事例に成長していってしまうのかも知れない、という気もしました。

    ここは、ちゃんと、コールバックルーチンでフラグを立てるようにし、フラグが立つのをポーリングするのが良いのではないでしょうか。

    また、確かに、単にフラグを立てる、ポーリングする、という処理を追加するだけなのですけれども、初学者さんのみに限らず、ルネサスさんの中の人ですらそれが出来るとは限らない、ということも課題ではないでしょうか。(チョコさんが10年言い続けていることですけれども。)

    RL78/G23でRAMに保存したA/D変換値をCOM Port経由でPCに転送しcsvで保存したいです。
    community-ja.renesas.com/cafe_rene/forums-groups/mcu-mpu/rl78/f/forum18/9846/rl78-g23-ram-a-d-com-port-pc-csv

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

    void main(void)
    {
            DI();                                                   /* Disable interrupt */
     
        {
            R_Config_ADC_Set_OperationOn();
            R_Config_ADC_Start();                                   /* Start AD converter */
            
            /* ---- Main loop ---- */
            while (1U)
            {
                HALT();                                             /* Wait for interrupt */
                ADIF = 0U;                                          /* Clear INTAD request */
                R_Config_ADC_Get_Result_12bit(g_result_buffer);     /* Get result */
            }
        }

    }

     

Children
No Data