• slider image 71
  • slider image 72
  • slider image 73
:::


Browsing this Thread:   1 Anonymous Users






[求助]外部中斷程式問題-PIC18F4520
#1
新會員
新會員


查看用戶資訊
/*
* File: newmain1.c
* Author: Bahamut
*
* Created on November 11, 2019, 5:45 PM
*/
#include <xc.h>

void interrupt INT_0(void)
{
if(INTCONbits.RBIF==1)
{
INTCONbits.RBIF=0;
LATB++;
}
}

void inti_int(void)
{
INTCONbits.GIE=1;
INTCONbits.PEIE=1;
INTCONbits.INT0IE=1;
INTCONbits.INT0IF=1;
INTCON2bits.INTEDG0=0;
}



void main(void) {
TRISB=0x01;
LATB=0x0f;
inti_int();
while(1)
{
// LATB++;
// _delay(1000);
}

}


上面是我依Datasheet寫的程式可是都無法讓RB0成為外部中斷,是有少哪部分宣告嗎
翻了很多書本跟網路上範例,可是都不能用,很奇怪的晶片PIC18F4520,像是PIC16F1824就很單純也有成功完成外部中斷過。

請教各位先進一下
謝謝

發表於: 2019/11/11 22:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [求助]外部中斷程式問題-PIC18F4520
#2
版主
版主


查看用戶資訊
void interrupt INT_0(void)
{
INTCONbits.INT0IF=0; //只有一個中斷其他就不要檢查了
LATB++;
}


void inti_int(void)
{
INTCONbits.INT0IF=0;
INTCONbits.INT0IE=1;
INTCON2bits.INTEDG0=0;
RCONbits.IPEN = 1;
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;

}

主要是高優先權中斷弄錯了,RBIF 不等於是INTIF。看一下底下的中斷方塊圖架構。

Attach file:



jpg  (0.00 KB)


發表於: 2019/11/12 10:15
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [求助]外部中斷程式問題-PIC18F4520
#3
新會員
新會員


查看用戶資訊
謝謝回覆

用了這方法燒錄後RB0中斷測試能無法產生,但程式有跑出一開始的LATB=0.0f,我可能要檢查電路有沒有問題。

發表於: 2019/11/12 11:48
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [求助]外部中斷程式問題-PIC18F4520
#4
版主
版主


查看用戶資訊
應該這樣說 INT0 的中斷與 RB0 的中段無關,一個是 External Interrupt 一個是 Interrupt on Pin Change。這兩個是不一樣的東西,只不過是共用到 PORTB<0> 而已。

忘了說一下,因為有用到 RB0,所以 LATB++; 可以改用 LATD++ 嗎?

發表於: 2019/11/12 11:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [求助]外部中斷程式問題-PIC18F4520
#5
中級會員
中級會員


查看用戶資訊
除了版主說的以外,
如附圖,
Datasheet 108頁,

要去config PORTB為digital input,如附圖.

Attach file:



jpg  (0.00 KB)


jpg  (0.00 KB)


發表於: 2019/11/12 12:15
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [求助]外部中斷程式問題-PIC18F4520
#6
新會員
新會員


查看用戶資訊
因為我有購買實習版
電路是layout在PB所以在寫在那邊,感謝回覆。

成功了 感謝兩位的幫忙。

發表於: 2019/11/12 13:51

Edited by bahamut on 2019年11月12日 14:39:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: [求助]外部中斷程式問題-PIC18F4520
#7
版主
版主


查看用戶資訊
參照:

energy0364 寫道:
除了版主說的以外,
如附圖,
Datasheet 108頁,

要去config PORTB為digital input,如附圖.


感謝 energy0364 網友的提醒。
PORTB 也支援 ADC 輸入腳的功能,如果是用在 Digital I/O 上就需關閉 ADC 輸入腳功能。

發表於: 2019/11/13 10:47
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
You cannot start a new topic.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]