Re: 4550-Timer1中斷問題
|
||||
---|---|---|---|---|
初級會員
|
修改了之前回覆,版大回太快了,在下打字不夠快^_^~
發表於: 2008/1/23 13:49
|
|||
|
Re: 4550-Timer1中斷問題
|
||||
---|---|---|---|---|
版主
|
錯在哪裡? 分享一下。Thanks,
發表於: 2008/1/23 13:44
|
|||
|
Re: 4550-Timer1中斷問題
|
||||
---|---|---|---|---|
版主
|
1. OpenTimer1( ) 的設定參數是對的,可以先用 MPLAB SIM 嫌模擬看看惠不會產生中斷,也可以先設定 OSC 頻率後再用 Stop Watch 量測一下中斷時間。
2. 高、低優先權設定是 : 先打開 IPEN 位元後,在將相對應的 IP 設為 1 (高優先權),詳細說明請看IRPx Register 3. 你忘了將 IPRbits.RCIP = 0 將接收設為低優先權了。
發表於: 2008/1/23 12:36
|
|||
|
Re: 4550-Timer1中斷問題
|
||||
---|---|---|---|---|
資深會員
|
T1_OSC1EN_OFF
T1_OSC1EN_ON 寫錯了
發表於: 2008/1/23 11:54
|
|||
|
4550-Timer1中斷問題
|
||||
---|---|---|---|---|
初級會員
|
各位安,在下目前在便用timer1時遇到無法動作之情形,想請教一下各位先進前輩們。
外部石晶為24MHz,進來在config bit處有先除6 初始化程式如下: 因為沒有外接震盪器,故我將書上設定改成用內部的 OpenTimer1(TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_INT & T1_PS_1_1 & T1_OSC1EN_OFF & T1_SYNC_EXT_OFF); WriteTimer1(65536-33); PIR1bits.TMR1IF = 0; 中斷程式如下: // 定義高優先中斷程式位址及內容 #pragma code high_vector=0x0008 void high_interrupt(void) { _asm GOTO Timer1_isr _endasm } #pragma code #pragma interrupt Timer1_isr void Timer1_isr(void) { if(a3==0) PORTD = 0xFF; else if(a3==1) PORTD = 0x00; WriteTimer1(TMR1_VAL); PIR1bits.TMR1IF = 0; } 主程式中a3初始為0,且PORTD = 0x00,所以正常動作下腳位會由低變高,且會一直為高,但用示波器看的樣子,沒有變高。 這樣程式似乎不會進入中斷副程式,我去看special function register中TMR1的內部也無在計數,所以覺得無中斷產生。 另外想問,在中斷優先權設定的地方,若有二個中斷都想設低或高優先權,要怎麼寫...麻煩各位為在下解答一下困惑,謝謝! P.S 我另外有一個串列接收的中斷為低優先權,優先權位元有設置: RCONbits.IPEN = 1; INTCONbits.GIE = 1; INTCONbits.PEIE = 1;
發表於: 2008/1/23 11:15
|
|||
|