こんばんは、井田です。
現在 H8/3069でHEW4(製品版)を使用し、C,C++の混合でコーディングを行っています。
コンパイル後の「*.MOT」ファイルは260KB程有ります。
RAMデバッグも一通り済んで、ROMに書き込んだのですが、
電源ON時にH8のイニシャル処理とはまったく関係のないソフト処理でダンマリ停止することが有ります。
電源を入り切りしていると正常に起動する時もあるのですが、ダンマリ停止する割合が多く悩んでいます。
RAMデバッグの時は問題なく動作します。
なお、叩き台としてVC++6で作成ものを、H8/3069用に置き換えています。
セクションの設定は下記のようになっています。
0x00200000は外部SRAM
0x00000400 PResetPRG
PIntPRG
0x00000800 P
C
C$DSEC
C$BSEC
C$INT
D
C$VTBL
0x00200000 B
R
0x00FFFD00 S
下記のソースでお気づきの点など有りましたら、助言いただけたら幸いです。
Seq1まではLCDに表示されるがSeq1A1は表示されない。
GetMinValue()が呼び出されていない感じ。
void main(){
CUI::Create();
}
void CUI::Create()
{
//クラスはシングルトンで保有
m_pInputA = new CInputA; //CInputBaseから継承
m_pInputB = new CInputB; //CInputBaseから継承
LcdOut("Seq1"); //LCD出力
m_pInputA->SetLimit();
LcdOut("Seq2"); //LCD出力
m_pInputB->SetLimit();
}
void CInputBase::SetLimit(){
int GetMin;
int GetMax;
LcdOut("Seq1A"); //LCD出力
GetMin = GetMinValue(); //戻り値-9999
LcdOut("Seq1B"); //LCD出力
GetMax = GetMaxValue(); //戻り値9999
}
int CInputA::GetMaxValue()
{
int i;
int k = 1;
int nRet = 0;
for(i = 0; i < 4; i++){
nRet += 9*k;
k *= 10;
}
return nRet;
}
int CInputA::GetMinValue()
{
LcdOut("Seq1A1"); //LCD出力
return -GetMaxValue();
}