PIC専用のスレ Part47

このエントリーをはてなブックマークに追加
916774ワット発電中さん:2014/07/26(土) 10:11:02.67 ID:bmnvnn1A
Cで書くと自動的にそうなるね
で、抜ける時に許可にしてる

そんなことはCのコードからは全く読み取れないので、
一度はアセンブラの結果の方も読んでおかないと、
PICの機能か? とか誤解する
917774ワット発電中さん:2014/07/26(土) 10:28:48.67 ID:0CJJzFLP
回答ありがとうございます
こんな感じの理解であっていますでしょうか?

PIC16 & XC8使用の場合
1. 割り込み処理の頭で自動的に割り込み禁止にされる
2. 割り込み処理の終わりで自動的に割り込み許可にされる
3. 割り込み禁止中であっても何らかの割り込み要因が発生したら要因フラグだけ勃つ
4. なので先行の割り込み処理終了後、すぐに後続の割り込みが発生する
5. 要因フラグは割り込み処理内で自分でクリアする必要がある
6. つまり通常は多重割り込みはそもそも発生しえない

ところで2の処理が分からないのですが、例えば「一度でもINT割り込みが発生したら、あとは
二度とINT割り込みを発生させない」ために割り込み処理内でGIE=0を設定しても、XC8が気を
効かせて割り込み処理の終わりで勝手に割り込み許可にしてしまうんでしょうか?
918774ワット発電中さん:2014/07/26(土) 10:36:59.15 ID:tHFQD/u+
When an interrupt is responded to, the global interrupt
enable bit is cleared to disable further interrupts
919774ワット発電中さん:2014/07/26(土) 10:38:26.64 ID:xUColzc7
技術的な話が出ないもんな。
初心者スレのほうがまだまし
920774ワット発電中さん:2014/07/26(土) 11:04:31.07 ID:bmnvnn1A
そうなると思う
割り込み処理の外で割り込み禁止にしてしまえば、もう割り込みは起きない
だから、一度きりの割り込みを実現したければ、割り込みの発生をRAM上に記憶して、
割り込みの外から監視するしか
921774ワット発電中さん:2014/07/26(土) 11:07:55.04 ID:58iGQ9Pd
asmでもRETFIEするまでGIEは0ですし御寿司
922774ワット発電中さん:2014/07/26(土) 11:13:55.71 ID:tHFQD/u+
>ところで2の処理が分からないのですが、例えば「一度でもINT割り込みが発生したら、あとは
>二度とINT割り込みを発生させない」ために

割り込み処理内でINT割り込みの許可フラグを禁止にすればよかろう
923774ワット発電中さん:2014/07/26(土) 11:15:17.47 ID:bmnvnn1A
>>918 みたいなことが書かれてる機種もあるんだろう
俺が使うのは、そんな気の利いたことはしてくれない
924774ワット発電中さん:2014/07/26(土) 11:40:58.05 ID:l6aAbnsQ
>>923
個別の割り込み要因フラグと勘違いしてないか?
GIEは割り込み時に自動でクリアされるしそうでなきゃ無限に割り込み繰り返すぞ
925774ワット発電中さん:2014/07/26(土) 11:51:39.86 ID:tHFQD/u+
普通に考えれば

割り込み禁止状態でなければ
割り込みルーチンに飛んだ次の瞬間に
自信の割り込みがかかって
また割り込みルーチンに飛ぶことになる
926774ワット発電中さん:2014/07/26(土) 11:56:13.61 ID:1Atofg+E
iret の部分を ret に書き換えればいいんじゃね?
927774ワット発電中さん:2014/07/26(土) 11:58:52.09 ID:dkekhXRa
>>925
まだ若い子なのかな?
昔のマイコンやCPUは割り込み処理の先頭で割り込みを禁止するのが普通だったんだけど
DI/EIとか言っても通じないか
928774ワット発電中さん:2014/07/26(土) 12:01:12.95 ID:0CJJzFLP
>>920
やっぱりそうなりますか
ちょっとPICで割り込み処理を行うのは技術的に難しい感じするので、いっそ
ボーリングで処理出来ないか考えてみます
929774ワット発電中さん:2014/07/26(土) 12:10:04.41 ID:58iGQ9Pd
926氏の、通常のリターン命令を使うトリッキーな手でもいけそうだけど、
要因ごとに割り込み許可フラグがあるからそっちを落とすのが筋かと思う。
930774ワット発電中さん:2014/07/26(土) 12:18:59.23 ID:rwYWyYfx
>928
待って >922が書いてるように個別の割込許可フラフを
割込処理内でクリアしてしまえばその要因による2回目の
割込は発生しないよ。
INT外部割り込みならINTEを割込処理内でクリアする。

>1. 割り込み処理の頭で自動的に割り込み禁止にされる
>2. 割り込み処理の終わりで自動的に割り込み許可にされる
これは全体割込許可フラグ(GIE)をクリア&セットしているだけだから
931774ワット発電中さん:2014/07/26(土) 12:23:48.23 ID:NZqVR1YL
>>927
爺は邪魔だから、黙ってろよ
932774ワット発電中さん:2014/07/26(土) 12:25:44.35 ID:RvPzg1yx
>>930

1) 割り込み処理先頭でGlobal変数をチェックし、0以外なら何もしない
2) Global変数が0なら1をセットして本処理

俺、大抵これだわw
933774ワット発電中さん:2014/07/26(土) 12:26:32.99 ID:NZqVR1YL
>>928
ID:bmnvnn1A は色々勘違いしてるから、無視した方がいい
934774ワット発電中さん:2014/07/26(土) 12:31:06.00 ID:T/7l/f3X
>>928
MCUを使いこなすためには割り込み処理が必須だから、
できれば先延ばしにしない方が良いと思う。

とりあえず、割り込み開始時のハードウェアの処理内容や
所用クロック数などはマニュアルを読んでみて。
935774ワット発電中さん:2014/07/26(土) 18:54:23.72 ID:fc0Lo9GQ
>>927
DI/EIあたりのCPUは、DI状態で呼ばれるから、そんなことしなかったでしょ。
MSXのタイマ割り込みなんか、冒頭でEIしてたし。
936774ワット発電中さん:2014/07/26(土) 19:12:33.65 ID:t08BYauh
実際に使った事の無い℃素人なんだろ。
MSXなんかはテクハンやら、BIOSの全ソースとかが出版されてて非常に為になるPCだったけど
裾野が広くてゲームしか出来ない奴も相当数居たしね。
937774ワット発電中さん:2014/07/26(土) 19:30:50.23 ID:RvPzg1yx
ここまでの発言に大嘘が混ざってるの、誰も指摘しないのはスレがその程度の
レベルだからって事でいいのかな?

>>916
>Cで書くと自動的にそうなるね
>で、抜ける時に許可にしてる

別にCで書かなくてもasmでも割り込み発生と同時に割り込み禁止になりますが?
938774ワット発電中さん:2014/07/26(土) 20:33:36.65 ID:tHFQD/u+
え?
939774ワット発電中さん:2014/07/26(土) 20:35:53.31 ID:wB1o8tjC
お前らのレベルがよく分かったw
俺がまともなレスをしても変な言いがかりレスが付く原因はここにあったか
940774ワット発電中さん:2014/07/26(土) 20:37:40.01 ID:ovWLnQp3
>>916
何のために、割り込みから抜ける時用のリターン命令あると思うんだ?
941774ワット発電中さん:2014/07/26(土) 20:41:19.18 ID:t3K34zJU
今日も暑いな〜、dsPICのオーバークロックでもして遊ぶか
942921:2014/07/26(土) 20:43:27.31 ID:58iGQ9Pd
めんどくさいので、その程度のレベルということでいいです(^p^)
943774ワット発電中さん:2014/07/26(土) 20:44:29.19 ID:2YFcrSOi
>>941
もちろん30fを5V駆動でだよな?
944774ワット発電中さん:2014/07/26(土) 21:01:39.31 ID:t3K34zJU
>>943
30Fは普通に使っても発熱がひどいから33Fしか使わないかな。
内部のPLLのおかげで80MHzを100MHとかに部品交換なしでできるのはいいね。
945774ワット発電中さん:2014/07/26(土) 21:03:40.75 ID:PryZjykS
メガヘンリーですか
946774ワット発電中さん:2014/07/26(土) 21:03:44.10 ID:+jk0dani
端折ってないほうのpllは、使い始めた頃、間違って倍くらいのオーバークロックにしても動いてた気がする。
947774ワット発電中さん:2014/07/26(土) 21:09:53.04 ID:tHFQD/u+
老眼で字も読めなければ2chも引退した方がよかろうな
948774ワット発電中さん:2014/07/26(土) 21:53:37.95 ID:gDP99bL7
picで室温が下がらないものだろうか
949774ワット発電中さん:2014/07/26(土) 23:31:08.07 ID:p54NLLN+
> MSXなんかはテクハンやら、BIOSの全ソースとかが出版されてて
ソースは初耳なんだが、どこからいくらぐらいで出てた?
950774ワット発電中さん:2014/07/26(土) 23:36:42.69 ID:6MPuyHjo
アスキーで出てたな
951774ワット発電中さん:2014/07/26(土) 23:58:42.80 ID:aqXiu09U
当時テクハンと、その後に出た電話帳みたいな分厚い本と
両方持ってたけど、全ソースなんか載ってなかったよ
ほぼ全BIOSやらシステムコールやらは網羅されてたけど
952774ワット発電中さん:2014/07/27(日) 00:12:26.71 ID:usnCukM1
ソースの数値が8進で書かれてて新鮮だったな。
953774ワット発電中さん:2014/07/27(日) 00:16:21.68 ID:usnCukM1
>>951
全ソースだけで一冊。分厚い上に、テクハンよりもかなり大きくて、本棚に入らなかった覚えがある。
表紙が真っ白な本。
ま、℃素人には必要の無い本だから、小さな書店には並んでなかったんじゃね。
俺は神田で買ったけど。
954774ワット発電中さん:2014/07/27(日) 00:19:36.66 ID:usnCukM1
>>951
ちなみに、ヤマハが出したV9938の黄色くて薄い本も買わなきゃモグリ
955774ワット発電中さん:2014/07/27(日) 00:22:20.89 ID:40ksOuu6
そもそもMSXって機種ごとにROMのソースは微妙に違うんじゃないの
それをBIOSコールを共通化することで互換性持たせてたはず
特定機種の「ソースリスト」を出版する意味ってあるのか
956774ワット発電中さん:2014/07/27(日) 00:33:00.89 ID:usnCukM1
>>955
特定の機種と言うより、MSXオリジナル。つまり、マイクロソフトのソース。
ま、℃素人には重要性がわからないだろうな。
957774ワット発電中さん:2014/07/27(日) 00:35:44.79 ID:frgQq7Jv
>>927
若いから聞きたいんだけど、それ割り込み処理に入ってから割り込みを禁止するまでに
割り込み要因が発生したらどうなるの?
958774ワット発電中さん:2014/07/27(日) 00:44:44.72 ID:8ySF49VX
なんか嘘っぽいから、まぁいいやw

>>951
vol.3は、ぼったくり感高かったな。
959774ワット発電中さん:2014/07/27(日) 01:13:12.95 ID:W/kTlJlT
>>957
割り込み受け付けたら割り込み禁止にならないようなCPUは動かないから気にする必要なし
割り込み許可も次の命令を実行してから有効になるから大丈夫
960774ワット発電中さん:2014/07/27(日) 01:27:12.00 ID:OFoItEcr
>>957
石橋を叩いたり、おまじないでDIしてるプログラム見て、そういうものだと
思い込んじゃってるんだからそっとしといてやれよ。
961774ワット発電中さん:2014/07/27(日) 02:20:11.93 ID:d9hhcZX6
midrangeのPIC等で良く聞く割り込み処理で疑問があるのだが
割り込みで行いたい処理が重い場合(あと即効性が不要の場合)
割り込みルーチン内ではフラグだけ立てて、実際の処理は
メインルーチン側でフラグをみて処理するとよく見るのだけれど。

各割り込み要因フラグ(T0IF,INTF,RBIF等)は、条件が満たされれば
GIEや各割り込み許可(T0IE,INTE,RBIE等)フラグに関係なく
セットされるのだから、わざわざ別のフラグを用意して割り込みルーチンで
セットせずとも、メインルーチンで割り込み要因フラグをチェック
していればいいんだよね?
962774ワット発電中さん:2014/07/27(日) 02:38:08.00 ID:nxq7Kkq1
気分の問題ちゃうん?

INTCONをチェックするにしても
・割り込み処理内でチェック→割り込みが発生するまではチェックも行わない
ので処理が軽いかも

・ポーリングでチェック→イベント有無に関係なく、main()のループ1周ごとに
チェックするので処理が重いかも

msecやsecのオーダーでしかイベントが発生しないなら割り込み使うかなぁ
963774ワット発電中さん:2014/07/27(日) 02:39:58.64 ID:OFoItEcr
>>961
むしろそれが普通だと思う
964774ワット発電中さん:2014/07/27(日) 03:30:00.69 ID:xOwaB7bH
>わざわざ別のフラグを用意して割り込みルーチンでセット
965774ワット発電中さん
>>964
なにか貴方のレベルでは理解出来ないことでも?