
INTピンを使ってsleepから割り込み復帰したいのですが、
思ったとおり動いてくれません。
メインをSLEEPにし、割り込みが入ると割り込み側の
プログラムを実行し、終わるとメインのSLEEPに
もどってINTの割り込みに備えるようにしたいのです。
現段階では割り込みをするとSLEEPから割り込み
には行くのですが、そのまま割り込み側のプログラムを
永遠に繰り返してしまいます。
listp=12f629
includep12f629.inc
RELOOP1equ0x20
CT_DELAYNMSequ0x21
PCLATH_TEMPequ0x2a
W_TEMPequ0x2b
STATUS_TEMPequ0x2c
stuequ0x2d
org0x0
gotostart
org0x4
;レジスタの退避
movwfW_TEMP
swapfSTATUS,W
clrfSTATUS
movwfSTATUS_TEMP
movfPCLATH,W
movwfPCLATH_TEMP
clrfPCLATH
;割り込み要因のチェック
btfssINTCON,INTF
gotoINT_NEXT1
;ここから割り込みプログラム
省略
INT_NEXT1
;レジスタの復帰
movfPCLATH_TEMP,w
movwfPCLATH
swapfSTATUS_TEMP,W
movwfSTATUS
swapfW_TEMP,F
swapfW_TEMP,W
retfie
;初期設定
start:
;aLED単独の輝度
bcfSTATUS,RP0
clrfINTCON
clrfGPIO
bsfSTATUS,RP0
clrfOSCCAL
clrfTRISIO
bsfTRISIO,2
movlwB'01000101'
movwfOPTION_REG
bcfSTATUS,RP0
;割り込み許可する
movlwB'11010000'
movwfINTCON
nop
sleep
nop
goto$-3
end
こんな感じのプログラムなのですが、INTピンからの割り込みと
いうことでプリスケーラなどは使っていません。
データシートも読んだのですが今市理解ができていない状況です。
お願いします。
No.2ベストアンサー
- 回答日時:
No.1
- 回答日時:
retfieを実行しても、戻らないということですが、
retfieを実行する直前のスタック・ポインタの内容はどのようになっていますか?
retfieを実行しても、戻らないということはその時点でのスタック・ポインタに戻りアドレスが格納されていないということではないでしょうか?
スタックの初期設定はされていないようです。
割り込みの中でレジスタを戻しているのは何故でしょうか?
通常はレジスタを割り込み中でセーブするために、退避させると思います。スタック・ポインタの内容を調査すべきと思います。
この回答への補足
ありがとうございます。
スタックポインタというのは特に設定しておりませんでした。
データシートのどの辺りをみればわかるのでしょうか?
レジスタの退避は参考書を写したものでほかの
プログラムで使ったときも、
このやり方で問題なく動作しておりますので
問題ないと思うのですが、、
念のため再確認しておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
irqbalance って
-
pic 複数の割り込み関数 切り分...
-
C言語について(PWM)
-
PICマイコンでエンコーダパルス...
-
電車のドアの前での並び方
-
電車で待機列の割り込みについ...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
バックグラウンドのプロセスの...
-
パソコンの演算速度について
-
エクセルVBA 大容量CSVファイル...
-
VBSの処理中一旦処理を止めて再...
-
【C言語】再帰が時間がかかる...
-
子プロセスの状態を親プロセス...
-
keycodeについて
-
sendkeysにてALT+CTRL+INSERTを...
-
マイコンからプログラムを読み...
-
逆コンパイルと逆アセンブルの...
-
スレッドにて同一メモリの書き...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
電車で待機列の割り込みについ...
-
CPUの処理量を減らすコーデ...
-
スーパーのレジで並んでいたら...
-
このレジの並び方は間違ってま...
-
Amazonfireタブレットにわから...
-
CPU負荷率の安全な上限と計...
-
【組込み】割り込み中のstatic...
-
USJでの割り込み
-
VB6でSendKeyを利用したTab移動...
-
irqbalance って
-
インバウンドで迷惑している人...
-
VB.NET スレッドからのイベント...
-
デュアルCPUのパソコンでCPUを1...
-
Timerコンポーネントのインター...
-
C言語でPICマイコン開発
-
Arduinoのプログラムで質問です。
-
マイコンSH-2の割り込みを用い...
-
H8マイコンでの割り込み(シリ...
-
優先度順方式とプリエンプショ...
-
マイコン C言語 割り込み処理...
おすすめ情報