こんにちは、井田です。
返答がだいぶ遅くなりましたが経過を報告いたいします。
H8についてまだまだ理解・勉強不足のところも有りますが、ご指摘いただければ幸いです。
>こんにちわ。小林です。
>
>非常に基本的な質問&大いに外しているようで恐縮です。
>
>HEW4を持っていないのでわからないのですが、スタックポ
>インタ(SP)の設定って自動生成されるのでしょうか?
>C、C++だけとありますたが、アセンブラ、もしくはインラ
>インを使っての初期設定が必要ですよね ^ ^ ;
HEW4でプロジェクトを作成時にリセットプログラムや割込みプログラムなど自動生成されます。
作成時の設定でスタックポインタの設定が初期値として下記のように割り当てられ、そのまま使用しています。
SPアドレス :0xFFFF00
スタックサイズ:0x200
>電源の入り切り。。CPUはリセットされてますか?
>短時間でオフ、オンしても電源が落ちきらず、CPUがリセッ
>トされない。なんてこともあります。ま、この場合は、頭から
>走らない。というだけの話ですけど。。
電源の入り切りは間隔を置いて行っています。
>蛇足ですが、
>>電源ON時にH8のイニシャル処理とはまったく関係のないソフ
>>ト処理でダンマリ停止することが有ります。
>
>この意味が良くわかりませんでした ^ ^ ;
>イニシャル処理があるからソフト処理が動くかと。。
>ま「A++」や「A=B+1」の様な変数レベルの処理であれ
>ばイニシャル処理の影響は少ないですけど。。入出力処理では
>イニシャル処理ありき。ましてLCDが絡みますよね。
電源ON後にPowerON_Resetの処理を行って、ソフトのMain処理の中で、
LCDなどのポートの入出力処理を行って、変数の初期化やクラスのnewなどの処理を行っている、
途中の段階で次の関数を呼び出さなくてダンマリ停止いう感じです。
あれから色々と調べたりしてみたのですが、
セクションの設定で、B,Rのアドレスを個別に設定したら、問題なく(100回/100回)起動したのですが、
プログラムの方を修正や追加をしていくと、正常に起動したり、起動しなかったりという現象になります。
また、起動が出来ても、変数の値が初期化されていないのか、値がセットした値と違います。
0x00000400 PResetPRG
PIntPRG
0x00000800 P
C
C$DSEC
C$BSEC
C$INT
D
C$VTBL
0x00200000 B
0x00240000 R
0x00FFFD00 S
>ソフトの問題じゃなくて、RESETとMODEピンの立ち上がりに、微妙なタイミング
>があったりしてません?
>RESET解除後にMODEピンが変動してると、動かない事があります、しばらく前に
>そういう経験しました。
電源ON時のRESETとMODEピンの立ち上がりをオシロで確認してみましたところ、
MODEの立ち上がりからRESETの立ち上がりまでは89ms有りましたが、
MODEピンは安定していました。
______________
MODE ______|
←89m→
______________
RESET _____________|