【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.22991

SH2の割り込みについて
投稿者---franny(2005/09/08 16:03:28)


SH2のSH7050Fでシリアルを割り込みにしようとしています。

#pragma interrupt(INT_SCI2_RXI2)
void INT_SCI2_RXI2(void)
{
処理
}
このように記述していて、割り込みも実際に発生しています。
ところが、最初に一度割り込みが入り、その処理が終了すると、リセットしてしまいます。
リセットする原因がわかりません。
割り込み関数の記述方法はpragmaで宣言すればいいだけかと思っているのですが、なにか他にあるのでしょうか?
それとも、リセットするほかの原因があるのでしょうか?
どのように探っていけばいいのかもわからない状況です。
なにか、ご助言ありましたらよろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:SH2の割り込みについて 22993 pi-ta 2005/09/08 16:53:52
<子記事> Re:SH2の割り込みについて 22994 tetrapod 2005/09/08 16:55:16
<子記事> 申し訳ありません 22998 franny 2005/09/08 18:23:54


No.22993

Re:SH2の割り込みについて
投稿者---pi-ta(2005/09/08 16:53:52)


【掲示板ご利用上の注意】
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!

>#pragma interrupt(INT_SCI2_RXI2)
>void INT_SCI2_RXI2(void)
>{
>処理
>}
>このように記述していて、割り込みも実際に発生しています。
>ところが、最初に一度割り込みが入り、その処理が終了すると、リセットしてしまいます。

このリセットするっていう意味がよく分からないのですが。
どういう意味で使っておられます?

2回目以降の割り込みが発生しないというのであれば、

1.割り込み処理から抜ける前に、SSRのRDRFをクリアしていない。
2.割り込み処理内でSCRのRIEをクリアしている。
3.割り込み処理内でSCI2の割り込みレベルを低く設定している。

等が考えられます。

ちなみに1.のRDRFのクリアは、"1"であることを読み出してから、"0"を
書き込む必要がありますので注意してください。
詳しくはハードウェアマニュアル(ADJ-602-138D)の13章を参照してください。



この投稿にコメントする

削除パスワード

No.22996

Re:SH2の割り込みについて
投稿者---franny(2005/09/08 17:24:02)


>【掲示板ご利用上の注意】
> ※ソースの添付は「HTML変換ツール」で字下げ!
> ※環境(OSとコンパイラ)や症状は具体的に詳しく!

すいません。気をつけます。
OSはWin2000でコンパイラはHEW4です。

>このリセットするっていう意味がよく分からないのですが。
>どういう意味で使っておられます?

リセットというのは、電源を入れた時と同じ動作を繰り返している、という
意味で書いたつもりなのですが、伝わりにくかったでしょうか?すいません。リブートしている状態だと思います。

>2回目以降の割り込みが発生しないというのであれば、
>
>1.割り込み処理から抜ける前に、SSRのRDRFをクリアしていない。
>2.割り込み処理内でSCRのRIEをクリアしている。
>3.割り込み処理内でSCI2の割り込みレベルを低く設定している。
>
>等が考えられます。
>
>ちなみに1.のRDRFのクリアは、"1"であることを読み出してから、"0"を
>書き込む必要がありますので注意してください。
>詳しくはハードウェアマニュアル(ADJ-602-138D)の13章を参照してください。

2回目以降という話ではありません。
一度目の割り込み処理から抜けるとリセットがかかります。
リブートしているように見えます。

シリアルの処理についてはマニュアルを見てやっています。
元々アセンブラでかかれていた割り込みの処理をC言語にする必要があり、
変更していたところ、このような現象になりました。


この投稿にコメントする

削除パスワード

No.22994

Re:SH2の割り込みについて
投稿者---tetrapod(2005/09/08 16:55:16)


#pragma interrupt で対処できるのはレジスタ保存復帰だけです。
それ以外に必要な処理については自分で考察する必要があります。

リセットがかかる原因など山ほど考えられるのでいちいち書いていられません。
マニュアルとサンプルをきっちり読めば理解できると思います。



この投稿にコメントする

削除パスワード

No.22997

Re:SH2の割り込みについて
投稿者---franny(2005/09/08 17:25:07)


>#pragma interrupt で対処できるのはレジスタ保存復帰だけです。
>それ以外に必要な処理については自分で考察する必要があります。
>
>リセットがかかる原因など山ほど考えられるのでいちいち書いていられません。
>マニュアルとサンプルをきっちり読めば理解できると思います。

マニュアルは持っているのですが、サンプルは持っていません。
どこかでダウンロードできるのでしょうか?


この投稿にコメントする

削除パスワード

No.22998

申し訳ありません
投稿者---franny(2005/09/08 18:23:54)


もともとのアセンブラソースのほうで、関数をコールする前に
PRを退避させてからJMPしていました。
作り直した際に、コールされた後、PRを元に戻すことをしていなかったため、
戻り先がおかしくなり、リセットがかかっていたようです。
お騒がせしました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧