Re: 計時器/計數器問題
|
||||
---|---|---|---|---|
中級會員
|
IPR1 的TMR1IP
高低選擇
發表於: 2009/11/5 10:23
|
|||
|
Re: 計時器/計數器問題
|
||||
---|---|---|---|---|
資深會員
|
APP001 板子 的 X2 確實有起振 , 但 LDE 也沒動
由 MPLAB SIM 看 INTCON 確實有設 , 但不知要如何將 CLOCK 接上 TMR1 看有無其他先進 幫忙 CHECK 一下 Attach file: Link only for registered users
發表於: 2009/10/26 9:18
|
|||
|
Re: 計時器/計數器問題
|
||||
---|---|---|---|---|
資深會員
|
板子不在手邊,不能確定,但我在build的地方,並沒錯誤,所以,表示這個程式是可以run的嗎?
發表於: 2009/10/24 11:31
|
|||
|
Re: 計時器/計數器問題
|
||||
---|---|---|---|---|
資深會員
|
好慘 !
你的程式 我 BUILD 好幾次 才成功 .... ( 剛換 MPLAB 8.4 , 應該自動抓取的檔案都沒抓 < C018i.O ; CLIB.LIB ; p18f4520.LIB > ) 你的 TIMER 1 是設成 外部振盪 , 那你板子上 J2 有無設定正確 ?
發表於: 2009/10/24 5:36
|
|||
|
Re: 計時器/計數器問題
|
||||
---|---|---|---|---|
資深會員
|
恩,或許我因該,我對整體架構真的不熟,你說的debug模式要怎麼進去?我想我因該有把程式寫入,按run時,他有在run但是燈都沒反應,有用watch看portd的變化,沒變,因為那個綠色指標停在while好像中斷沒做的感覺!
tcy的部分在書上,並沒有教我怎麼算,所以像前除器,和後除器,有時他用了 ,但我也不是很清楚他是怎麼算的,不知道有人給可以簡單給我算的例子,讓我清楚一下!謝謝各位
發表於: 2009/10/23 20:57
|
|||
|
Re: 計時器/計數器問題
|
||||
---|---|---|---|---|
資深會員
|
請問 你有用ICD2進入DEBUG模式去觀看結果嗎 ??
基本上 進入DEBUG模式 可以了解到晶片現在運行的狀態 就可以知道 程式錯在哪~~~XD TCY 晶片的震盪週期時間~~ 所以可以換算
發表於: 2009/10/23 17:45
|
|||
|
計時器/計數器問題
|
||||
---|---|---|---|---|
資深會員
|
小弟 剛學 pic也才一個月左右,有去上過教育訓練課,但我想那個課對於完全新手來說,因該只是讓你了解怎麼按而以,因為上課的內容還是太多要的,小弟我自己手邊的書,是曾老師寫的pic 18那本,雖然很多方寫的還不太清楚,但也是盡量自己摸,但書上某些地方的註解寫的太少了,難懂
我用的是pic18f4520 and app001的版子 我玩到他的計時/計數那個單元時!它的程式 //* Ex9_1_TMR1_INT.c //* 設計一個0.5秒讓 PORTD 的 LED 所顯示的二進位數字自動加一的程式 #include <p18f4520.h> //納入微控制器定義檔 #include <timers.h> //納入計時器函式庫定義檔 // 結構位元定義 #pragma config OSC=HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF #define TMR1_VAL 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 void timer1_isr (void) { PIR1bits.TMR1IF = 0; // 清除中斷旗標 WriteTimer1(TMR1_VAL); // 當將計數器觸發次數歸零寫入預設值 PORTD++; // 遞加PORTD } void main (void) { PORTD = 0x00; // 將PORTD清除關閉LED TRISD = 0; // 將TRISD設為0,PORTD設定為輸出 Init_TMR1(); // 初始化設定Timer1函式 INTCONbits.PEIE = 1; // 開啟周邊中斷功能 INTCONbits.GIE = 1; // 開啟全域中斷控制 while (1); // 無窮迴圈 } void Init_TMR1 (void){ OpenTimer1( TIMER_INT_ON & // 使用C18編譯器timer函式庫 T1_16BIT_RW & // 初始化設定Timer1 T1_SOURCE_EXT & // 並開啟TIMER1中斷功能(PIE1bits.TMR1IE=1) T1_PS_1_1 & T1_OSC1EN_ON & T1_SYNC_EXT_ON ); WriteTimer1(TMR1_VAL); // 寫入預設值 PIR1bits.TMR1IF = 0; // 清除中斷旗標 } 這個程我在版子上跑不起來,是我用的版子跟書指定的不同的關係嗎? 再請教大家幾個問題,delay 的語法Delay100TCYx=>為什麼時40us!怎麼算的
發表於: 2009/10/23 16:46
|
|||
|