Re: 用Capture 量測PWM的High的時間的問題
|
||||
---|---|---|---|---|
新會員
|
已經試了3天了...
第一次進入ISR之後出還之前有清掉旗標 第2次之後中斷旗標有上來..但..就是進不去ISR... 有人知道為什麼嗎?? 謝謝 !
發表於: 2005/7/4 12:02
|
|||
|
Re: 用Capture 量測PWM的High的時間的問題
|
||||
---|---|---|---|---|
新會員
|
我的波形是方波沒有錯。謝謝指教 ^^
發表於: 2005/7/3 10:26
|
|||
|
用Capture 量測PWM的High的時間的問題
|
||||
---|---|---|---|---|
新會員
|
大家好~!!
我現在有個專題要用CCP1的Capture Mode 來量測PWM的High的時間. 因為有許多組PWM要量測..其他的都沒有問題..但是唯有用Capture量的這一個有問題. 晶片是18F458. 方法是 1.Capture 的中斷設定為Riging edge 2.發生中斷後在ISR裡面清除TMR1為0 3.更改Capture 的中斷Edge 為 Falling edge 4.Clear CCPIF 5.離開ISR 6.當遇到falling edge時進入ISR 7.讀取TMR1的時間 8.更改Capture 的中斷Edge 為 Riging edge 9.Clear CCPIF 10.離開ISR 之後就是重複這個步驟... ISR部分的程式及其他設定如下: #pragma code low_vector=0x0018 // low priotity interrupt isr void interrupt_low (void) {_asm goto ccp1_int _endasm} #pragma code #pragma void ccp1_int() { if(CCP1CONbits.CCP1M0==1) // if set for riging edge { WriteTimer1(0); CCP1CONbits.CCP1M0=0;// set Capture for falling edge } else//(CCP1CONbits.CCP1M0==0) // if set for riging edge { z=ReadTimer1(); CCP1CONbits.CCP1M0=1;// set Capture for riging edge } PIR1bits.CCP1IF=0; } #pragma //*************其他的相關設定********** //Setup Timer1 OpenTimer1(TIMER_INT_OFF& T1_16BIT_RW& T1_SOURCE_INT& T1_PS_1_1); //Setup Capture1 OpenCapture1(CAPTURE_INT_ON& C1_EVERY_RISE_EDGE); //Initialize Ports TRISCbits.TRISC2=1;// CCP1 // setup CCP1 PIR1bits.CCP1IF=0; PIE1bits.CCP1IE=1;// 0n IPR1bits.CCP1IP=0;// set for low priority RCONbits.IPEN=1; // enable priority interrupt INTCONbits.PEIE=1;// enable peripheral interrupt INTCONbits.GIE=1;// enable global interrupt 目前遇到的問題是.... 第一次可以進入ISR(riging edge)部分...之後就再也進不去了(包含falling edge 部分)... 是不是我有疏忽到的地方呢?? 非常抱歉...只能給部分的程式... 感謝各位的幫助.. 謝謝
發表於: 2005/7/2 9:43
|
|||
|
Re: Compiler時的問題
|
||||
---|---|---|---|---|
新會員
|
沒錯!!修改完後就可以順利編繹了...
^____________^ 謝謝!!
發表於: 2005/5/10 14:39
|
|||
|
Compiler時的問題
|
||||
---|---|---|---|---|
新會員
|
今天修改了原本跑的好好的程式...程式都沒有問題..但是編譯就是會出現下面的問題...但是我還是搞不懂是拿李出錯??希望友經驗的幫我指點一下...^___^
感激不盡!! Error - section '.idata_GPS.o' can not fit the section. Section '.idata_GPS.o' length=0x00000102
發表於: 2005/5/10 11:14
|
|||
|
Re: 為何APP0001板之RS-232收不到資料?
|
||||
---|---|---|---|---|
新會員
|
Hello rtaur ...
我也是玩PIC沒有多久... 我想你的程式裡面沒有見到USART的設定的部份...如baud rate,USART_RX_INT_ON等.... OpenUSART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH ,129); 還有相對應的中斷致能的bit要設定或啟動喔... 這是我注意到的部份...如有錯誤請多多包含...也希望你寫程式順利囉!!!
發表於: 2005/3/31 8:41
|
|||
|
Re: C18 字串分割strtok()使用上的問題
|
||||
---|---|---|---|---|
新會員
|
嗯...果然是這個問題...
問題解決了... 字串分割也都正常了.... 謝謝你的指點....
發表於: 2005/3/14 14:32
|
|||
|
C18 字串分割strtok()使用上的問題
|
||||
---|---|---|---|---|
新會員
|
Hello 大家
最近在學習C18裡面提供的字串分割strtok()函式庫 但是有一些使用上的問題..一直無法解決 有一筆字串,如: 254.24,25.1,-12.2 要以","逗點 作為跟分割的依據...然後分割好的字串SHOW在終端機...但都只會顯示前面的第一個字串而已...後面的就不會繼續分割下去....是拿裡錯了呢?希望有人給我一點意見...感激不盡! #include <p18f458.h> #include <config.h> #include <usart.h> #include <string.h> unsigned char compass[20]="254.2,25.1,-12.2"; char delim1[1]=","; // comma char *Token; void main(void) { OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,103); TRISCbits.TRISC6=0; TRISCbits.TRISC7=1; Token=strtok(compass,delim1); while(Token!=NULL) { putsUSART(Token); putrsUSART("\n\r"); Token=strtok(NULL,delim1); } } 因該輸出為 254.2 25.1 -12.2 輸出結果: 254.2 254.2 254.2 254.2 . . .
發表於: 2005/3/8 19:27
|
|||
|