ここでも限界性能を測るためにlwait()を外します。
プログラムを中断。
ビルド
ファイルのリロード 「Yes」 をクリック。
「実行」で波形を測定した信号が以下です。
周波数で5.32MHz≒187nsec でした。
142.で行ったArduinoIDE、144.で行ったCS+の結果とまとめてみると以下になります。
※倍率はArduinoIDEの速度を1としたときの他の開発環境での速度比率です。
※CPUボードは3つとも同じRL78_G24_101GA CPUボードです。
プロがCS+ や e2studioを使用する理由の一つがこれです。
また、プログラム中の変数、例ではcntの値がリアルタイムで式窓で確認できます。下記プログラムではcntを10以上でクリアするように書き換えられています。
変数cntが0から10まで上がり、再び0になるのが目視出来ます。
グラフで見ることも出来ます。
この変数cntを見るためにどの程度の実行時間のロスがあるのか見てみます。
変数を見ている設定で2.56MHz程度。
実行を一瞬停止してメモリアクセスするを「いいえ」
にして動作、波形を観測しても2.56MHzは変わりない感じです。
これは専用のハードウエアをマイコン側に持っている強みだと思いますが、全容が見えたわけではありません。
今は、他社のマイコンでもデバックのためのハードウエアを内蔵しているものもあると思います。これが無いマイコンで実行中に変数の変化を見ようとすると、実行時間に大きな変化をもたらしてしまい、正しいデバックが行えなくなる場合があります。※1
プロが使う理由の2つ目が RL78マイコンと開発環境 CS+ for CC や e2studio は、デバック中の変数確認が容易で、それによる時間遅延がほとんどみられないことです。もちろん、COMポートデバックでも同様です。
COMポートデバックは今まで必要としたE2liteなどのハードウエアデバッカを必要としない上に、ハードウエアデバッカがあるかのように、デバック中の変数確認等にほとんど時間遅延が見られない優れた方法だと思います。
※1 例えばprintfデバックで変数をシリアル送信するプログラムでは、printfが有ると無いとではプログラムの時間が変わってしまい、変数の確認は出来ても、イベントに対する応答時間も変わってしまい、対応できない場合がある。別な言い方では、ハードデバッカの存在理由の1つはこの遅延を最小限にするためでした。