c言語での10msecの割込プログラムを作成しようとしています。
ですが、なかなか割込というものが理解できていません。
シングルタスクでの割込プログラムはどうすればよいのでしょうか?
for(;;) {
func(); //10msecごとに実行したい関数
usleep(100000);
}
では割込み処理にはならないんですよね?
きちんと理解できていないため、質問もあいまいになってしまっていますが、よろしくお願いいたします。
また、シングルタスク等が説明されているサイトがありましたら、教えていただきたく思います。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
通常、ハードウェアタイマーによる一定間隔の割り込みは、以下のようにします。
1.周辺チップのハードウェアタイマーICに対し、リセット信号を送るか、割り込みを発生させない設定を行う
2.ハードウェアタイマーICが使用している割り込みの、割り込みエントリアドレスを設定する(割り込みベクターにアドレスを書き込む)
3.割り込みコントローラICなど、これ以外に設定が必要な周辺ICに対しても、必要な設定を行う
4.CPUで「割り込み許可命令」を実行する
5.ハードウェアタイマーICに対し、割り込みのインターバル間隔を設定し、割り込みを発生させる設定をする
6.割り込みが起きると上記2で設定したアドレスに定期的に飛んで来る
通常、上記の1~5の処理は「BIOSがサポート」していて「BIOSコール」を行う事で利用出来ます。
なお、通常、周辺チップのハードウェアタイマーICは、OSやOSに組み込んだデバイスドライバが占有していて、OSやデバイスドライバがカーネル内部でBIOSコールなどを行い、上記の処理を行っています。
なので、通常、ユーザーがハードウェアタイマーICに直接アクセスしたり、BIOSコールする事は出来ません。
その代わり、OSやC言語ごとに「ライブラリ」が用意されていて、それらが「インターバルタイマーの真似事」をしてくれます。
>シングルタスク(MS-DOS)での割り込み処理のことを知りたいです。
MS-DOS(WindowsのDOS窓を除く。Windows上のDOS窓やコマンドプロンプトは「DOSエミュレータ」であり、MS-DOSではない)では、ここまでの細かい制御は行われておらず、それ用のデバイスドライバも無いので「自分でIOポートにアクセスし、すべて自分でどうにかする」か「BIOSを使う」しかありません。
つまり「冒頭の1~5の処理を、全部、自分でどうにかするか、アセンブラでBIOSコールを行う必要がある」のです。
なお、MS-DOSには、IBM/PC(DOS/V)互換機用、NEC-PC9801用、PC100用など、機種やハードウェアごとに色々なバージョンがあり、機種ごとにハードウェアやBIOSが異なるので、実際のプログラムも異なる事になります。
詳しくは「MS-DOS BIOSコール タイマー」の語句で検索して下さい。
No.1
- 回答日時:
もう少し質問を具体化してください。
シングルタスクOS(たとえばMS-DOS)上で割込み処理を作成するのか、マルチタスクOS(WindowsやLinuxなど)上のプロセス内で割込み処理をエミュレーションするのか。
前者はCPU割込みを利用することになります。実際に動作させる環境や開発環境が分からないと適切な助言は難しいかと思います。
後者はsignalを使えば作れるかと思いますが、こちらも具体的な環境を示された方が適切な助言がしやすいと思います。
ご指摘ありがとうございます。
今回は、シングルタスク(MS-DOS)での割り込み処理のことを知りたいです。調べてみるとマルチタスクのことは探せるのですが、シングルタスクはなかなか自分が理解できるサイトが見つかりませんので・・・
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- 大学受験 国立受験 11月からの大逆転劇を起こすには 7 2022/11/14 19:24
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- 運輸業・郵便業 タクシー運転手はどうしてあんなにゴミなのか? 4 2022/11/13 20:43
- 数学 数学の問題 2 2022/10/28 23:57
- システム CPUの問題について 2 2022/07/09 12:04
- 数学 そろばんの割算で 3543436514÷58174=60911が正解の答えなんですが、 僕が、実際に 4 2022/03/31 12:52
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
【お題】 ・ありそうだけど、絶対に無いことわざを教えてください。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
【穴埋めお題】恐竜の新説
【大喜利】 考古学者が発表した衝撃の新説「恐竜は、意外にもそのほとんどが〇〇〇」 (〇〇〇に入る部分だけを回答して下さい)
-
プログラムのループの周期を設定する方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NET スレッドからのイベント...
-
スーパーのレジで並んでいたら...
-
アセンブラのタイマー割り込み
-
【組込み】割り込み中のstatic...
-
PICマイコンでエンコーダパルス...
-
CPUの処理量を減らすコーデ...
-
(定周期タイマ割込み後ポーリン...
-
マイコン C言語 割り込み処理...
-
pic 複数の割り込み関数 切り分...
-
割り込みの入り方。考え方。
-
SH2のタイマ出力
-
VB6でSendKeyを利用したTab移動...
-
VB.net 割り込みの禁止
-
Timerコントロールによる動作の...
-
電車のドアの前での並び方
-
PIC 入力端子の監視?
-
CPU負荷率の安全な上限と計...
-
raspberry pi の 割り込み原因...
-
PICのPWMの正しい使い方につい...
-
ウォッチドッグタイマ(WDT)の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
このレジの並び方は間違ってま...
-
電車で待機列の割り込みについ...
-
CPU負荷率の安全な上限と計...
-
VB6でSendKeyを利用したTab移動...
-
【組込み】割り込み中のstatic...
-
定周期での割り込み
-
CPUの処理量を減らすコーデ...
-
Amazonfireタブレットにわから...
-
pic 複数の割り込み関数 切り分...
-
irqbalance って
-
実行した後、どうしてもフリー...
-
PICマイコン 割り込み実行時間...
-
Z80の割り込みについて
-
一定時間操作がなかったら、と...
-
デュアルCPUのパソコンでCPUを1...
-
PICマイコンでエンコーダパルス...
-
割り込みのカウントの仕方
-
マイコン C言語 割り込み処理...
-
ウォッチドッグタイマ(WDT)の...
おすすめ情報