Re: 為何PIC18只會進高優先權中斷
|
||||
---|---|---|---|---|
中級會員
|
謝謝!謝謝!
原來IPEN disable都是跳到0x008 小弟的疏忽
發表於: 2006/6/13 11:38
|
|||
|
Re: 為何PIC18只會進高優先權中斷
|
||||
---|---|---|---|---|
中級會員
|
問題就是在於程式裡已經
BCF RCON,IPEN BCF IPR2,TMR3IP 當TMR0 或是 TMR3發生中斷時,都是去執行高優先權的中斷服務程式,都不會執行低優先權中斷服務程式。
發表於: 2006/6/12 16:46
|
|||
|
為何PIC18只會進高優先權中斷
|
||||
---|---|---|---|---|
中級會員
|
我寫了個測試程式,用TMR0 & TMR3中斷,
明明IPEN & TMR3IP都clear了,為何還是進到高優先權中斷。 要如何才可進低優先中斷呢? 我用MPLAB IDE v7.40。 LIST P=18F1320 #include <P18F1320.INC> CBLOCK 0x080 WREG_TEMP STATUS_TEMP BSR_TEMP ENDC CBLOCK 0x000 EXAMPLE ENDC ORG 0x0000 goto Main ORG 0x0008 bra HighInt ORG 0x0018 movff STATUS,STATUS_TEMP movff WREG,WREG_TEMP movff BSR,BSR_TEMP BCF PIR2,TMR3IF BCF INTCON,TMR0IF movff BSR_TEMP,BSR movff WREG_TEMP,WREG movff STATUS_TEMP,STATUS retfie HighInt: BCF PIR2,TMR3IF BCF INTCON,TMR0IF retfie FAST Main: BCF RCON,IPEN ;SET TMR3 CLRF TMR3L CLRF TMR3H MOVLW 0XB0 MOVWF T3CON ;BSF IPR2,TMR3IP BCF IPR2,TMR3IP BSF PIE2,TMR3IE BCF PIR2,TMR3IF ;SET TMR0 MOVLW 0XC1 MOVWF T0CON BSF INTCON,TMR0IE BSF INTCON,PEIE BSF INTCON,GIE BSF T3CON,TMR3ON MOVF TMR0L,W MOVF TMR3L,W GOTO $-4 END
發表於: 2006/6/12 15:37
|
|||
|
Re: 請教BAUD RATE 誤差率的問題
|
||||
---|---|---|---|---|
中級會員
|
參照:
您誤會我的意思了 假如使用dsPIC30F,20MHz,無倍頻,目標baud rate=9600bps BRG=(20MHz/4)/(9600*16)-1=31 實際baud rate=(20MHz/4)/(16*(31+1))=9765 BAUD RATE 誤差率=(9765-9600)/9600=1.7% 1.由算式看BAUD RATE 誤差率,只是表示目標與實際baud rate的差而已 2.只要BAUD RATE 誤差率不是太大,資料收發都不會有問題。(BRG=29~33收發應該都不會有錯誤) 我想知道的是,BAUD RATE 誤差率在大於多少時資料收發才會有問題,應該也可說是UART每一次SAMPLE的時間是間隔多久。由於BAUD RATE 誤差而導致SAMPLE該讀到1卻讀到0,該讀到0卻讀到1的錯誤
發表於: 2006/1/21 2:59
|
|||
|
請教BAUD RATE 誤差率的問題
|
||||
---|---|---|---|---|
中級會員
|
BAUD RATE 誤差率的大小對於傳輸資料的正確性有何差異?
誤差率到多少時,傳輸一BYTE就會接收錯誤?
發表於: 2006/1/20 18:58
|
|||
|
Re: 請教dsPIC30F2010的DEBUG模式
|
||||
---|---|---|---|---|
中級會員
|
我的ICD2是接到RF2/PGC and RF3/PGD,所以在configuration bits我是選擇"USE PGC/EMUC and PGD/EMUD"
燒錄功能沒有問題,就不會有接錯線的問題,而且ICD2是直接接到RF2/PGC and RF3/PGD單純作為燒錄或debug功能,並無其他線路。
發表於: 2005/12/31 13:32
|
|||
|
請教dsPIC30F2010的DEBUG模式
|
||||
---|---|---|---|---|
中級會員
|
在用DEBUG模式選ICD2,按下RUN後程式就停了。為何會這樣?
外接震盪器7.2MHz,OSC選內部RC或XT都不行。 Link for ICD2有勾選了。 沒有設任何斷點。 Build all & Program traget device時也沒有任何警告或錯誤訊息。 程式就如下面: #define __dsPIC30F2010__ #include <p30f2010.h> unsigned int i=0,j=0; int main(void) { TRISDbits.TRISD0=0; TRISDbits.TRISD1=0; while(1) { for(i=0;i<=10000;i++) {} PORTDbits.RD0=0; for(i=0;i<=10000;i++) {} PORTDbits.RD0=1; j++; if(j<10) PORTDbits.RD1= !PORTDbits.RD1; } } 燒到IC上執行又是正常的。 有什麼地方遺漏了嗎?
發表於: 2005/12/29 12:07
|
|||
|
Re: HI TECH C的疑問
|
||||
---|---|---|---|---|
中級會員
|
在ram上有分general purpose register 與 accesses兩個,在寫asm時有時會特地將某些變數設在accesses以方便程式運作,在c上就沒有必要這樣做了嗎?
發表於: 2005/11/24 16:20
|
|||
|
HI TECH C的疑問
|
||||
---|---|---|---|---|
中級會員
|
以PIC16F72為例
char a @ 0x20; //設a在位置0X20 char b; // 結果a b會使用相同的位置,請問要如何設定才會使b或其他變數自動跳過已使用的位置?
發表於: 2005/11/24 15:51
|
|||
|