• ベストアンサー

割り込み中に例外異常

D-Matsuの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

たいていのマイコンでは最高優先度割り込みよりも例外の方が優先度が高いはずですが。

brandish3
質問者

お礼

記入箇所を間違えました。 大変申し訳ございません。 しかし、ご回答有難うございました。

brandish3
質問者

補足

ご回答有難うございます。m(_ _)m 大変、申し訳ございませんでした。 説明不足でした。 例えばSH2で採用頻度が多かった(?)マイコンであるSH7145・7144では…、 デフォルトの処理の優先度は 1.リセット関係 2.アドレスエラー関係(CPU アドレスエラー)   4バイトバウンダリで奇数アドレス等にアクセスした 3.割り込み処理 4.命令例外処理 の順番になっています。 こういうマイコンなのです。  http://www.info.kochi-tech.ac.jp/k1sakai/USB-DDMP/SH7144.pdf 今回はこの4の命令例外処理になります。

関連するQ&A

  • AVRマイコンの割り込みについて

    AVRマイコンの割り込みについて 初心者です。 ・AVRマイコンの割り込みの優先順位ですが、割込みベクターのアドレスが小さい順に優先度が高いでよろしいでしょうか? ・優先低の割り込みルーチンを処理している時に、優先高の割り込みが入った場合、  (1)優先低の割り込みルーチン処理中断→優先高の割り込みルーチンの処理、完了→優先低の割り込みルーチン処理再開(中断ヶ所から)  (2)優先低の割り込みルーチン処理、完了→優先高の割り込みルーチンの処理、完了  (3)その他 (1)、(2)、(3)のどの処理が行われますか? ・優先高の割り込みルーチンを処理している時に、優先高の割り込みを禁止し、ルーチン内で優先低の割り込みが入った場合、優先高の割り込みルーチンから優先低の割り込みルーチンにとばすことは可能でしょうか? 以上、よろしくお願い致します。

  • 組み込みOSでスタックオーバーフローしたら?

    マイコンにて組み込みOSでスタックオーバーフローするとその振る舞いはどうなるのでしょうか? SH2を使っています。 組み込みOSはNorti4を使っています。 タスク作成したときにスタック容量を指定しています。 タスクはひとつです。 タスクのスタックより前の領域には定義メモリ(グローバルメモリ)の領域になっています。 タスクのスタックより後の領域は大きな領域(数Kbyte)ほどあいています。 この場合にタスクのある関数の動作中にスタックオーバーフローが起きた場合、どうなるのでしょうか? 思いついた選択肢は以下のとおりです。 1.定義メモリ(グローバルメモリ)の領域をオーバーフロー分書き換えて、その関数が終了したら呼び出し元の関数に戻る。 その後、書き換えられた定義メモリ(グローバルメモリ)による影響で処理によってはマイコンが意図しない動作になる。 2.スタックオーバーフローした時点でアドレス例外などの例外処理に飛んでしまう。 3.スタックオーバーフローした時点で、暴走し戻れなくなる。 4.その以外 どんなことが考えられますでしょうか?

  • (定周期タイマ割込み後ポーリング処理で事象検知)と(事象検知→割込みで処理)の違いと使い分け

    テクニカルエンジニア(エンべデッドシステム)の勉強をしています。 定周期タイマ割込みによるポーリング処理での事象検知と、事象検知しての割り込み処理の違いと使い分けについて質問です。 ・定周期タイマ割込みによるポーリング処理で事象検知(後述(1)) ・事象検知→割込み処理(後述(2)) ★質問1 (1)ではシステムに常に一定の負荷がかかってしまいますが、(2)の場合は事象の起きる頻度により負荷が変わってきます。設計思想としては(1)の負荷がシステム全体にとって微々たるものであれば採用し、負荷が大きければ(2)を採用するようなイメージなのですが、使い分け方としてはこれで正しいのでしょうか。どういうケースで(1)、(2)を使い分けているのか知りたいです。 ★質問2 同じマイコンを使った場合、一般的に割込み処理にかかる時間は(1)と(2)でどれほど違いがあるのでしょうか。 ★質問3 試験問題の解説の中で「((2)の割込み処理全体のかかる時間)<((1)のタイマ周期)なら(2)のシステムのほうが良い」と記述されていますが、よくわかりません。(2)のシステムのほうが(1)より良くなる条件はなになのでしょうか。 組み込み設計経験者ではないため、変な質問内容になっていたらすみません。。

  • AutoCADLT2000iで「例外」エラーが出ました

    AutoCAD LT2000iでブロックの書き出し操作をしていたのですが、初めてのことでわからず何度やってもうまくいきませんでした。 その後、そのファイルを開こうとすると「C:\ProgramFiles\AutoCAD LT2000i\acdcframe.arx ARXコマンド中の例外」という見出しが出てその中に「例外c0000005(Access Violation Reading 0x03f1 が処理されていません。(アドレス 73D1608Ah)」というメッセージが書かれていて図面は表示されるのですが、このメッセージを消したり図面にアクセスしようとすると終了してしまいます。至急、助けてください。

  • H8/OSを用いた割り込みで困っています。

    SH2-7045Fを用いて、MTUのTGRAとTNCTのコンペアマッチで割り込みを発生させたいのですが、かなり困っています。まず、MTUのTGRAの割り込みが発生したときの、割り込み関数の割り込み定義を、H8/OSにかいてあった、int_registでやっているのですが、これでいいのですか?あと、開発環境は、秋月でSH2を買ったときについてくるgccを使っていいるのですが、この中には割り込みマスクの設定の関数がないというのを知り、適当にインターネットから拾ったアセンブリ言語で書かれたようなもの(setIntmask())を書いているのですが、プログラムを動かしたとき割り込みを1度しか受け付けないでプログラムがおわらないで、なにかしています。教えてくださいお願いします。

  • この症状って、CPU、マザー、何が原因でしょうか?

    そろそろ3年目を迎えようとしている自作PCです。 マザーはインテルの915GAV CPUはインテルのペンティアム4 3.40GHz です。 最近、よくハングアップします。特に、暖房をつけているときにハングアップします。ハングアップしてしばらく起動しません。多分、熱暴走だと思います。 CPUのヒートシンクは定期的に掃除機でほこりを取っています。内部も掃除機でほこりを吸い取るようにしています。ほこり取りは2週間くらい前に実行しました。最近、ハングアップ、しばらく起動しないのみならず、処理速度が速度が確実に低下し始めました(ソフトの起動その他、以前に比べて明らかに時間がかかります)。どのパーツが熱にやられているのか、見当つく方はアドバイスをお願いします。 それと、マザーも交換となった場合、メモリPC-3200という、古い方のメモリを使えるマザーって今でも販売しているのでしょうか? メモリーは2Gがるので、できればこれは流用したいのです。

  • 割り込みベクターをC言語で書きたい

     皆さん、有難う御座います。時々質問させて頂いています。  今回は、ベクターアドレスをC言語で書く方法について質問します。  ルネサスのH8マイコンを使っています。モニターを使うとRAM上に割り込みの仮想ベクターを作れます。  仮想ベクターには、割り込みのジャンプ先アドレスが書かれます。  現在アセンブラで書いているのですが、C言語で書く方法は無いでしょうか。  二つの方法で書きたいと思っています。  アセンブラで次の二つの方法に相当するC言語命令を知りたい。 (1)ORGとEQU命令を使った方法 (2)ムーブ(Z80ならロード)命令で関数のアドレスをメモリに書く方法  ルネサスにはHEWと言うソフトが有りますが、HEW特有の命令によらず、一般的なコンパイラが持っている機能で実現したい。  以上宜しくお願いします。

  • 割り込みベクタの機能と実現方法

    (d)割込ベクタの機能と実現方式を説明せよ。 (1)機能 割り込みには、ハードウェア割り込み、ソフトウェア割り込みがあるが、割り込みベクタによって、どのような割り込みが発生したかが分かるようになっている。割り込みの発生要因によって、実行される処理(割り込みハンドラーと呼ばれたりサービスルーチンと言われる)はシステムによって決められている。 (2)実現方法 ベクタテーブルを作成する必要がある。以下それについて具体的に説明する。 多数の割り込み要因がある場合,それぞれに対応する割り込みサービス・ルーチンを作っておく必要がある.そして,割り込み要求信号が発生したときには,要求を出している要因に応じて,正しい割り込みサービス・ルーチンを呼び出さなければならない.そのために用いられるのが割り込みベクタ・テーブルである.それぞれの割り込み要因は,割り込みが受け付けられると,割り込み元を示す番号(割り込みベクタ)を送信する.メモリの中には,この番号と割り込みサービス・ルーチンの先頭アドレス(あるいはそのアドレスへの分岐命令)を対応付けた表(テーブル)を用意しておく.この対応表を,割り込みベクタ・テーブルと呼ぶ.  割り込みは元のソフトウェアの実行を強制的に中断してしまう.このため,特に中断されたくない処理を実行している場合には,その間だけ割り込みを禁止にする機能がある.  また,割り込み要因の中には,割り込み要求を常時有効にしたい要因もあるが,特定の局面でだけ有効にしたい要因もある.そのため,各割り込み要因ごとに,割り込みの受付を無効にする割り込みマスクの機能がある.割り込みマスクで無効にできる割り込みはマスカブル割り込み,割り込みマスクで無効にできない割り込みをノン・マスカブル割り込み(NMI)と呼ぶ.  特に緊急性が高い割り込みにはNMIを用いる. いかがでしょうか? 実現方法のところが答えられていますでしょうか?

  • PICマイコンにつきまして教えてください。

    PICマイコンにつきましておしえてください。 初心者です、以下3点につきまして教えてください。 (1) PICマイコンを用いて、実験機を作成しているのですが、プログラム上の ある関数の処理時間がどのくらいが予測したいと思っています。 アセンブラの場合、クロック周期の4倍が1サイクルで、各処理毎に○サイクル というのが、データシート上に記載されていることから、ざっくり処理時間を 予測することができるのですが、C言語の場合、予測することはできないでしょうか? 加算、減算、ポート出力制御、if文、AD、、、等の1命令毎の処理時間がどのくらいか、 予測することができますでしょうか? (2) 実験機にはLCDをmain関数で表示させており、またTimer割り込み(5μsec)毎に簡単 な処理をおこなわせているのですが、動作させてみると、 LCDが表示せず(文字なしで高速で切り替えを繰り返しているような感じです。) これは、割り込み間隔が早すぎて、main関数に入る前に随時5μsec割り込みが入って main関数の表示ができていないということなのでしょうか? 割り込み間隔を50μsecにしたところ、うまく表示されましたので。。 (そういったことから(1)の質問をしました。) (3) MPLAB IDC2はデバッグシミュレータがあり、予測が難しい場合、ストップウォッチで、 確認しようと思っています。ブレークポイントを処理最初と最後に設定して、RUNで 時間を確認することができますでしょうか? 処理最初のブレークポイントまでは、どのように実行位置をもっていくのでしょうか? 長くなりましたが、よろしくお願いいたします。

  • H8-3687マイコンに付いて

    H8マイコンに付いて教えて下さい。 1.クロック信号に付いて クロック信号は必ず入力しなければなりませんか? ピン番号は11と10で名称はOSC1,OSC2と表現されております。使用しない場合の端子の処理方法はどのようにすれば宜しいでしょうか? 2.TEST信号に付いて 8番ピンですが、ハードウエアーマニュアルにVss電位に接続して下さいと書かれていますが、これはいったいに何をするための信号なのでしょうか?必ずVssへ接続しなければならないということでしょうか? 3.NMI信号 ノンマスカブル割込み要求信号入力端子とかかれております。 また必ず抵抗でプルアップしてくださいとありますが、使わない場合には、プルアップしろという意味なのでしょうか? 申し訳ございません、自分自身でもマニュアルを読んでみますが、ご存知の方いらしゃいましたら、ご教示戴けると助かります。