Cで書くと自動的にそうなるね
で、抜ける時に許可にしてる
そんなことはCのコードからは全く読み取れないので、
一度はアセンブラの結果の方も読んでおかないと、
PICの機能か? とか誤解する
回答ありがとうございます
こんな感じの理解であっていますでしょうか?
PIC16 & XC8使用の場合
1. 割り込み処理の頭で自動的に割り込み禁止にされる
2. 割り込み処理の終わりで自動的に割り込み許可にされる
3. 割り込み禁止中であっても何らかの割り込み要因が発生したら要因フラグだけ勃つ
4. なので先行の割り込み処理終了後、すぐに後続の割り込みが発生する
5. 要因フラグは割り込み処理内で自分でクリアする必要がある
6. つまり通常は多重割り込みはそもそも発生しえない
ところで2の処理が分からないのですが、例えば「一度でもINT割り込みが発生したら、あとは
二度とINT割り込みを発生させない」ために割り込み処理内でGIE=0を設定しても、XC8が気を
効かせて割り込み処理の終わりで勝手に割り込み許可にしてしまうんでしょうか?
When an interrupt is responded to, the global interrupt
enable bit is cleared to disable further interrupts
技術的な話が出ないもんな。
初心者スレのほうがまだまし
そうなると思う
割り込み処理の外で割り込み禁止にしてしまえば、もう割り込みは起きない
だから、一度きりの割り込みを実現したければ、割り込みの発生をRAM上に記憶して、
割り込みの外から監視するしか
asmでもRETFIEするまでGIEは0ですし御寿司
>ところで2の処理が分からないのですが、例えば「一度でもINT割り込みが発生したら、あとは
>二度とINT割り込みを発生させない」ために
割り込み処理内でINT割り込みの許可フラグを禁止にすればよかろう
>>918 みたいなことが書かれてる機種もあるんだろう
俺が使うのは、そんな気の利いたことはしてくれない
>>923 個別の割り込み要因フラグと勘違いしてないか?
GIEは割り込み時に自動でクリアされるしそうでなきゃ無限に割り込み繰り返すぞ
普通に考えれば
割り込み禁止状態でなければ
割り込みルーチンに飛んだ次の瞬間に
自信の割り込みがかかって
また割り込みルーチンに飛ぶことになる
iret の部分を ret に書き換えればいいんじゃね?
>>925 まだ若い子なのかな?
昔のマイコンやCPUは割り込み処理の先頭で割り込みを禁止するのが普通だったんだけど
DI/EIとか言っても通じないか
>>920 やっぱりそうなりますか
ちょっとPICで割り込み処理を行うのは技術的に難しい感じするので、いっそ
ボーリングで処理出来ないか考えてみます
926氏の、通常のリターン命令を使うトリッキーな手でもいけそうだけど、
要因ごとに割り込み許可フラグがあるからそっちを落とすのが筋かと思う。
>928
待って >922が書いてるように個別の割込許可フラフを
割込処理内でクリアしてしまえばその要因による2回目の
割込は発生しないよ。
INT外部割り込みならINTEを割込処理内でクリアする。
>1. 割り込み処理の頭で自動的に割り込み禁止にされる
>2. 割り込み処理の終わりで自動的に割り込み許可にされる
これは全体割込許可フラグ(GIE)をクリア&セットしているだけだから
>>930 1) 割り込み処理先頭でGlobal変数をチェックし、0以外なら何もしない
2) Global変数が0なら1をセットして本処理
俺、大抵これだわw
>>928 ID:bmnvnn1A は色々勘違いしてるから、無視した方がいい
>>928 MCUを使いこなすためには割り込み処理が必須だから、
できれば先延ばしにしない方が良いと思う。
とりあえず、割り込み開始時のハードウェアの処理内容や
所用クロック数などはマニュアルを読んでみて。
>>927 DI/EIあたりのCPUは、DI状態で呼ばれるから、そんなことしなかったでしょ。
MSXのタイマ割り込みなんか、冒頭でEIしてたし。
実際に使った事の無い℃素人なんだろ。
MSXなんかはテクハンやら、BIOSの全ソースとかが出版されてて非常に為になるPCだったけど
裾野が広くてゲームしか出来ない奴も相当数居たしね。
ここまでの発言に大嘘が混ざってるの、誰も指摘しないのはスレがその程度の
レベルだからって事でいいのかな?
>>916 >Cで書くと自動的にそうなるね
>で、抜ける時に許可にしてる
別にCで書かなくてもasmでも割り込み発生と同時に割り込み禁止になりますが?
え?
お前らのレベルがよく分かったw
俺がまともなレスをしても変な言いがかりレスが付く原因はここにあったか
>>916 何のために、割り込みから抜ける時用のリターン命令あると思うんだ?
今日も暑いな〜、dsPICのオーバークロックでもして遊ぶか
942 :
921:2014/07/26(土) 20:43:27.31 ID:58iGQ9Pd
めんどくさいので、その程度のレベルということでいいです(^p^)
>>943 30Fは普通に使っても発熱がひどいから33Fしか使わないかな。
内部のPLLのおかげで80MHzを100MHとかに部品交換なしでできるのはいいね。
メガヘンリーですか
端折ってないほうのpllは、使い始めた頃、間違って倍くらいのオーバークロックにしても動いてた気がする。
老眼で字も読めなければ2chも引退した方がよかろうな
picで室温が下がらないものだろうか
> MSXなんかはテクハンやら、BIOSの全ソースとかが出版されてて
ソースは初耳なんだが、どこからいくらぐらいで出てた?
アスキーで出てたな
当時テクハンと、その後に出た電話帳みたいな分厚い本と
両方持ってたけど、全ソースなんか載ってなかったよ
ほぼ全BIOSやらシステムコールやらは網羅されてたけど
ソースの数値が8進で書かれてて新鮮だったな。
>>951 全ソースだけで一冊。分厚い上に、テクハンよりもかなり大きくて、本棚に入らなかった覚えがある。
表紙が真っ白な本。
ま、℃素人には必要の無い本だから、小さな書店には並んでなかったんじゃね。
俺は神田で買ったけど。
>>951 ちなみに、ヤマハが出したV9938の黄色くて薄い本も買わなきゃモグリ
そもそもMSXって機種ごとにROMのソースは微妙に違うんじゃないの
それをBIOSコールを共通化することで互換性持たせてたはず
特定機種の「ソースリスト」を出版する意味ってあるのか
>>955 特定の機種と言うより、MSXオリジナル。つまり、マイクロソフトのソース。
ま、℃素人には重要性がわからないだろうな。
>>927 若いから聞きたいんだけど、それ割り込み処理に入ってから割り込みを禁止するまでに
割り込み要因が発生したらどうなるの?
なんか嘘っぽいから、まぁいいやw
>>951 vol.3は、ぼったくり感高かったな。
>>957 割り込み受け付けたら割り込み禁止にならないようなCPUは動かないから気にする必要なし
割り込み許可も次の命令を実行してから有効になるから大丈夫
>>957 石橋を叩いたり、おまじないでDIしてるプログラム見て、そういうものだと
思い込んじゃってるんだからそっとしといてやれよ。
midrangeのPIC等で良く聞く割り込み処理で疑問があるのだが
割り込みで行いたい処理が重い場合(あと即効性が不要の場合)
割り込みルーチン内ではフラグだけ立てて、実際の処理は
メインルーチン側でフラグをみて処理するとよく見るのだけれど。
各割り込み要因フラグ(T0IF,INTF,RBIF等)は、条件が満たされれば
GIEや各割り込み許可(T0IE,INTE,RBIE等)フラグに関係なく
セットされるのだから、わざわざ別のフラグを用意して割り込みルーチンで
セットせずとも、メインルーチンで割り込み要因フラグをチェック
していればいいんだよね?
気分の問題ちゃうん?
INTCONをチェックするにしても
・割り込み処理内でチェック→割り込みが発生するまではチェックも行わない
ので処理が軽いかも
・ポーリングでチェック→イベント有無に関係なく、main()のループ1周ごとに
チェックするので処理が重いかも
msecやsecのオーダーでしかイベントが発生しないなら割り込み使うかなぁ
>わざわざ別のフラグを用意して割り込みルーチンでセット
?
>>964 なにか貴方のレベルでは理解出来ないことでも?