
初めて質問します。
マイコン初心者なので宜しくお願いします。
SH-7144で、ソフトウェアスタンバイをIRQ3から解除したいのですが、うまくいきません。
環境は、HEWを使ってます。
実験中の為コメント付きの汚いコードになってますが、あらかじめ失礼します。
以下コードです。
// スリープ時の処理を設定
SBYCR.BIT.SSBY = 0x01; // SLEEP 命令実行後、ソフトウェアスタンバイモードに遷移
//SBYCR.BIT.HIZ = 0x01; // ソフトウェアスタンバイモード時に、端子状態をハイインピーダンス
SBYCR.BIT.HIZ = 0x00; // デバッグ用
//SBYCR.BIT.IRQEH = 0x01; // IRQ7~4 ソフトウェアスタンバイモードの解除を無効にする
SBYCR.BIT.IRQEH = 0x00; // デバッグ用
SBYCR.BIT.IRQEL = 0x00; // IRQ3~0 ソフトウェアスタンバイモードの解除を有効にする
//INTC.ICR1.BIT.IRQ3S = 0x00;
//INTC.ICR2.BIT.IRQ3ES = 0x00;
INTC.ICR1.BIT.IRQ3S = 0x01;
INTC.ICR2.BIT.IRQ3ES = 0x00;
INTC.IPRA.BIT._IRQ3 = 0xF;
~~~~~~~~~中略~~~~~~~~~~~
// 42PIN を Port A.PA9 から IRQ3 として使用する
PFC.PACRL1.BIT.PA9MD = 0x02;
//INTC.IPRH.BIT._WDT = 0xF;
WDT.WRITE.TCSR = 0xA55F; // WT/IT = 1, TME = 0, CKS2,1,0 = 0
//WDT.WRITE.RSTCSR = 0x5A5F;
sleep();
以上コードでした。
//INTC.ICR1.BIT.IRQ3S = 0x00;
//INTC.ICR2.BIT.IRQ3ES = 0x00;
INTC.ICR1.BIT.IRQ3S = 0x01;
INTC.ICR2.BIT.IRQ3ES = 0x00;
の部分ですが、本来IRQ3がローの時にスタンバイ解除したかったのですが、
ハードウェアマニュアルの低消費電力状態の項目には、立ち上がり・立ち下がりエッジでの表現しかなかったため上記のような状態になりました。
WDTのみでパワーオンリセットが出来る事と、IRQ3だけで割り込みが出来る事は確認出来たのですが、どうしてもスタンバイの解除が出来ません。
それと、スタンバイの解除が出来た場合は、WDT同様にパワーオンリセットになると考えて宜しいでしょうか。
アドバイス等でも宜しいのでお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
当方手持ちの7144ボードで、ご提示のコードを試してみたところ、割と普通に起きてくれましたよ。
もしかして、何か勘違いをされていませんでしょうか。
スタンバイの解除が出来た場合は、リセットではなく、IRQ3の割り込みが発生した時と同じ事が、SLEEP命令の次から起こります。
つまり、SRを0にするなどして割り込みを許可していれば、IRQ3の割り込みハンドラが走り出すし、割り込み禁止なら、SLEEP命令の次から何事もなかったかのように走り出します。
この観点から、もう一度ご確認されてみてはいかがでしょうか。
ご提示のコードから見えない事の確認事項としては、
・WDTは、もともと使っていないですよね?(TCSRのTMEが1になっていないですよね?)
という事くらいでしょうか。
あと、「デバッグ中」の実験もしてみましたが、
・レベルセンスでも、起きてきました。
・SBYCRのHIZビットを1に設定しても、起きてくれました。
もう少しですので、頑張って下さい。
あと、蛇足ながら、「パワーオン・リセット」という用語について。
WDTでのリセットと、パワーオン・リセットは、ソフトウェアから見ると似ていますが、全くの別物です。
違いをよくお調べになって、常に意識して区別される事をお勧めいたします。
pyonmae様
ご回答ありがとうございます。
少し諦めかけていたのですが、pyonmae様の環境で出来たという事で少し頑張ってみました。
ご指摘通り、スタンバイからの復帰に関して認識が間違ってました。
sleep→WDT→WDTの設定によるパワーオンリセット
になるのか、
sleep→IRQ割り込み→mainへ飛ぶ
のどちらかと思ってました。
sleep→IRQ割り込み→sleep直後に戻る
が正解ですね。
IRQ割り込みの時にSCIによるデバッグメッセージを入れていたのですが、SCIがソフトウェアスタンバイ時にリセットされる事を失念していて余計に混乱してしまいました。
IRQ割り込み処理の中に、SCIの初期処理を追加してsleep直後にデバッグメッセージを出力してみた所、スタンバイからの復帰が確認出来ました。
>WDTでのリセットと、パワーオン・リセットは、ソフトウェアから見ると似ていますが、全くの別物です。
違いをよくお調べになって、常に意識して区別される事をお勧めいたします。
ありがとうございます。もう少し勉強してみます。
お陰様で解決出来ました。ありがとうございます。
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 = リセット"ではありません.
bug_bug様
ありがとうございます。
ご指摘通り、
IRQ端子の立ち下がりエッジまたは立ち上がりエッジでしか、動作しませんでした。
なので、IRQは立ち下がりで割り込みされるように設定致しました。
SBYCR.BIT.IRQEH = 0x01;
SBYCR.BIT.IRQEL = 0x01;
に関しては、マニュアル通り、0x01 で無効。0x00 で有効でした。
イネーブルという表現は、少し混乱を生みました。
WDTに関しては、自分の認識に誤りがございました。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- TOEFL・TOEIC・英語検定 bitとlittleは両方ともに同じ 1 2022/08/10 13:03
- Excel(エクセル) Excel 2019 32-bit版を64-bit版にするには? 8 2023/07/28 14:20
- その他(プログラミング・Web制作) Visual Studio Code 関数の使い方について 3 2023/05/31 13:15
- 英語 英文和訳についての質問です。 2 2023/06/23 06:38
- その他(AV機器・カメラ) オーディオインターフェイスの24bitなど量子化bit数はどこで設定できるのでしょうか? 1 2022/06/26 07:58
- 英語 わからない英文があります。 4 2022/11/16 07:25
- その他(Microsoft Office) 折れ線グラフ、同じ項目の色 4 2022/12/23 15:46
- その他(IT・Webサービス) hi-bitの契約について 1 2023/05/04 21:48
- スピーカー・コンポ・ステレオ DAC[について・・・ 1 2022/08/29 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PIC16F84Aから16F628Aの...
-
コールバック関数について
-
インバウンドで迷惑している人...
-
H8マイコンで割り込みが任意の...
-
Z80の割り込みについて
-
PICで既定の時間数ループを...
-
SH7727(SH3-DSP)
-
割り込みの入り方。考え方。
-
(H8マイコン)タイマ割込で変更...
-
このレジの並び方は間違ってま...
-
【組込み】割り込み中のstatic...
-
割り込み?
-
【H8-3052F】タイマ割り込み
-
Macターミナルで実行中のプログ...
-
CPad for LSI C-86の実行結果
-
秋月PICプログラマーを使っ...
-
グラフィックLCD SG12...
-
エクセルVBAで
-
通信ゲームを作りたいんですが
-
Mac 乗数の入力方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
電車で待機列の割り込みについ...
-
スーパーのレジで並んでいたら...
-
CPU負荷率の安全な上限と計...
-
マイコン C言語 割り込み処理...
-
このレジの並び方は間違ってま...
-
USB機器からのデータ受信による...
-
【組込み】割り込み中のstatic...
-
VB6でSendKeyを利用したTab移動...
-
一定時間操作がなかったら、と...
-
VB.NET スレッドからのイベント...
-
irqbalance って
-
ウォッチドッグタイマ(WDT)の...
-
Timerコントロールによる動作の...
-
pic 複数の割り込み関数 切り分...
-
マイコンSH-2の割り込みを用い...
-
Amazonfireタブレットにわから...
-
STATUSのZフラグについて
-
マイコンの割り込みについて教...
-
Timerコンポーネントのインター...
-
電車乗車時、並んでいるのに割...
おすすめ情報