Re: 優先中斷的原理是什麼&如何多工
|
||||
---|---|---|---|---|
版主
|
建議到右邊 RTC 網站找一下 201 ASP 的課,上完課後你就會知道這些功能及使用方式。
發表於: 2007/8/8 17:40
|
|||
|
Re: 優先中斷的原理是什麼&如何多工
|
||||
---|---|---|---|---|
中級會員
|
請問一下板上的大大,有誰用過外部中斷功能??
有沒有範例或是說明可供參考. 另外,是否timer0產生的中斷會和其有同功能?
發表於: 2007/8/7 16:29
|
|||
|
Re: 優先中斷的原理是什麼&如何多工
|
||||
---|---|---|---|---|
新會員
|
你可以使用BTFSS 這個指令來檢查你的中斷旗標,並設多重檢查,來做順序中斷,並在中斷副程式內檢查其他中斷即可解決問題
發表於: 2007/6/23 20:57
|
|||
|
Re: 優先中斷的原理是什麼
|
||||
---|---|---|---|---|
資深會員
|
ISR = Interupt Service Routine, 也叫 Interupt Handler
(例如 PIC16 指的是由 0004H 進入,直到 RETFIE 這段) 如果我沒猜錯,因為是你在 ISR 中 delay 56mS 是讓 MCU 跑 loop ,自然系統卡住 56mS 。 這與兩者優先無關。 PIC 本身硬體所支援的情況,nicecookie 與我都說了。 不過,當然也可以用軟體來模擬,不過與硬體的效果還是有些差別,同時也要看軟體的寫法。 Interupt 的優先指的是高優先的可以中斷低優先的,低優先的不能中斷高優先的。 也就是說即使低優先的 ISR 在執行中,高優先的 Interupt 也能中斷它,先作完高優先的 ISR 後,再回去作原來的事。反之,高優先的 ISR 在執行中,低優先的 Interupt 只能等候高優先的 ISR 執行完畢。 如果前面的例子只是作測試,自無可厚非;但如果真正的程式也是這樣,不在主程式處理事情,卻停留在 ISR 裡耗費巨大的時間,除非整個程式非常簡單而沒有影響,否則那就不恰當了,建議重新規劃,修改程式的寫法。
發表於: 2007/6/8 15:38
|
|||
|
Re: 優先中斷的原理是什麼
|
||||
---|---|---|---|---|
中級會員
|
那我在確定一件事!
我INT 中斷給IR MAIN {while (1){TMR1ON=1;}} void interrupt XXXX if (INTF==1) {我在這裡解讀IR的信號 假設 IR信號是108MS 我只解讀 56MS } if (TMR1IF==1 { 我作 OUT^=1; 其中一支角 我送出連續的周期 } ------------------------------------------------ 連續周期平時一直在跑 當IR信號進來的時候 我只處理 56MS所以 OUT會有56MS的時間會停下來! 這樣的情況是不是可以證明 外部比TIMER中斷有高的處理權! 一樣是用 PIC 16F
發表於: 2007/6/7 10:53
|
|||
|
Re: 優先中斷的原理是什麼
|
||||
---|---|---|---|---|
資深會員
|
PIC16只有一個中斷向量
所以所有中斷都沒優先權 後發生的中斷 沒辦法立刻被執行 檢查中斷旗標只是執行順序的不同罷了 如果某中斷一定非要有絕對優先不可的話 請放棄用PIC16 PIC18有高低優先中斷(2個中斷向量),或許可以考慮使用 dsPIC的中斷向量就更齊全了
發表於: 2007/6/7 9:04
|
|||
|
Re: 優先中斷的原理是什麼
|
||||
---|---|---|---|---|
資深會員
|
不好意思,我不太了解C的正確寫法
組語是... BTFSC INTCON,INTF GOTO EXT_INT BTFSC INTCON,TMRIF GOTO TIMER_INT GOTO PE_INT EXT_INT BCF INTCON,INTF ... ... BTFSC INTCON,TMRIF GOTO TIMER_INT BTFSC INTCON,PEIF GOTO PE_INT GOTO INT_RET TIMER_INT BCF INTCON,TMRIF ... ... BTFSC INTCON,PEIF GOTO PE_INT GOTO INT_RET PE_INT BCF INTCON,PEIF ... ... INT_RET ... ;RESTORE IAR ... ;RESTORE STATUS ... ;RESTORE W RETFIE
發表於: 2007/6/7 8:59
|
|||
|
Re: 優先中斷的原理是什麼
|
||||
---|---|---|---|---|
中級會員
|
檢查中斷旗標的先後來當做是優先次序
不太了解也可以在多說明一下嗎> GIE=1;INTE=1;TMR1IE=1;PEIE=1; void interrupt XXXX() {if (INTF==1){ XXXX} if (TMR1IF==1){ XXXX} }這樣好像是不行把 INIT中斷定成最高 有什麼方法嗎?
發表於: 2007/6/6 19:02
|
|||
|
Re: 優先中斷的原理是什麼
|
||||
---|---|---|---|---|
資深會員
|
你可以用檢查中斷旗標的先後來當做是優先次序。
發表於: 2007/6/6 18:38
|
|||
|