問題タブ [isr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2145 参照

arduino - Arduinoプログラムでのmicros()値のドリフトが気になる

サーボ ライブラリと外部割り込みルーチンを使用するプログラムがあります。私の理解では、サーボ ライブラリは Timer1 割り込みを使用してパルスをサーボに送信し、位置を維持します。割り込み中に増加しないため、micros() カウントにどのような影響があるのか​​ 疑問に思っています。

私のコードの外部割り込みルーチンはタコメーター用です。これは、micros() を使用してパルス間​​の時間を決定します。Servo ライブラリが millis() および micros() カウンターのドリフトを引き起こし、速度が不正確になることが懸念されます。タコメーターは、10,000 RPM の速度を感知する必要がある場合があるため、約 167 Hz になります。最終的にはサーボとタコメーターを使ったPID制御を実装します。

0 投票する
0 に答える
41 参照

variables - ISR によるグローバル変数の破損を停止するには?

上記のプログラムを実行すると、カウント値が 0 になることがあります 655336、適切な値ではないため、Bit1 はトグルせず、LOW または HIGH のままです

その理由は何ですか?特定の回数だけBITをトグルしたい

0 投票する
0 に答える
185 参照

c - atmega16 で 8-1 マルチプレクサを使用する

入力ピンを最大化するために8-1 multiplexerwithを使用しようとしているので、プログラムを作成して のすべてのアドレスをスキャンし、割り込みが発生した場合はプログラムがこの時点で送信されたアドレスをチェックしてから LCD に文字列を出力するようにしました。 (そしてスイッチケースで管理) ...mega16multiplexerinterrupt

問題は:: 割り込みが発生すると、スイッチケースに入り、開始したケースの下のすべてのケースを実行します

: 最初のボタン (最初のアドレス) を押すと、すべてのケースが実行されますが、2 番目のボタンを押すと、そのケースと 3 番目のケースが実行されます。

MUX.h { #define Addr0 0x00 //00000000 #define Addr1 0x01 //00000001 #define Addr2 0x02 //00000010 #define Addr3 0x03 //00000011 #define Addr4 0x04 //00000100 #define Addr5 0x05 //00000101 #define Addr6 0x06 //00000110 #define Addr7 0x07 //00000111 }

0 投票する
1 に答える
604 参照

mips - MIPS: ISR が rdpgpr $sp, $sp; で囲まれているのはなぜですか? wrpgpr $sp, $sp 命令?

私は PIC32 MCU (MIPS M4K コア) を使用しています。MIPS で割り込みがどのように機能するかを理解しようとしています。「See MIPS Run」本、公式の MIPS リファレンス、および Google で武装しています。誰も私が次のことを理解するのを手伝ってくれません:

次のように割り込みを宣言しました。

逆アセンブルを見ると、それRDPGPR SP, SPが ISR プロローグ (実際には最初の命令) で呼び出されていることがわかります。バランシングWRPGPR SR, SR命令が ISR エピローグで呼び出されます (以前に保存されたStatusレジスタを CP0 に書き込み、 を呼び出す前ERET)。これらの命令の目的は、以前のシャドー レジスタ セットから読み取って保存することであることがわかります。そのため、シャドー レジスタ セットからRDPGPR SP, SP読み取って書き戻すのですが、その理由がわかりません。この ISR はシャドウ レジスタ セットを使用しないことを意図しており、実際に逆アセンブルすると、コンテキストがスタックに保存されていることがわかります。しかし、何らかの理由で、シャドウから読み取られ、シャドウに書き込まれます。どうしてこれなの?$spWRPGPR SR, SR$sp$sp

また、関連する質問: MIPS アセンブリ言語に関する本当に包括的なリソース (書籍など) はありますか? 「See MIPS Run」はとても良さそうです。MIPS アーキテクチャを掘り下げるための出発点としては最適ですが、いくつかのトピックは十分にカバーされていません。

  • EIC (外部割り込みコントローラー) モードに関する情報はほとんどありません: EIC モードではの代わりにあるCauseことを示すレジスタ付きの図がありますが、それがどのように機能するかについては何もありません (たとえば、. 何を意味するのか説明すらありません (「Requested Interrupt Priority Level」、まあ、Google が助けてくれました). EIC が実装に依存していることは理解していますが、今述べたことは一般的なものです。RIPLIP7-2Cause->RIPLStatus->IPLRIPL
  • アセンブリ言語は十分にカバーされていません: たとえば、マクロ ( .macro.endmディレクティブ) については何も、既存のコードで見たいくつかのアセンブラ ディレクティブについては何も見つかりませんでした (たとえば、.set mips32r2など)。
  • ISR でのrdpgpr/の使用については何も見つかりません。これらの命令 (および一般的なシャドウ レジスタ セット) について非常に簡単に説明しています。wrpgpr

公式の MIPS リファレンスも、これらのトピックではあまり役に立ちません。考えられるすべてのアセンブリ ディレクティブなどを網羅した本当に優れた本はありますか?

0 投票する
0 に答える
103 参照

assembly - INT命令の扱い

カーネル モード ドライバーでユーザー モードから asm int XX 命令 (ソフトウェア割り込み) を処理する方法

できること:

1) x64 Windows の IDT に割り込み記述子を追加します (PatchGuard はどうですか)?

2) IoConnectInterruptEx ルーチンを介して ISR を追加しますか?