C言語を使用するAT89S52の他の関数(MAINなど)によって呼び出されるISRの内部から、ISRの外部で関数を呼び出すことはできますか?Cコードを使用したAT89S52の割り込み
答えて
任意のアーキテクチャでISRから関数を呼び出すことは合法ですが、必ずしもそうとは限りません。
問題の関数が割り込みと複数のスレッドコンテキスト内での実行に適しているかどうかを検討する必要があります。例えば、再入可能である必要があり、アトミックに、または一貫性を保証する方法で共有リソースにアクセスしなければならず、もちろんブロックしたり、不定期に待ってはいけません。
また、割り込み処理時間の点で関数呼び出しと関数呼び出しオーバーヘッド自体のスタック要件を考慮する必要があります。インライニング機能が考慮されることがあります。
8051はリエントラント/再帰関数があまり好きではないことに注意してください。アーキテクチャの制限的なスタックとポインタ算術のために、Cコンパイラはローカル変数の真のスタックストレージの代わりに静的にオーバーレイを割り当てます。したがって、特定のコンパイラとその設定に応じて、呼び出し元のツリーには、再入可能な呼び出し規約を使用するように特別なマークを付ける必要があります。 – doynax
@doynax:良い点 - スタック要件を考慮する必要性について言及し、可能であっても必ずしもそうとは限りません。このような制約の厳しい環境で特に当てはまりますが、アーキテクチャー固有の考慮事項のいくつかについて詳しく説明しました。ありがとう。 – Clifford
- 1. 埋め込み:Uブート端末のCtrl-C割り込みのCコード
- 2. C++の割り込みサービスルーチン
- 3. PIC用mikroCを使用したPICマイクロコントローラのタイマベース割り込み
- 4. Matlab - ハンドラを使用したprocessusの割り込み
- 5. C++にコードやコマンドラインオプションを使用したフレームワークを組み込む
- 6. vb.net OpeningTextFileWriterの後のコード割り込み
- 7. 割り込み方法を使用したスレッド終了
- 8. Linux Userspace sysfsを使用したGPIO割り込み
- 9. 割り込み(レジスタのみ)を使用しないVGAプログラミング
- 10. Cコードを使用したDNA配列ファイルの読み込みが難しい
- 11. Cでハードウェアタイマ割り込みをシミュレート
- 12. AVXのAVX2/AVX512コンパイラ組み込み関数を使用したC++コード
- 13. Cの割り込み信号
- 14. マルチスレッドプログラムのC++タイマ割り込み
- 15. Cで動的割り当てを使用してファイルを読み込む
- 16. 割り込みは、割り込みが、私はAtmega328pマイクロコントローラとArduinoの宇野を使用してい
- 17. アセンブラ+ CまたはI割り込みが動作しない
- 18. アセンブリ内の割り込みコードを修正します。
- 19. Arduino/ESP8266割り込みを使用してサンプルを取る
- 20. TRAP、ソフトウェア割り込みとハードウェア割り込みの違いは?
- 21. 割り込みフラグと割り込み保留中のビットstm32
- 22. DMA、割り込みを使用したプロセッサ/マイクロコントローラのプログラミングの書籍
- 23. PSoCを使用して割り込み4
- 24. PEファイルの読み込みc#を使用したEntryPointAdress
- 25. 割り込みsuper.onCreate()
- 26. interruptPiを使用して割り込みとlcdを同時に使用する
- 27. このファイルの読み込みコードにエラーが見つかりました(C++)
- 28. は、私はすぐにデバッグのための割り込みを置くために私のC++コードにスニペットを使用したい
- 29. 待機、同期、割り込み、通知を使用した相互排除
- 30. 割り込みコンテキストでmutexを使用することのメリット
疑似コードで説明してください。 – staringlizard