Re: 使用C18碰到很奇怪的現象
|
||||
---|---|---|---|---|
版主
|
因為中斷函數宣告 #pragma interrupt 會將函數的最後的括號編譯成 RETFIE 0 , 返回時會將GIEL位原崇設為1。
詳細使用可以參考 W401 C18 workshop 第五章的說明。
發表於: 2007/1/8 14:26
|
|||
|
Re: 使用C18碰到很奇怪的現象
|
||||
---|---|---|---|---|
資深會員
|
這個問題終於解決了,原來是中斷函數的宣告不夠完整,中斷函數的上下應該多加這兩行:
#pragma interrupt Low_ISR 中斷函數 #pragma code 這樣以後在進中斷時就沒有再發生自動清除中斷致能位元後而無法自動恢復的情形了。
發表於: 2007/1/8 14:11
|
|||
|
使用C18碰到很奇怪的現象
|
||||
---|---|---|---|---|
資深會員
|
請問版主:
我使用18F2550,搭配C18編譯器做開發,將低優先中斷規劃給TMR0使用,每250us進去一次,高優先中斷規劃給TMR1使用,每100us進去一次,兩個Timer中斷各拉一支I/O用示波器觀察時脈正確無誤,不過我現在發現一種情況,就是在進低優先中斷函數之後會自己清掉PEIE這個旗號,而在進入高優先中斷函數的時候,會自動清掉GIE這個旗號,結果變成我每次進中斷的時候都要把被清掉的旗號重新設定,如此程式才能順利運作,不然中斷就只能進去一次而已,無論是用Debug模式或是軟體模擬的結果都一樣。 但是我看反組譯的組合語言程式中並沒有去清掉這兩個旗號,還是這顆MCU的硬體關係?第一次碰到這種會自己清掉中斷致能位元的情況,所以很困擾,謝謝。
發表於: 2007/1/3 15:13
|
|||
|