|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
當(dāng)單片機(jī)正在響應(yīng)中斷的時候,又來了新的中斷 |
| 作者:XIAOSUN 欄目:單片機(jī) |
當(dāng)單片機(jī)正在響應(yīng)中斷的時候,又來了新的中斷請求,如何直接跳去執(zhí)行新的中斷? |
| 2樓: | >>參與討論 |
| 作者: feng_120 于 2003/11/18 17:09:00 發(fā)布:
PIC PIC的中斷優(yōu)先級是用戶自己控制的 |
|
| 3樓: | >>參與討論 |
| 作者: fangyi999 于 2003/11/18 18:07:00 發(fā)布:
同意樓上的意見 增加一點,18系列有中斷優(yōu)先級 |
|
| 4樓: | >>參與討論 |
| 作者: xiaosun 于 2003/11/18 18:34:00 發(fā)布:
可16系列沒有中斷優(yōu)先級 |
|
| 5樓: | >>參與討論 |
| 作者: 張明峰 于 2003/11/18 22:11:00 發(fā)布:
別; 對于PIC的出學(xué)者來說,簡單地老老實實地做完當(dāng)前中斷服務(wù)就趕緊退出返回。PIC的中斷機(jī)制就會立即響應(yīng)新的中斷。 |
|
| 6樓: | >>參與討論 |
| 作者: eeproom 于 2003/11/19 10:28:00 發(fā)布:
嚴(yán)重同意教主 可以通過優(yōu)化設(shè)計,不要讓中斷占用較長時間,在處理每一個中斷的時候關(guān)閉以后的中斷允許,讓它排隊等候。 當(dāng)然也可以在處理當(dāng)前中斷的時候響應(yīng)新的中斷,你只要不讓堆棧溢出,都辦得到。 |
|
| 7樓: | >>參與討論 |
| 作者: 張明峰 于 2003/11/19 21:27:00 發(fā)布:
注意 “在處理每一個中斷的時候關(guān)閉以后的中斷允許”,大可不必如此。一旦進(jìn)入中斷,GIE自動變0,不會響應(yīng)任何其他中斷。指令retfie在返回的同時自動把GIE置1。 切記切記:中斷服務(wù)程序中的任何地方都不要使用GIE=1的指令,除非你水平足夠。 |
|
| 8樓: | >>參與討論 |
| 作者: HotPower 于 2003/11/20 2:16:00 發(fā)布:
教主就是教主 |
|
| 9樓: | >>參與討論 |
| 作者: ms 于 2003/11/30 15:43:00 發(fā)布:
不一定吧 可以進(jìn)中斷后設(shè)定一個標(biāo)志 后立刻退出,主程序看有標(biāo)之在執(zhí)行相應(yīng)程序 |
|
| 10樓: | >>參與討論 |
| 作者: Ardel 于 2003/12/5 23:15:00 發(fā)布:
請教版主:絕對不能使用GIE=1指令? 我讀到一個張工的回帖,提到“切記切記,絕對不能使用GIE=1指令..” 你的意思:絕對不能使用BSF INTCON,GIE 指令,還是使用該指令時須非常小心?我對PIC知之不深,在一個程序中已經(jīng)用了BSF INTCON,GIE,雖暫時未發(fā)現(xiàn)問題,是否留有隱患?若有隱患,須及早消除,敬希不吝賜教!這里先謝過。 |
|
| 11樓: | >>參與討論 |
| 作者: eeproom 于 2003/12/10 11:55:00 發(fā)布:
中斷嵌套也不是很可怕 “在處理每一個中斷的時候關(guān)閉以后的中斷允許,讓它排隊等候”,有點表達(dá)不清。不是關(guān)心GIE. 在響應(yīng)中斷時GIE會自動清零,根據(jù)需要在處理中斷的時候開放當(dāng)前緊要的xIE,GIE=1.同時還要保證在此時開放的中斷發(fā)生前當(dāng)前處理的中斷不可再次發(fā)生。 還要注意不可以在中斷中調(diào)用同一subroutine,留心堆棧不要溢出。 讓中斷處理好了才響應(yīng)后來的事件,可能有事故早就不可追回了。 |
|
| 12樓: | >>參與討論 |
| 作者: felixjoe 于 2004/1/2 11:45:00 發(fā)布:
關(guān)鍵取決于中斷響應(yīng)的實時性要求有多高 我剛開始做程序時總覺得中斷就要立即處理,特別是在電機(jī)控制時(偶不是學(xué)電機(jī)的) 當(dāng)時做電機(jī)控制,別人的程序測速和控制都有可能有2MS的延時,好象也沒大問題. 后來才明白,其實每一項中斷都有一定的延時承受能力. 要是談到立即響應(yīng),從PIC的中斷發(fā)生,要經(jīng)過判斷中斷源,跳轉(zhuǎn)到中斷處理點,手動保護(hù)現(xiàn)場等,其實已經(jīng)有不少延時了. 所以有時過分強(qiáng)調(diào)實時性,到給自己找麻煩,而效果并不一定好. |
|
| 13樓: | >>參與討論 |
| 作者: fxmxh 于 2004/1/3 15:50:00 發(fā)布:
同意felixjoe的說法, 只要能滿足實際需要的速度,沒必要去考慮中斷嵌套,對于一個主程序循環(huán),中斷的發(fā)生幾乎是不可預(yù)測的;有時也是有害的。 |
|
| 14樓: | >>參與討論 |
| 作者: kannyhuang 于 2004/1/5 17:35:00 發(fā)布:
還是老實一點好 在中斷里不能在中斷了,但是標(biāo)志還在,你自己想想怎么辦了 |
|
| 15樓: | >>參與討論 |
| 作者: yulye 于 2004/1/6 17:42:00 發(fā)布:
16真的沒有中斷優(yōu)先級? 那就慘了,我必須得要有中斷優(yōu)先級的 |
|
| 16樓: | >>參與討論 |
| 作者: mcu_51 于 2004/1/7 9:34:00 發(fā)布:
中斷處理,與水平有限關(guān)系。疑惑極限點了..唉!!! PIC中斷之中斷 ;*************************************************************** org 4h ;中斷入口地址 MOVWF w_temp ; SWAPF w_temp,F ;軟件模擬壓棧處理 ; SWAPF STATUS,W ;保護(hù)W累加器與STATUS狀態(tài)寄存器 ; SETbank0 BCF STATUS,IRP MOVWF StatusTemp MOVFW FSR ;保護(hù)SFR movwf fsrTemp ; MOVFW PCLATH movwf PCHTemp ; page0 ;0頁 ;---------------------------------------------- ;判斷各中斷標(biāo)志位 ;依語句順序 1. CCP2IF ; 2. TMR2IF ; 3. TF2W ; 4. IntTRM0 BTFSC PIR1,CCP1IF B IntCCP2 ;轉(zhuǎn), 捕捉服務(wù)程序 ; BTFSC PIR1,TMR1IF B IntMR1 ; BTFSC PIR1,TMR2IF ;TMR2中斷? B TF2W ;轉(zhuǎn),中斷服務(wù)程序 RS485TEC2: B $ ;;************************************************************* ;TMR2 中斷服務(wù)程序 ;每900Hz中斷=3.6864\4(分頻)\256(TMR0)\4 ;說明: 中斷使用bank0 中斷總周期不能大于256(TMR0), TF2W: ;備份堆棧 BCF PIR1,TMR2IF ;清中斷標(biāo)志 SWAPF StatusTemp,W MOVWF STATUS MOVFW w_temp CLRF STATUS MOVWF w_temp1 ; MOVFW StatusTemp MOVWF StatusTemp1 ; MOVFW fsrTemp MOVWF fsrTemp1 ; MOVFW PCHTemp MOVWF PCHTemp1 call T0ret ;開放中斷 ;---------------------------------------------- .掃描LED .掃描KEY . . ;******************************************************************************* ;軟件模擬退棧處理 ;退棧說明: 因為中斷臨時保護(hù)寄存器都是使用BANK0的.還原狀態(tài)寄存器,必須放在最后. ;W的臨時保護(hù)寄存器使用了兩個20H ,A0H 所以與狀態(tài)寄存器無關(guān) Intret BCF INTCON,GIE MOVFW w_temp1 MOVWF w_temp SETbank1 ; MOVWF w_temp SETbank0 ; MOVFW StatusTemp1 MOVWF StatusTemp ; MOVFW fsrTemp1 MOVWF fsrTemp ; MOVFW PCHTemp1 MOVWF PCHTemp MOVFW PCHTemp movwf PCLATH ; MOVFW fsrTemp movwf FSR ; SWAPF StatusTemp,w ;還原W累加器與STATUS狀態(tài)寄存器中斷的值 MOVWF STATUS ; SWAPF w_temp,W T0ret RETFIE |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |