RL78 CS+のシュミレート と E1エミュレータ での設定の差

CS+でシュミレータ動作確認とE1エミュレータでデバッグしていますが、RAM変数の動作が違います。

タイマー割り込みと、メインルーチンで簡単なプログラムを確認しています。

タイマー割恋でRAM変数にセットしますが、メインに戻りIOポートをアクセスすすると

RAM変数がクリアーされます。

CS+の設定の問題なのでしょうか。

教えてください。

 

 

以下。テストプログラムです。

 

/***********************************************************************/
/* */
/* FILE :Main.c */
/* DATE : */
/* DESCRIPTION :Main Program */
/* CPU TYPE : */
/* */
/* NOTE:THIS IS A TYPICAL EXAMPLE. */
/* */
/***********************************************************************/
#include "iodefine.h"

#define DI __DI
#define EI __EI

#define RXDDT P0_bit.no0
#define LEDBIT P0_bit.no1
#define HARISW P0_bit.no2
#define PWBIT P0_bit.no3
#define BUZZPT P0_bit.no4
#define HIMO_SW P13_bit.no7

int Sycnt1;

 

void mainjob(void);
void R_TAU0_Channel0_Start(void);

 

void timerjob(void)
{
if(Sycnt1-- == 0)
{
Sycnt1 = 1000;

}

}


void mainjob(void)
{
R_TAU0_Channel0_Start();
EI();

for(;;)
{
if(PWBIT == 1) // 電源?
{
if(HARISW == 1) // 貼り付けSW ON?
{
P0_bit.no1 = 1;
}
}
}
}

Parents
  • チョコです。
    どのような設定で動作させているのかがわからないと判断はできないですね。
    特に,RAMはどのように初期化されているのかも気になります。
    CS+の標準のスタートアップでは,内蔵周辺初期化や変数の初期化後にはmain関数が起動されるはずなのですが,そこらがどうなっているかが影響している気もします。
Reply
  • チョコです。
    どのような設定で動作させているのかがわからないと判断はできないですね。
    特に,RAMはどのように初期化されているのかも気になります。
    CS+の標準のスタートアップでは,内蔵周辺初期化や変数の初期化後にはmain関数が起動されるはずなのですが,そこらがどうなっているかが影響している気もします。
Children
  • チョコさん、ご返事ありがとうございます。
    ソースはこの用に記載しています。
    初期化はCS+内で初期化されていますがそのままです、
    環境としては、RL78/G10 CS+ CCLRL E1ミュレータ で行っています。
    RL78シュミレータでは、C言語の通りタイマー割り込みでSycnt変数にセットして
    メインでIOポートアクセスを行っていますが正常にアクセスしています。
    ところが、E1エミュレータにハード基板を接続して動作させると、タイマー割り込みで
    Sycntにセットしても、メインでIOアクセスを行うと、Sycntが0になります。
    プロパティをあちらこちら見ていますが、問題点が見つかりません。

    ご教授ください。
  • チョコです。

    RL78/G10ですか。安全機能が悪さをしているかが気になっていたのですが,G10では無関係ですね。

    シミュレータは,ハードウェアの全てをカバーできている訳ではないので,そこらが影響している可能性はあります。電源電圧が規格を満足していないとかノイズが大きいとかはないでしょうか。

    シミュレータで確認したことはないのですが,ウォッチドッグタイマが悪さをしていないかも気になります。

    また,E1でタイマ割り込みがきちんとかかっているかも確認する必要があります。