Re: PIC16F616 ECCP1 Capture mode Setting
|
||||
---|---|---|---|---|
版主
|
輸入準位的問題要檢查一下該 ccp 的輸入為準是 TTL or Schimit Trigger 的位準? 這是基本功,一定要了解期間的差異,這也就是為何 2.4V 的 high 電位無法在 5V 下被偵測到。
發表於: 2010/2/12 22:10
|
|||
|
Re: PIC16F616 ECCP1 Capture mode Setting
|
||||
---|---|---|---|---|
新會員
|
感謝大大的幫助,程式改了而且將燒錄電壓5V降低至3V就可以動了,因為我的輸入是2.4v clock的關係吧。另外是否可以再幫我看一下,下面的程式那裡出了問題,謝謝。
希望動作: RA1跟荖旗標動作亮滅。 旗標立起來4次,RA0亮一下。 目前動作: RA1正常跟荖旗標亮滅(正常)。 但RA0一直亮著(異常)。 void main( void ) { unsigned char r; Init_System(); r=0; while(1) { if(CCP1IF == 1) { RA1=1; CCP1IF = 0; r = r+1; if (r==4) { RA0=1; r=0; } else { RA0=0; } } else { RA1 = 0; } } }
發表於: 2010/2/11 18:58
|
|||
|
Re: PIC16F616 ECCP1 Capture mode Setting
|
||||
---|---|---|---|---|
初級會員
|
參照:
if(CCP1IF = 1) ===> 少個等號,或是直接 if(CCP1IF) 還有當 IF 發生,RA1 = 1 下一次迴圈的瞬間又變成 RA1 = 0 了
發表於: 2010/2/11 16:24
|
|||
|
Re: PIC16F616 ECCP1 Capture mode Setting
|
||||
---|---|---|---|---|
新會員
|
目前只在測試旗標部份是否會動作,因此只控制簡單的I/O,我的輸入訊號為 1Hz , 2.4V
希望動作: 當旗標立起來時,RA1亮(有訊號) 當旗標倒下時,RA1滅(無訊號) 但目前狀態是一上電,RA1永遠是亮的。 主程式部份如下: void main( void ) { Init_System(); // Initialize System Function and Variables while(1) { if(CCP1IF = 1) { RA1=1; CCP1IF = 0; } else { RA1 = 0; } } }
發表於: 2010/2/11 15:34
|
|||
|
Re: PIC16F616 ECCP1 Capture mode Setting
|
||||
---|---|---|---|---|
版主
|
程式看起來有關 Timer1 & CCP1 的相關設定是 OK 的,感覺起來 CCP 應該會執行 capture 的動作的。
請在詳細描述一下你是如何測出 CCP 沒有動作的,還有我會建議使用中斷 (CCPIF) 方式會比較好。 還有你的輸入訊號有多快?
發表於: 2010/2/11 10:58
|
|||
|
PIC16F616 ECCP1 Capture mode Setting
|
||||
---|---|---|---|---|
新會員
|
研究了datasheet寫了下列ccp1 capture mode的設定,但是實測沒有動作,是否可以請大大幫忙確認設定上是不是有問題??或是有sample code可以提供給我參考,非常感謝。
動作需求: 設定啟動ccp1 capture mode。 不使用中斷副程式,只判斷旗標是否立起。 void Init_System(void) { ANSEL = 0x00; //關閉Analog AD Function RA0 = 0; RA1 = 0; TRISA = 0x30; RC5 = 0; //預設為Low TRISC5 = 1; //Input PEIE = 0; GIE = 0; CCP1CON = 0x05; //capture mode rise edge CCP1IE = 1; CCP1IF = 0; T1CON = 0x01; //enable Timer1 CM1CON0 = 0x00; CM2CON1 = 0x10; //設定FOSC mode }
發表於: 2010/2/11 6:27
|
|||
|