ソフトウェアリセット(?)動作

お世話になっております。entakeと申します。初歩的な内容かもしれませんが、もしお判りの方がいましたら教えていただけると助かります。

 

使用MCU:H8/36079Fなど

SCI3をUART通信として使用し電文解析させているのですが、"RESET"を受信した際に

PowerON_Reset(); をCallして再起動のような動作をさせています。(引き継いだソースがそうなっていた)

この時、通常のパワーオンリセットで初期化される各種機能レジスタは初期化されるでしょうか?

また、なぜ関数Callでリセットできるのでしょう?? (スタックがおかしくなりそうなものですが)

/*****************************************************************************/
#pragma section ResetPRG
/*****************************************************************************/
__entry(vect=0) VD PowerON_Reset(VD)
{
 set_imask_ccr((UC)1);
 _INITSCT();
 main();
 sleep();
}

Parents
  • entakeさん、こんにちは。NoMaYと申します。

    PowerON_Reset()をCallしてCPUがリセットされるか/各種機能レジスタが初期化されるか/SPの値がどうなるかについては他の皆さんが書かれていますが、私が気になったことは、電文"RESET"を受信した時の装置の動作として仕様書にどの様に書かれているのだろうか、という点です。

    例えば、以下の様に書かれていたら、現在のプログラムの処理は仕様書の内容と違うことになります。

    ・ "RESET"を受信したら装置をハードウェア的にリセットすること(制御マイコンも含む)

    以下のように書かれていたら、現在のプログラムで不具合が起きていなければ大丈夫かなと思います。
    (いわゆる、壊れていないものを直そうとするな、というものですね。(その反対は、バグは早めに追い出せ、でしょうか、、、ちょっと違うかも知れません、、、))

    ・ "RESET"を受信したら装置を初期化すること(あるいは、初期状態に戻すこと、とか)

  • NoMaYさん、こんにちは。entakeと申します。

    ご指摘ありがとうございます。
    仕様書には単に”リセットする”というアバウトな表現になっており、それほど心配いらなさそうです。
    (特に不具合の報告はないので直さないようにします!)
Reply
  • NoMaYさん、こんにちは。entakeと申します。

    ご指摘ありがとうございます。
    仕様書には単に”リセットする”というアバウトな表現になっており、それほど心配いらなさそうです。
    (特に不具合の報告はないので直さないようにします!)
Children
No Data