新會員
Joined
: 2006/8/11 23:47 最後登入時間
: 2006/8/11 23:59
Group:
註冊會員
Level : 1 HP : 0 / 0 MP : 0 / 0 EXP : 0
|
小弟用的是pic18f452 的. 最近小弟卡在一個問題上 就是在外部中斷被觸發時,如果同時rs232 也被觸發的話,就會當掉,我有設外部中斷為高中斷優先權,rs232 中斷為低中斷優先,(#priority ext,rda)但是在設定前和設定後好像沒有明顯分別.還是會當掉
另外我曾天真的在外部中斷副程式裡把rs232 中斷disable 掉,等到中斷結束後回到主程式再把它enable 回來,結果還是如果在外部中斷過程中有rs232 中斷觸發訊號的話,就會當掉, 而且是當在enable 那一行(enable 在主程式裡不在外部中斷裡)
我想請教的是在外部中斷副程式執行時,有沒有辦法設定rs232 中斷絕對不被觸發??即使有rs232中斷訊號產生
小弟跟學長討論過還是沒有找到解決的方法, 以下附上2個中斷的程式 ,希望各位大大可以指點一下 謝謝
#int_RDA //rs232 中斷 RDA_isr() { // disable_interrupts(INT_EXT); gets(command); printf("\n\r RS232 Interupt3 \n\r"); gearL=((int16)command[1]-48)*1000; gearR=((int16)command[6]-48)*1000;
FBS=(int16)command[10]-48;
cpu_16.bound_max=gearL; cpu_17.bound_max=gearR;
}
#int_EXT //外部中斷 EXT_isr() { printf("\n\r111\n\r"); // disable_interrupts(INT_RDA); output_bit(PIN_D0,0);//16 pin output_bit(PIN_D1,0);//17 pin output_bit(PIN_D2,1);//18 pin output_bit(PIN_D3,1);//19 pin delay_ms (2000); output_bit(PIN_D0,0);//16 pin output_bit(PIN_D1,0);//17 pin output_bit(PIN_D2,0);//18 pin output_bit(PIN_D3,1);//19 pin delay_ms(1500); output_bit(PIN_D0,1);//16 pin output_bit(PIN_D1,1);//17 pin output_bit(PIN_D2,0);//18 pin output_bit(PIN_D3,0);//19 pin cpu_16.bound_max=5000; cpu_17.bound_max=5000; counter=0; FBS=0; printf("\n\r222\n\r"); }
以下是小弟程式的header 檔
#include <18F452.h> #device adc=8 #use delay(clock=30000000) #fuses NOWDT,WDT128,HS, BROWNOUT, BORV20, STVREN, LVP #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #priority ext,rda
希望各位大大能指點小弟一下迷津 謝謝m(_ _)m
發表於: 2006/8/12 0:26
|