なんとかなるさね

マイコンをネタにブログを始めてみました


RL78マイコン基板(RL78/G10)|CS+(CubeSuite+)で内蔵周辺機能シミュレーションを試す (3) 

CS+(旧CubeSuite+)のドキュメントによると、RL78/G10では内蔵周辺機能シミュレーションが出来ることに
なっています。前の2つのエントリ(554, 555)でポート機能(一応は内蔵周辺機能の1つ)のシミュレーションを
試してみたのですが、今度はいかにも内蔵周辺機能らしいタイマ機能のシミュレーションを試してみました。
ここ最近のエントリで試したプログラムは、もともとルネサスの国内向けのユーザコミュニティサイト(Rulz)で
公開されていたRL78/G10のサンプルプログラムのmain()関数を改造したものですが、このサンプルプログラム
にはタイマ割り込みで実装されたWait_1sec()という関数が含まれていますので、これを試してみました。

最初、以下の(1)のプログラムをシミュレータで実行してタイミングチャート上で波形の時間間隔を計ってみた
ところ、1secを期待していたのに380msecしかありませんでした。シミュレータのリリースノートを読んでも
関係しそうな項目は無く、暫く困惑していたのですが、もしかしてと思い、以下の(2)のプログラムを作成して
実際のマイコンに書き込んで10回点滅する時間を計った(ストップウォッチ片手に点灯回数を1, 2, 3, ・・・, 10
と数えて11回目の点灯直前にストップウォッチを止めた)ところ、7.6秒でした。逆算するとWait_1sec()関数
での実際の待ち時間は380msecだったということになりますので、結局、シミュレータでの実行時間の結果と
実際のマイコンでの実行時間は一致していました。(たぶん、もともとは1secだったのでしょうがプログラムの
機能を拡張していった時に待ち時間を短くする必要があって変更されたのだと思います。)

(1) プログラムその1

    for (;;)
    {
        putchar( '/' );
        Wait_1sec();
        putchar( '/' );
        NOP();
    }

(2) プログラムその2

    for (;;)
    {
        putchar( '/' );
        G_LED_DATA = 0b010101010101;
        Wait_1sec();
        G_LED_DATA = 0b101010101010;
        Wait_1sec();
        putchar( '/' );
        NOP();
    }

以下はシミュレーション結果の画面コピーです。

(1) プログラムその1





(2) プログラムその2





ちなみに、タイマ割り込み処理(多数発生しているうちの1つ)の先頭と末尾のトレースデータは以下のように
なっていました。




なお、もともとのRL78/G10のサンプルプログラムですが、以下のウェブページからダウンロードしました。

Home >> かふぇルネ >> サンプルプログラム等 >> LEDのマトリクス構成での使い方 - Rulz
http://japan.renesasrulz.com/cafe_rene/m/sample_program/218.aspx?loc=JP

追記 : メモ

シミュレーション速度はトレース機能の有効/無効や内蔵周辺機能シミュレータGUIの内容によって変化する
ようです。例えば、今回の760msec期間のシミュレーション時間は、私のパソコンの年代物のCPUでの結果
ですが、以下のように変化しました。(私のパソコンのCPUは、AMD Athlon 1.2GHzというCPUです。)

トレース機能を使用する       シミュレータGUIの内容       シミュレーション時間
はい       タイミングチャートのみ       90秒程(ばらつきが大きかった)
はい       何もしない       62秒程
いいえ       タイミングチャートのみ       42秒程
いいえ       何もしない       19秒程

なお、シミュレータGUIの内容というのは、それぞれ以下の状態のことです。ちなみに、シミュレータGUIの
表示/非表示の違いに関しては、シミュレーション時間に影響しないようでした。

タイミングチャートのみ


何もしない


関連記事

2015/01/23   blog-entry-556   category: RL78 /* 16bit,8bit CISC */

go page top