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

お世話になっております。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
  • わわいです
    _entry のキーワードのついた関数は実行時にスタックを初期化するようになってます。
    周辺デバイスはリセットされずに以後の初期化の処理に入るので、もしかすれば、リセットの動作と違うところが出るかもしれません。
    これを防ぐには、初期化前に、モジュールストップを行っておくとか、関係するレジスタを一旦リセット値に設定してから初期化するようにする必要がありますね
Reply
  • わわいです
    _entry のキーワードのついた関数は実行時にスタックを初期化するようになってます。
    周辺デバイスはリセットされずに以後の初期化の処理に入るので、もしかすれば、リセットの動作と違うところが出るかもしれません。
    これを防ぐには、初期化前に、モジュールストップを行っておくとか、関係するレジスタを一旦リセット値に設定してから初期化するようにする必要がありますね
Children
No Data