Re: 中斷問題
|
||||
---|---|---|---|---|
中級會員
|
板主你好
我中斷的問題已經解決囉...但有一些現象不清楚再跟你請教一下 因為上面有提過,我高階中斷有兩個中斷副常式 一個是INT1外部中斷,一個USART介面中斷 我有照版主的方法,進入高階中斷後用判斷式,判別是哪一個中斷旗標發生,再指到對應的副常式中,最後再把中斷旗標清掉 但我發生一個現象,就是當INT1中斷發生後,對應的副常式執行完後,要持續對USART介面進行中斷,接收資料 但發現USART停止接收資料, 我用debuger mode去查,發現RCSTA站存器的其中一個bit OERR(overrun error bit)為1,就是USART目前為overrun error 但我程式如果在把RCSTA暫存器的CREN(continous receiver enable bit) disable掉,再enable,USART介面又可以開使接收資料 想請問一下,是否為啟動INT1外部中斷後,USART介面會自動disable掉,還是有其他原因 謝謝
發表於: 2007/7/31 14:15
|
|||
|
Re: 中斷問題
|
||||
---|---|---|---|---|
中級會員
|
板主3Q
我在試試看囉
發表於: 2007/7/27 14:57
|
|||
|
Re: 中斷問題
|
||||
---|---|---|---|---|
版主
|
1. 其實高、低階中斷不用太在意誰是高優先權誰是低優先權中斷,一般而言執行中斷服務程式的時間都很短,PIC18F 的速度夠快來處理中斷,所以誰是高優先權或低優先權不用太過於在意,除非你的程式?的是很 Real-Time
2. 高優先全友 INT1 & USART的中斷處理,出了問題可以先將 UASRT Disable 單獨檢查INT1的中斷功能,混在一起時會比較不容易除錯。 3. 多個中斷在一起的設計是沒問題的,不需要執行USART中斷時又去動INT1的旗號。你可以在進入高優先全中斷後馬上檢查 RCIF 及 INIIF 旗號看是誰產生的中斷,然後就跳入相對應的處理程式離開時再將中斷旗號清除
發表於: 2007/7/27 14:24
|
|||
|
中斷問題
|
||||
---|---|---|---|---|
中級會員
|
請教各位高手
目前需要驅動timer,USART,外部搖桿裝置(有接到外部中斷INT1), 程式都寫好,只剩整合在一起 但遇到中斷副常式設定問題 timer我是寫在低階中斷副常式中 較大的問題在高階中斷副常式這邊 因為目前程式的function,是需要先用外部搖桿裝置輸入資料 然後再一直接收USART的資料(一直不斷的接收資料) 把高階中斷副常式加入了外部搖桿裝置及USART接收資料功能 但程式在執行輸入資料時,卻停住不動囉 後來我有想到可能高階中斷副常式包含中斷2個介面,所以有可能造成當機...但不知如何處理是好 我是有想到要啟動USART接收資料功能時,把外部搖桿裝置的外部中斷INT1的中斷旗標清掉,但不知可不可行 還是有其他的方法可行 請知道的高手,高抬貴手一下 謝謝
發表於: 2007/7/27 12:02
|
|||
|