• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users






Re: 中斷時間怎麼算??
#6
新會員
新會員


查看用戶資訊
感謝各位大大的指導~原來小弟一直搞錯了 ~ 也謝謝您們即時回覆~再次感謝 !!

發表於: 2009/2/11 18:33
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 中斷時間怎麼算??
#5
版主
版主


查看用戶資訊
APP025 使用 PIC18F452/F4520 ,其Timer1 是外接 32768Hz 的 Crystal,這個振盪器跟 System Clock無關,指令是靠 System Clock的執行。

因為 Timer1 是數到 0xFFFF 變 0x0000 時會產生中斷,所以
32768Hz / 16384 = 2Hz = 0.5 Sec。

也就是說 Timer1 reload 的計數值為 0xC000 (65536-16384) 數到 0x0000 時會中斷。

發表於: 2009/2/11 16:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 中斷時間怎麼算??
#4
資深會員
資深會員


查看用戶資訊
你現在外部採用 32768 hz
週期=1/頻率=1/32768

所以表示TIMER1 累加32768次則為1秒中斷一次
他累加16384 表示 0.5秒(500ms)中斷一次

發表於: 2009/2/11 16:15
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 中斷時間怎麼算??
#3
新會員
新會員


查看用戶資訊
yiming ~ 您好 我剛剛看了外部它是使用 32.768KHz,以您所說的~ 它的指令為 0.122ms
所以中斷時間為 16384*0.122ms = 1998.848ms
但它要 500ms 中斷~ 這樣不就差很多了
請大大再為小弟解說 ~ 感謝

發表於: 2009/2/11 14:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 中斷時間怎麼算??
#2
資深會員
資深會員


查看用戶資訊
T1_SOURCE_EXT ;使用外部振震器

假設外部振震器 4MHz 則1個指令週基時間為1us
T1_PS_1_1 前除器 1:1
#define TMR1_VAL 65536-16384
則 16384us 中斷一次

發表於: 2009/2/11 8:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


中斷時間怎麼算??
#1
新會員
新會員


查看用戶資訊
使用APP025 ~ 想請問各位大大 ~ TMR1_VAL 65536-16384 這是怎麼算的?? 請詳細說明 ~ 謝謝

#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; // 清除中斷旗標

}

發表於: 2009/2/10 22:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------