• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SH2 (SH7144)のソフトウェアスタンバイ)

SH2 (SH7144)のソフトウェアスタンバイの解除方法と注意点について

このQ&Aのポイント
  • SH-7144でソフトウェアスタンバイを解除する方法について説明します。
  • IRQ3を使用してソフトウェアスタンバイを解除する方法がうまくいかない場合、代替手段としてWDTを使用する方法もあります。
  • スタンバイの解除が成功した場合、パワーオンリセットが発生する可能性がありますので、注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • pyonmae
  • ベストアンサー率64% (40/62)
回答No.2

こんにちは。 当方手持ちの7144ボードで、ご提示のコードを試してみたところ、割と普通に起きてくれましたよ。 もしかして、何か勘違いをされていませんでしょうか。 スタンバイの解除が出来た場合は、リセットではなく、IRQ3の割り込みが発生した時と同じ事が、SLEEP命令の次から起こります。 つまり、SRを0にするなどして割り込みを許可していれば、IRQ3の割り込みハンドラが走り出すし、割り込み禁止なら、SLEEP命令の次から何事もなかったかのように走り出します。 この観点から、もう一度ご確認されてみてはいかがでしょうか。 ご提示のコードから見えない事の確認事項としては、 ・WDTは、もともと使っていないですよね?(TCSRのTMEが1になっていないですよね?) という事くらいでしょうか。 あと、「デバッグ中」の実験もしてみましたが、 ・レベルセンスでも、起きてきました。 ・SBYCRのHIZビットを1に設定しても、起きてくれました。 もう少しですので、頑張って下さい。 あと、蛇足ながら、「パワーオン・リセット」という用語について。 WDTでのリセットと、パワーオン・リセットは、ソフトウェアから見ると似ていますが、全くの別物です。 違いをよくお調べになって、常に意識して区別される事をお勧めいたします。

tasukete_onegai
質問者

お礼

pyonmae様 ご回答ありがとうございます。 少し諦めかけていたのですが、pyonmae様の環境で出来たという事で少し頑張ってみました。 ご指摘通り、スタンバイからの復帰に関して認識が間違ってました。 sleep→WDT→WDTの設定によるパワーオンリセット になるのか、 sleep→IRQ割り込み→mainへ飛ぶ のどちらかと思ってました。 sleep→IRQ割り込み→sleep直後に戻る が正解ですね。 IRQ割り込みの時にSCIによるデバッグメッセージを入れていたのですが、SCIがソフトウェアスタンバイ時にリセットされる事を失念していて余計に混乱してしまいました。 IRQ割り込み処理の中に、SCIの初期処理を追加してsleep直後にデバッグメッセージを出力してみた所、スタンバイからの復帰が確認出来ました。 >WDTでのリセットと、パワーオン・リセットは、ソフトウェアから見ると似ていますが、全くの別物です。 違いをよくお調べになって、常に意識して区別される事をお勧めいたします。 ありがとうございます。もう少し勉強してみます。 お陰様で解決出来ました。ありがとうございます。

その他の回答 (1)

  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.1

データシートRev.4.00 「24.3.2 ソフトウェアスタンバイモード」に関する記載の中に以下の記述があります. IRQ割り込み入力による解除 スタンバイコントロールレジスタ(SBYCR)のIRQELビット、IRQEHビットが1に設定されている場合、/IRQ端子の立ち下がりエッジまたは立ち上がりエッジ・・・(中略)・・・が検出されると、クロックの発振が開始されます* 記載の通り SBYCR.BIT.IRQEH = 0x01; SBYCR.BIT.IRQEL = 0x01; で試してみましょう. ビット名称(※イネーブル)から推察しても「24.2.1 レジスタの説明」は誤記かも. WDTについては「12.4.3」と「12.6.6」を読めば謎が解けると思いますよ. "WDT = リセット"ではありません.

tasukete_onegai
質問者

お礼

bug_bug様 ありがとうございます。 ご指摘通り、 IRQ端子の立ち下がりエッジまたは立ち上がりエッジでしか、動作しませんでした。 なので、IRQは立ち下がりで割り込みされるように設定致しました。 SBYCR.BIT.IRQEH = 0x01; SBYCR.BIT.IRQEL = 0x01; に関しては、マニュアル通り、0x01 で無効。0x00 で有効でした。 イネーブルという表現は、少し混乱を生みました。 WDTに関しては、自分の認識に誤りがございました。 ご回答ありがとうございました。

関連するQ&A