Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
初級會員
|
恩,謝謝回答
照理來講,如果用 internal oscillator, 可以調到 8Mhz, 不是就 5uS 並不難做到。還是我觀念錯了? 另外,我有用過 PWM Module, 不過因為我將來要調整他的週期, PWM Module 的週期無法拉到我希望的長度,所以考慮自己寫 PWM。 另外,利用 Timer2 和利用 Timer1 的差別是什麼? 謝謝 最後,那些 Configuration Bits, 我如何知道我的設定已經調整好到我想要的? 意思是說,internal oscillator 該調哪些? 再次謝謝
發表於: 2007/12/17 17:56
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
版主
|
5uS 用 Timer1 並不適合因為時間很短,可以考慮用 Timer2 的方式,因為 Timer2 有 Auto reload Timer 值的功能。不過還是建議直接使用 PWM Module 最簡單,5uS 一點也不難辦到。
如果在程式力直接設定 Configuration 有問題,考慮一下直接在 MPLAB IDE 的 Configuretion Bits 選項下直接選擇你要的設定項後,燒錄完成再測試一下 Clock 輸出對不對,這樣比較簡單。
發表於: 2007/12/17 17:44
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
初級會員
|
各位
麻煩大家 急需這部分 不知道是不是忘記設定什麼 還是哪裡設定錯了? 再次謝謝
發表於: 2007/12/17 17:21
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
初級會員
|
我不太確定 TIMER1 是怎麼用的
不好意思,不太懂你的意思 如果不是這樣用 那請問,要如何用? 以下是我的程式碼 #include <p18f4480.h> //納入微控制器定義檔 #include <timers.h> //納入計時器函式庫定義檔 #pragma config BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF #pragma config OSC = IRCIO67 #define TMR1_VAL 65536-1//65536-16384 // Timer1 設定為 500ms 中斷一次 //宣告函式原型 void Init_TMR1(void); void timer1_isr (void); //宣告並安排中斷執行程式記憶體位置 #pragma code low_vector=0x18 void low_interrupt (void) { _asm GOTO timer1_isr _endasm } #pragma code #pragma interruptlow timer1_isr int i; void timer1_isr (void) { PIR1bits.TMR1IF = 0; // 清除中斷旗標 WriteTimer1(TMR1_VAL); // 當將計數器觸發次數歸零寫入預設值 PORTD=PORTD^0xff; PORTC=PORTC^0xff; } void main (void) { PORTD = 0x00; // 將PORTD清除關閉LED TRISD = 0; // 將TRISD設為0,PORTD設定為輸出 PORTC = 0x00; TRISC = 0; i = 0; Init_TMR1(); // 初始化設定Timer1函式 INTCONbits.PEIE = 1; // 開啟周邊中斷功能 INTCONbits.GIE = 1; // 開啟全域中斷控制 while (1); // 無窮迴圈 } void Init_TMR1 (void){ T1CON = 0b10000101; TMR1H=0; TMR1L=0; OSCCON =0x7F; PIE1bits.TMR1IE=1; WriteTimer1(TMR1_VAL); // 寫入預設值 PIR1bits.TMR1IF = 0; // 清除中斷旗標 } 麻煩幫我看一下 我想要做到的是 就是,每 5microseconds (或比 5 microseconds 還要小的) 時間讓其中一支 output 可以從HIGH變LOW 在變 HIGH 這樣重複,做出一個 PWM 訊號 謝謝各位 我對 PIC 很不熟 請多多指教 p.s. 我把 OSC & OSCCON 改成你說的 結果還是大概 67 microseconds
發表於: 2007/12/17 14:31
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
資深會員
|
你這樣用 TIMER1 跟本不會是你要的
你確定 TIMER1 是這樣用的? 這兩行,就能確保 使用 內部 8MHZ #pragma config OSC = IRCIO67 OSCCON =0x7F;
發表於: 2007/12/17 14:15
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
初級會員
|
#pragma config OSC = HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF
不好意思 上面忘記貼上去
發表於: 2007/12/17 13:59
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
版主
|
不清楚你是怎樣設定 Configuration 的,貼上程式設定來看看?
發表於: 2007/12/17 13:50
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
初級會員
|
謝謝你的回覆
我剛剛試了 其實我已經改過一些設定 可是我跑出來的卻還不是我想要的東西 不知道有沒有什麼其他的我忘記設定 我想要讓她跑 8Mhz 可是我量出來的大概只有 38microseconds 差很多 謝謝各位
發表於: 2007/12/17 11:18
|
|||
|
Re: 關於使用 internal oscillator
|
||||
---|---|---|---|---|
版主
|
Configuration 的設定少了許多選項,看一下 configuratin 的設定資料吧!
C:\mcc18\doc\hlpPIC18ConfigSet.chm 的說明。
-------------------- MPLAB C18 ----------------------------------------
發表於: 2007/12/14 18:57
|
|||
|