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


Browsing this Thread:   1 Anonymous Users




« 1 (2)


Re: 計時器/計數器問題
#8
中級會員
中級會員


查看用戶資訊
IPR1 的TMR1IP
高低選擇

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


Re: 計時器/計數器問題
#7
資深會員
資深會員


查看用戶資訊
我玩到他的計時/計數那個單元時!它的程式
//* 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=>0x08
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; // 清除中斷旗標

}

雖然沒有人直接回答我的問題,但我在中斷向量那改成0x08後,程式就可以run了,請問是書錯了嗎?還有請問各位0x18和0x08到底是在各什麼樣狀況下去選擇得,

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


Re: 計時器/計數器問題
#6
資深會員
資深會員


查看用戶資訊
APP001 板子 的 X2 確實有起振 , 但 LDE 也沒動
由 MPLAB SIM 看 INTCON 確實有設 , 但不知要如何將 CLOCK 接上 TMR1
看有無其他先進 幫忙 CHECK 一下

Attach file:


Link only for registered users

發表於: 2009/10/26 9:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 計時器/計數器問題
#5
資深會員
資深會員


查看用戶資訊
板子不在手邊,不能確定,但我在build的地方,並沒錯誤,所以,表示這個程式是可以run的嗎?

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


Re: 計時器/計數器問題
#4
資深會員
資深會員


查看用戶資訊
好慘 !
你的程式 我 BUILD 好幾次 才成功 ....
( 剛換 MPLAB 8.4 , 應該自動抓取的檔案都沒抓 < C018i.O ; CLIB.LIB ; p18f4520.LIB > )


你的 TIMER 1 是設成 外部振盪 , 那你板子上 J2 有無設定正確 ?

發表於: 2009/10/24 5:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 計時器/計數器問題
#3
資深會員
資深會員


查看用戶資訊
恩,或許我因該,我對整體架構真的不熟,你說的debug模式要怎麼進去?我想我因該有把程式寫入,按run時,他有在run但是燈都沒反應,有用watch看portd的變化,沒變,因為那個綠色指標停在while好像中斷沒做的感覺!

tcy的部分在書上,並沒有教我怎麼算,所以像前除器,和後除器,有時他用了 ,但我也不是很清楚他是怎麼算的,不知道有人給可以簡單給我算的例子,讓我清楚一下!謝謝各位

發表於: 2009/10/23 20:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 計時器/計數器問題
#2
資深會員
資深會員


查看用戶資訊
請問 你有用ICD2進入DEBUG模式去觀看結果嗎 ??

基本上 進入DEBUG模式 可以了解到晶片現在運行的狀態

就可以知道 程式錯在哪~~~XD

TCY 晶片的震盪週期時間~~ 所以可以換算

發表於: 2009/10/23 17:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


計時器/計數器問題
#1
資深會員
資深會員


查看用戶資訊
小弟 剛學 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
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... ]

教育訓練中心

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