NEC ELECTRONICS NEC ELECTRONICS
NEC electronics NEC electronics NEC
ホーム
アプリケーション
製品情報
先端技術
サポート
WEBショップ
ニュース&イベント
会社案内
header
GO
詳細検索機能/特性検索
サイトマップ お問い合わせ

注意 V850ES/KF1,V850ES/Kx1の生産状況は販売店にお問い合わせください。

割り込み

目次

    
FAQ-ID = v85int-nnnn
0101: 割り込みの動作の基本 [共通]
0001: 割り込みがかからない。(1) [V850共通]
0002: 割り込みがかからない。(2) [V850/S]
0003: 割り込みがかからない。(3) [V850共通]
0004: 割り込み要求非サンプル命令について [V850共通]
0005: 割り込みが一度しか発生しない。 [V850共通]
0006: 割り込みハンドラ・アドレスについて [V850共通]
0007: 割り込み時のエッジ判断方法 [V850共通]
0008: 外部割り込み端子のレベルで割り込み発生できるか? [V850共通]
0009: 割り込み要求フラグ(P02IF1)がセットされません。 [V850E/MA1]
0010: 不正命令コードの例外処理について [V850共通]
0011: UART送信時の最初の割り込み [V850共通]
0012: 多重割り込み [V850共通]
0013: 割り込み処理中の割り込み [V850共通]
0014: 割り込みハンドラ・アドレス [V850共通]
0015: バス・アクセスと割り込み [V850共通]
0016: 割り込み制御レジスタの操作と割り込み [V850共通]
0017: 割り込みからの初期化 [V850共通]
0018: ソフトによる割り込みトリガ [V850共通]
v85int
-0101
割り込みの動作の基本 [共通]
Q1
割り込み処理について、どのような動作で、注意点は何になりますか。
A1
<はじめに>
割り込み処理の基本的な動作は大きく4つの部分に分けて考えることができます。

最初の部分は 割り込みの要因を発生させる部分で、 2つ目が割り込み要求フラグ、 3つ目の部分が割り込みの制御を行う割り込みコントローラ部、 最後が実際に割り込みを処理するCPU部です。 割り込みはこれら4つの部分を通って処理されます。

[割り込みの流れ](4Kbytes)


<割り込みの要因発生部>
割り込みの要因を発生させる部分としては、タイマ部やシリアル部、 外部信号のエッジ検出回路等 (個々のデバイスで要因は異なります) があります。
これらの部分では、タイマの一致やシリアル・データの受信完了など割り込み発生の条件が満足されると、 対応した割り込み要求フラグをセットします。

[割り込み受け付け第1段階](6Kbytes)

割り込みの第1段階は各周辺機能部において指定された条件が満足されることです。
タイマ部ではコンペア・レジスタとの一致等で、シリアル部では通信完了等で、 外部割り込みではエッジ検出により、各々対応した割り込み要求フラグをセットします。
また、プログラムにより割り込み要求フラグをセットすることもできます。

なお、割り込み要因をDMAの起動要因として使用する場合には上記の割り込み要求フラグとは別の要求フラグが使用されます。
DMA転送の場合にも上記の割り込み要求フラグはセットされてしまいますので、このときには不要な割り込み処理を行わないようにマスクをセットしておく必要があります。



<割り込み要求フラグ>
このように、各割り込み要因は対応した割り込み要求フラグをセットするだけで、 割り込みの要因を発生させる部分と割り込みコントローラ部の動作は独立した動きになります。
この間を結ぶのが割り込み要求フラグです。

なお、各割り込み要因に対応した割り込み要求フラグは1つ(1ビット)しかありません。
従って、割り込みが受け付けられる前に同じ割り込み要求が複数回発生しても、 それは1回としか認識できませんので、注意が必要です。

また、割り込み要求フラグはプログラムによりセットしたりクリアしたりすることもできます。
この機能を使うと、UARTでの送信処理を、最初のデータを含めて、 全て割り込みで実行させることができます。
ただし、この場合には必ず、ビット操作命令を用いて、 1命令で割り込み要求フラグをセットする必要があります。

UART送信処理例

複数バイトのデータを送信する場合、 通常はメイン・プログラムが出力データの1バイト目をUARTに書き込むとともに、 2バイト目以降のデータの情報を割り込み処理プログラムに引き渡します。
割り込み処理プログラムはメイン・プログラムから渡された情報を元にして 2バイト目以降のデータをUARTに書き込みます。
このように1バイト目と2バイト目以降では処理が異なってきます。

[UART送信処理例1](4Kbytes)

メイン・プログラムは割り込み処理プログラムに送信データの情報を渡し、 割り込み要求フラグをセットするだけとなります。
実際のUARTへの書き込みは全て割り込み処理プログラムが処理しますので、 全体の処理が見やすくなります。

[UART送信処理例2](3Kbytes)



<割り込みコントローラ部>
割り込み要求フラグ以降が割り込みコントローラ部の動作となります。
割り込みコントローラ部では、割り込み要求フラグは先ず割り込みマスク・レジスタにより有効にする (マスクしない) か無効にする (マスクする) が決められます。

マスクして無効に設定された割り込み要求フラグは以降の動作で無視されます。
ただし、要求フラグ自体がクリアされる訳ではないので、 マスクを解除したらその段階で割り込み要求は有効になってしまいます。
特にDMAの起動要因として使用していた場合には、割り込み要求フラグはセットされていますので、DMA完了後にはクリアする必要があります。

マスクされなかった割り込み要求はスタンバイの制御回路に送られ、 スタンバイの解除に使用されます。

また、割り込み優先回路を介してCPUへの割り込み要求となります。
CPUが割り込みを受け付けると、対応した割り込み要求フラグはクリアされます。
CPUが割り込み禁止状態では、割り込みは単にスタンバイ解除に使用されます(スタンバイ状態でない場合には割り込み要求は保留されるだけです)。
割り込み許可状態では、スタンバイ解除後、割り込み処理を起動して、対応したハンドラアドレスに分岐します。

[割り込み要求フラグの使われ方](3Kbytes)

  割り込み要求フラグは以下の3つの使い方があります。
  • プログラムでポーリング (読み出し) を行い、割り込み要求元の処理が完了したかを確認します。 この使い方の場合には、割り込みマスクをセットしておき、CPUへの割り込みは発生させません。
    また、セットされているのを確認したら、必ずクリア処理を行う必要があります。
  • スタンバイの解除に使用します。
    スタンバイ状態でマスクされていない割り込み要求フラグがセットされると、スタンバイが解除されます。 このとき、CPUが割り込み禁止状態であれば、スタンバイ解除後はハンドラ処理をせず、 スタンバイ命令の後から実行を再開します。
    この場合にも、クリアされませんので、必ずクリア処理を行う必要があります。
  • CPUへの割り込み要求として使用します。 この場合には、割り込み優先回路で他の割り込み要求フラグの状態、 CPUが実行中の割り込みの状態がチェックされ、最も優先度が高ければCPUへの割り込み要求となります。
    この場合には、CPUが割り込みを受け付けて、ハンドラに分岐するとフラグは自動的にクリアされますので、プログラムをクリアする必要はありません。

割り込み優先回路では同時に発生している他の割り込み要求と優先度を比較したり、 現在処理している割り込みとの優先度比較を行います。

このため、ISPRレジスタにCPUが実行している割り込みの状態を記憶しています。
割り込み処理を完了して、RETI命令を実行すると、ISPRレジスタの最も優先度の高い割り込みに対応したビットをクリアして、処理中の割り込みの完了となります。
なお、ISPRレジスタはプログラムにより書き込みを行うことはできません。
V850/Sでは、CPUが割り込み禁止状態のときには優先度比較回路の動作は停止しており、割り込み禁止状態から割り込み許可にしても直ぐにはCPUに対する割り込み信号は発生せず、優先度の比較が完了してからCPUへの割り込み要求信号が発生します。
このため割り込み許可期間が7クロック以下では割り込みは受け付けられません。

注意
割り込み優先度や割り込みマスクは割り込み要求フラグと同じレジスタに配置されています。
そのため、割り込みマスクを操作する場合にビット操作命令を使用しないと、セットされた割り込み要求フラグがマスク操作によりクリアされることがあります。
割り込み優先度を操作する場合に同様です。
この件については以下のFAQも参照してください。

割り込み制御レジスタの操作と割り込み [V850共通]

<CPU部>
CPUが割り込み許可状態であれば、優先度が最も高い割り込み(これは割り込み制御回路で決定)を受付け、PCやPSWの値をEIPCやEIPSWレジスタに保存して、割り込みハンドラに分岐します。
このときに(該当する割り込み要求フラグはクリアされ)、CPUは割り込み禁止状態になります。
なお、EIPCやEIPSWレジスタは1組しかありませんので、多重割り込みを行わせたい場合には割り込みを許可する前にEIPCとEIPSWレジスタの内容をスタック等に保存しておきます。
また、割り込み処理から復帰する前に多重割り込みの受け付けを禁止して、スタック等に保存したEIPCやEIPSWの値を元に戻しておく必要があります。

また、CPUが割り込みを受け付けて、ハンドラに分岐するタイミングは命令の実行状況により異なり、いつも同じタイミングにはなりません。
割り込みを保留する命令や、特に割り込み禁止期間があると大きく変動します。
このため、細かなタイミングが問題になる場合には割り込み処理ではなく、タイマの出力機能やリアルタイム出力機能等のハードウエア機能を使用するようにして下さい。
割り込み処理が完了したら、RETI命令で元の処理に戻ります。
このとき、PSWには前もってEIPSWに保存した割り込み受付け前の値に書き戻されますので、RETI命令の直前にEI命令は実行する必要はありません。
この情報はお役にたちましたか?
back to top  
(2004/07)

v85int
-0001
割り込みがかからない。(1) [V850共通]
Q1
外部割り込みをかけようとしています。
PSWIDビットも 0 となっており、割り込み要求もセットされ、 割り込み処理も許可していますが、割り込みが受け付けられません。
A1
この原因としては
 ・割り込みにマスク (割り込み制御レジスタのビット6) がセットされている
 ・より優先度の高い割り込みの処理中 (ISPRレジスタで御確認ください) である
 ・割り込みを受け付けない命令が連続している

等の理由が考えられます。ISPRレジスタ、割り込み制御レジスタをご確認ください。
この情報はお役にたちましたか?
back to top  

v85int
-0002
割り込みがかからない。(2) [V850/S]
Q1
INTP0を以下のように設定していますが割り込みが発生しません。
  P0   = 0x00;
  PM0  = 0x02;
  EGP0 = 0x00;  /* 割り込み↑エッジ指定 */
  EGN0 = 0x00;  /* 割り込み↓エッジ指定 */
A1
この設定では、エッジ検出が立ち上がり/立ち下がり共に割り込みを発生しないようになっております。
INTP0を使用するには少なくとも EGP0EGNP0のどちらかのビット1 がセットされていないといけません。
この情報はお役にたちましたか?
back to top  

v85int
-0003
割り込みがかからない。(3) [V850共通]
Q1
割り込み処理(マスカブル)を行いたいのですが、割り込みプログラムに分岐しません。
EI命令を実行しても、NP=1、ID=1となります。
A1
NP=1の状態 (NMIを処理中を示す) ではマスカブル割り込みは受け付けません。
従って、EI命令を実行しても割り込み受け付け可能にはなりません。

なお、NP=1 となるのは
 ・NMIが受け付けられている
 ・LDSR命令で PSWを書き換えている
 ・マスカブル割り込みからの復帰のときの EIPSWにセットされていた値 (PSWに戻す値) がおかしい
のいずれかが考えられます。

割り込み(NMI)処理の中から初期化処理に分岐されて再初期化をされて使用してはいないでしょうか?
割り込み処理中にはその状態をフラグ(NPビットや ISPRレジスタ)に記憶しており、 この状態はRETI命令を実行するまで保持されます。
これらのフラグをそのままにしておくと、割り込みを受け付けなくなります。

参考FAQ
 割り込みからの初期化 [V850共通]
 ウォッチドッグ・タイマ割り込みでの初期化処理 [V850/SA, V850/SB]
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0004
割り込み要求非サンプル命令について [V850共通]
Q1
ユーザーズ・マニュアルに   「割り込み要求非サンプル命令とその次の命令の間では割り込みを受け付けません」 と記述がありますが、この期間 (7クロック?) は割り込みが禁止されてしまうのでしょうか?
A1
いいえ、違います。
「非サンプル命令とその次の命令の間」はあくまで CPUが割り込みの受け付け (サンプリング) を行わない期間です。
これは「非サンプル命令と次の命令はかならず連続して実行される」と理解してください。[V850共通]
また、7クロックとは DI状態で EI命令を実行してから、CPUが割り込みを受け付けられるようになるまでの時間です。
これらは独立な項目です。[V850/S共通]
この情報はお役にたちましたか?
back to top  

v85int
-0005
割り込みが一度しか発生しない。 [V850共通]
Q1
TM0をインターバル・タイマとして使用しています。
起動後1度だけ割り込みが入りますが、その後入りません。
これは、割り込み終了時に RETI命令を実行していないためと考えてよいでしょうか?
A1
はい、そうです。
ご質問の内容から判断すると、おっしゃるとおりRETI命令が実行されていないためです。

V850では割り込みに8レベルの優先度が設定できるようになっており、 これを ISPRレジスタで管理しています。
この 8ビットのレジスタは割り込みの優先度にビットが対応しており、 割り込みを受け付けるとその割り込みの優先度に対応したビットがセットされます。

ISPRレジスタのビットがセットされると、 そのビットに対応した優先度より高い優先度の割り込みしか受け付けません。
割り込み処理の最後で RETI命令を実行して割り込み処理から抜けると、 ISPRレジスタのセットされているビットの中でもっとも高い優先度の割り込みに対応したビットをクリアします。

このようにして割り込みの優先度の管理を行っていますので、 割り込み処理を終了するときには必ず RETI命令を実行する必要があります。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0006
割り込みハンドラ・アドレスについて [V850共通]
Q1
割り込み/例外テーブルは ROM上の固定アドレス 00000000H から 00000272H までを占有するとありますが、 これは個々の割り込みが発生すると、 それに応じた処理プログラムをその番地に置く必要があるということでしょうか?
A1
はい、使い方としてはそのようになります。
しかし、ほとんどの場合には16バイトで処理できないので、ここに分岐命令を置き、 実際に割り込みを処理する割り込みハンドラにジャンプさせて処理することになります。
この情報はお役にたちましたか?
Q2
ハンドラ・アドレス部は 16バイトまで使用しても問題ないでしょうか?
A2
各ハンドラ・アドレスで 16バイト分は確保されておりますので、その分は使用されてもかまいません。
16バイト以下で済む場合にはそれだけで終了ですし、 不足する場合には残りの処理を別のところに配置して、そこに分岐させることに問題はございません。
ただし、この場合はレジスタを1つ使用してしまいます。この点を認識して処理してください。
この情報はお役にたちましたか?
Q3
使用しない割り込みに対応するテーブル領域も空けておく必要はありますか?
A3
いいえ。このメモリ領域は割り込みで使用する目的で確保されているだけであり、 対応した割り込みを使わなければ、その部分は通常のメモリ領域として使うことはできます。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0007
割り込み時のエッジ判断方法 [V850共通]
Q1
V850E/MA1の割り込み機能で立ち上がり・立ち下がりの両エッジで割り込みがかかるように設定して使用します。
この場合、割り込み処理のなかで、立ち上がりなのか立ち下がりなのかは、 ポートの状態を確認して判断すればよろしいのでしょうか?
A1
はい、それで結構です。
V850では、端子を兼用機能として使用している場合にも入力ポートとして端子の状態を読み出すことができるようになっております。
ただし、その場合にはPMレジスタの設定が入力ポート状態になっている必要がございます。
(V850/S では外部割り込み機能を使用する際には必ず入力に設定されているはずですので、 追加での設定は必要ございません。)
この情報はお役にたちましたか?
Q2
PORT0の 7bit目を外部割り込み要求入力として使用し、 割り込み処理内で、この端子に入力された信号を P07から読み出すために、 PMC07を入出力モードにした後、PM07を入力モードに設定してから、 P07の内容を読み出そうとしても正常な値が読み出せません。
A2
先に PMC をポート・モードにしたために出力バッファが ON してしまい、 端子で信号の衝突が発生したために正しく読めなかったと思われます。
外部割り込み端子の状態を確認したい場合には、単に PM07 を入力に設定するだけで結構です。
PMC07 は割り込み側の設定のままでポートを読んでください。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0008
外部割り込み端子のレベルで割り込み発生できるか? [V850共通]
Q1
外部割り込みで、レベルを検出して割り込みを発生させる設定はできますか?
A1
V850E/MA1ではロウ・レベルでのレベル検出機能があります。[V850E/MA1]
ほとんどのV850のデバイスはエッジによる外部割り込みしかサポートしておりません。

しかしながら、割り込み入力信号の状態をポートを介して読み込むことで、 ご希望の機能に近いことが実現可能です。

ロウ・レベルで割り込み処理を行いたい場合
 (1) PMレジスタの設定を入力ポートに設定します
 (2) エッジ検出を立ち下がりに設定します
の設定を行っておきます。

エッジ検出の割り込み受け付けたなら
 (3) 割り込みで必要な処理を行い
 (4) 抜ける前に割り込み端子の状態をポートを読んで確認します
 (5) 端子の状態がハイ・レベルなら割り込み処理を抜け出します
 (6) 端子がロウ・レベルを保持していれば、対応した割り込み要求フラグを
    セットして割り込みを抜け出します
の処理を行います。

(6)で割り込み要求フラグがセットされているので、割り込みから復帰後に再度割り込みを受け付けます。
これで、ご希望のレベル割り込みに近い処理が実現できるのではないかと思います。[V850E/MA1以外のV850]
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0009
割り込み要求フラグ(P02IF1)がセットされません。 [V850E/MA1]
Q1
ポートの P22 (INTP021) を外部割り込み設定で、立ち下がりエッジに設定して使用していますが、 割り込み要求フラグ (P02IF1) がセットされません。
A1
INTP021を使用するには TMCC20レジスタの TMCCAE2をセットする必要がございます。
この設定を追加してみてください。
なお、この点については、 最新のユーザーズ・マニュアルの割り込みの章の有効エッジ選択レジスタ (7.3.9割り込みトリガ・モードの選択) のところに注意事項として記載されておりますので、ご参照ください。
この情報はお役にたちましたか?
back to top  

v85int
-0010
不正命令コードの例外処理について [V850共通]
Q1
V850の不正命令コードの例外処理について教えてください。
A1
V850では命令の割り当てられていない命令コードの中で 特定の組み合わせのコードを不正命令と判断するようになっています。
(不正命令と判断するコードは CPUコアによって異なりますので、 使用されるコアのアーキテクチャ編のマニュアルの例外トラップの項目を参照ください。)

これらのコードに該当する命令を実行しようとすると例外トラップが発生し、 60H番地のハンドラアドレスに分岐します。
そこに不正命令に対する処理を準備し、 未使用メモリを不正コードで埋めておくことでシステムの誤動作を検出する一手段として使用することができます。

なお、ほとんどの未定義のコードを網羅していますが、 全ての未定義コードをカバーしているわけではありませんので、注意が必要です。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0011
UART送信時の最初の割り込み [V850共通]
Q1
送信割り込みを使用して UARTで半二重通信を行いたいのですが、 送信を開始したい時の最初の割り込みはいつ入るのですか? [V850ES/KF1]
A1
そのようなタイミングでの割り込みは発生いたしません。
シリアルの割り込みは基本的に通信完了 (この場合は STOPビットの先頭)で発生いたします。[殆どのV850]

送信の開始を割り込みで行いたい場合には、 プログラムにより該当する割り込み要求フラグをセットすることが考えられます。
なお、この方法を使用する場合には、 データを送信中でないことを確認してから割り込み要求フラグをセットしていただく必要がございます。

この件に関しては、シリアル通信の FAQの
  UART送信割り込みのタイミングについて [V850ES/Kx1他]
もご参照ください。
この情報はお役にたちましたか?
back to top  
(2003/08)

v85int
-0012
多重割り込み [V850共通]
Q1
V850E/IA2でタイマ割り込み中に高位の優先度の割り込みを多重で割り込ませようとしています。
タイマ割り込み関数は多重割り込みの宣言 ( _multi_interrupt ) はしてありますが、うまくいきません。
高位の優先度の割り込みはタイマ割り込みが終了してから処理されます。
A1
多重割り込み宣言はあくまで多重割り込みを行う為の準備を行う (通常の割り込み処理に加えて、EIPCEIPSWに保存されている戻りアドレス等の情報をセーブする) だけです。

どのタイミングから多重で割り込みを受け付けてよいかは個々のシステムで異なりますので、 この部分は多重割り込みを許可したタイミングで __EI(); により割り込みを許可してください。
これを忘れると、お問い合わせのような動作になります。

また、多重割り込み宣言した割り込み関数から抜けるときには必ず割り込み禁止状態でないといけませんので、 __EI(); を実行したら、必ず __DI(); を実行してから割り込みを終了してください。
この情報はお役にたちましたか?
Q2
割り込み A, B の優先度は同一で、その処理中は割り込みを許可しない設定とします。
この場合、割り込みA の処理中に割り込みB が発生すると、割り込みB は保留されますか?
A2
はい、割り込みB は保留されます。
この情報はお役にたちましたか?
Q3
割り込みA の処理中に割り込みB が発生し、さらに割り込みA が発生したとします。
この場合、割り込みB, Aは保留され、処理中の割り込みA の処理完了後に割り込みB が処理され、 さらに、割り込みB 処理が完了すると、割り込みA が処理されるのでしょうか?
A3
いいえ、割り込みA と割り込みB のディフォールト優先度が高い方が先に受付られます。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0013
割り込み処理中の割り込み [V850共通]
Q1
割り込みA の処理中に同一の割り込みA が2回発生した場合、この2つの割り込みは保留され、 割り込みA の処理が合計3回おこなわれると考えてよいか?
A1
いいえ、実行は2回となります。
割り込み要求は1ビットのフラグですので、割り込み要求があるかないかしか記憶できません。
このフラグは割り込みを受け付けるとクリアされますので、割り込み処理中には、 それ以上の割り込みがあるかないかしかわかりません。
従って、割り込み処理中に2回の同一割り込みが発生しても2回目以降は無視されます。
この情報はお役にたちましたか?
back to top  
(2003/08)

v85int
-0014
割り込みハンドラ・アドレス [V850共通]
Q1
V850E/MA1をシングルチップ・モード0 で使用すると割り込みハンドラ・アドレスは 0〜0x360 ですが、 シングルチップ・モード1ではどうなるのか?
A1
ハンドラ・アドレスは変わりません。
従って、外部に接続したROMの該当するアドレスに割り込みハンドラを書き込んでおいてください。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0015
バス・アクセスと割り込み [V850共通]
Q1
V850E/MA1で外部に I/Oを拡張している。
外部に対してワード・アクセスした場合に、2回の16ビット・アクセスになる。
このとき、1回目のアクセスと2回目のアクセスの間に割り込みが入ることがあるか?
A1
いいえ、基本的に1つの命令の実行の間に割り込みが入ることはありません。
2回の 16ビット・アクセスの間はバスがロックされますので、他のサイクルが入ることもありません。
この情報はお役にたちましたか?
back to top  
(2003/08)

v85int
-0016
割り込み制御レジスタの操作と割り込み [V850共通]
Q1
INTP1割り込みを使用している。
以下の処理を行って、PIC1レジスタでマスクと優先度をいじっているが、割り込みが抜けることがある。

   if(条件){
         pic1 = 0x02;  /* 通常状態 */
   }
   else {
         pic1 = 0x47;
   }
A1
これは、割り込み要求フラグとマスク・フラグ及び優先度が同じ PIC1レジスタに割り当てられており、 PIC1レジスタに書き込みを行ったときに同時に PIF1(割り込み要求フラグ) ビットにも書き込み (0クリア) が行われるためです。
このために、書き込み時に保留されていた (セットされていた) 割り込み要求がクリアされ、割り込みが抜けます。

これを避けるには、PIC1レジスタの操作は割り込みが発生しないタイミング (たとえば、INTP1の割り込みが発生した直後等) で行ってください。

または、ビット操作命令により1ビットずつ変更してください。
この情報はお役にたちましたか?
Q2
割り込み制御レジスタのマスク・ビットで割り込み禁止/許可をした場合、 禁止〜許可中に割り込み要求があった場合、割り込みを保留して、許可後に実行してくれますか?
A2
マスク解除を8ビット・アクセスで行う (C言語ベースのプログラムで割り込み制御レジスタに対して直接ビット操作が行われていず、 複数の命令に展開された) 場合、それまでの割り込み要求は消えてしまいます。

マスクの解除をビット操作で行う場合、 その時点までに要求があった割り込みはマスク解除により割り込みが受け付けられるようになります。
この情報はお役にたちましたか?
back to top  
(2004/06)

v85int
-0017
割り込みからの初期化 [V850共通]
Q1
割り込み内からプログラムの先頭 (初期化) にジャンプする方法として、 EIPCレジスタ、EIPSWにダミーをセットして RETIでジャンプさせている。
たまに先回の割り込みレベルを保持して他の割り込みが入れない状態になることがある。
A1
割り込みが多重に入ってはいないでしょうか。
この場合には1回の RETI命令の実行で最優先の割り込みに対応した ISPRレジスタのビットがクリアされるだけです。
ISPRレジスタが 00 になるまで RETIを繰り返す必要があります。

参考FAQ
 ウォッチドッグ・タイマ割り込みでの初期化処理 [V850/SA, V850/SB]
この情報はお役にたちましたか?
back to top  
(2003/08)

v85int
-0018
ソフトによる割り込みトリガ [V850共通]
Q1
INTPn端子はポートとして使用していて、ソフトで INTPn割り込みを起動 (割り込み要求フラグをセット) している。
外部入力によるトリガはかけない。
このような使い方で INTPn割り込みが誤動作することはないか?
A1
INTPn端子のエッジ検出を行わないようになっていれば、 INTPn端子の変化が原因で割り込みが発生することはございません。
従って、この場合には割り込み要求フラグを操作してソフトで割り込みをかけても問題ございません。
この情報はお役にたちましたか?
back to top  
(2003/08)









































 ご利用にあたって  個人情報保護について  RSS       © 1995-2008  NEC Electronics Corporation