• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 3 »


Re: 關於使用 internal oscillator
#22
版主
版主


查看用戶資訊
Microchip 的 何仁杰 已經告訴你原音了。
http://www.microchip.com.tw/modules/n ... t_id=17354#forumpost17354
要這麼快的速度考慮使用 In-Line Assembly,並使用Hi-Priority Interrupt 所提共的 Shadow Register 的快速儲存功能,並用 RETFIE 1 的方式返回。

發表於: 2007/12/24 10:55
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#21
初級會員
初級會員


查看用戶資訊
各位
我把我的 interrupt 改成用 TIMER2 設定

我現在感覺就是
我想要在每一個 interrupt 發生的時候, 某幾隻腳會HIGH LOW HIGH LOW

另外,我用 EVM:APP001 Rev.2 這個版子,理論上上面有個 16MHz 的石英震盪器,所以我想要讓他在每次 interrupt (1 clock) 就改變,可是我現在量出來的都大概是 9uS。

放上有我的 code
//**********************************************************
//* Ex9_1_TMR1_INT.c
//* 設計一個0.5秒讓 PORTD 的 LED 所顯示的二進位數字自動加一的程式
//**********************************************************
#include <p18f4480.h> //納入微控制器定義檔
#include <timers.h> //納入計時器函式庫定義檔

// 結構位元定義
#pragma config BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF
#pragma config OSC = HS




#define TMR2_VAL 256-10//65536-16384 // Timer1 設定為 500ms 中斷一次

//宣告函式原型
void Init_TMR2(void);
void timer2_isr (void);

//宣告並安排中斷執行程式記憶體位置
#pragma code low_vector=0x18
void low_interrupt (void)
{
_asm GOTO timer2_isr _endasm
}
#pragma code

#pragma interruptlow timer2_isr

int i;

void timer2_isr (void)
{
PIR1bits.TMR2IF = 0; // 清除中斷旗標
WriteTimer2(TMR2_VAL); // 當將計數器觸發次數歸零寫入預設值0
PORTD=PORTD^0xff; PORTC=PORTC^0xff;

}

void main (void) {


PORTD = 0x00; TRISD = 0; PORTC = 0x00;
TRISC = 0;
i = 0;


Init_TMR2(); // 初始化設定Timer1函式

INTCONbits.PEIE = 1; // 開啟周邊中斷功能
INTCONbits.GIE = 1; // 開啟全域中斷控制

while (1); // 無窮迴圈
}

void Init_TMR2 (void){



OpenTimer2(T2_POST_1_1 &
T2_PS_1_1);
PR2=0xff;

PIE1bits.TMR2IE=1;
WriteTimer2(TMR2_VAL); // 寫入預設值
PIR1bits.TMR2IF = 0; // 清除中斷旗標

}

附上也有我的版子
不知道是不是要調什麼 jumper?

麻煩各位幫幫忙
謝謝

附件: http://img205.imageshack.us/img205/8773/img0284dm7.jpg

發表於: 2007/12/21 18:55
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#20
資深會員
資深會員


查看用戶資訊
參照:

ventrox 寫到:
[quote]
由 Alecfox 貼於 2007/12/18 17:23:36

引言:

ventrox 寫到:
恩,我了解
我之前看就知道沒有辦法做到 20 mS
所以我想要用 interrupt 達到每 5uS 可以讓其中一個 IO 轉變
可是我目前只做得到 17uS
就是說,我想要做個PWM,duty cycle 是5uS 週期是 10uS
不知道是不是我設定哪裡錯
謝謝

這樣清楚我想要的嗎?




那 你的TIMER 有設定好嗎 ??
妳要設定時間 讓他固定時間中斷
可是你的程式裡面 那值是0 @@"
TIMER 架構在指令週期上 先確定指令週期的時間 然後再去更改TMR1L,TMR1H這兩個值 (TIMER1)
然後 多試幾次 就會得到你想要的

^^



請問,你說的那個值,我不太了解是哪一個值。指令週期的時間是用哪一個 Register 設定的?

~~~

我所說的 是關於TIMER1的設定 無關於指令週期的設定
利用TIMER1觸發中斷 所以你需要先知道指令週期的時間
再去計算要放多少計算值 然後讓TIMER1 可以達到妳要的5uS
不過還是建議你直接使用TIMER2 就依版主說的 這樣的方式會比較簡單 比起TIMER1來觸發中斷
不過 原理是一樣的 ^^

發表於: 2007/12/19 19:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#19
初級會員
初級會員


查看用戶資訊
參照:

由 Alecfox 貼於 2007/12/18 17:23:36

引言:

ventrox 寫到:
恩,我了解
我之前看就知道沒有辦法做到 20 mS
所以我想要用 interrupt 達到每 5uS 可以讓其中一個 IO 轉變
可是我目前只做得到 17uS
就是說,我想要做個PWM,duty cycle 是5uS 週期是 10uS
不知道是不是我設定哪裡錯
謝謝

這樣清楚我想要的嗎?




那 你的TIMER 有設定好嗎 ??
妳要設定時間 讓他固定時間中斷
可是你的程式裡面 那值是0 @@"
TIMER 架構在指令週期上 先確定指令週期的時間 然後再去更改TMR1L,TMR1H這兩個值 (TIMER1)
然後 多試幾次 就會得到你想要的

^^



請問,你說的那個值,我不太了解是哪一個值。指令週期的時間是用哪一個 Register 設定的?

參照:

Re: 關於使用 internal oscillator
還是建議使用Timer2來計時會比用 Timer1 好。
Timer2 的預除器設為 1:1,0.5uS Tcy (8MHz OSC) 就設 PR2 = 10 就可以得到 5uS 的中斷時間。
看起來要每 5uS 中斷一次,OSC 再拉高點會比較好。建議使用40MHz。


請問,關於這個,如何在把 Clock 往上提?
我會再另外用 Timer2 試試看
謝謝

發表於: 2007/12/19 17:26
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#18
版主
版主


查看用戶資訊
還是建議使用Timer2來計時會比用 Timer1 好。
Timer2 的預除器設為 1:1,0.5uS Tcy (8MHz OSC) 就設 PR2 = 10 就可以得到 5uS 的中斷時間。
看起來要每 5uS 中斷一次,OSC 再拉高點會比較好。建議使用40MHz。

發表於: 2007/12/19 12:00
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#17
資深會員
資深會員


查看用戶資訊
參照:

ventrox 寫到:
恩,我了解
我之前看就知道沒有辦法做到 20 mS
所以我想要用 interrupt 達到每 5uS 可以讓其中一個 IO 轉變
可是我目前只做得到 17uS
就是說,我想要做個PWM,duty cycle 是5uS 週期是 10uS
不知道是不是我設定哪裡錯
謝謝

這樣清楚我想要的嗎?



那 你的TIMER 有設定好嗎 ??
妳要設定時間 讓他固定時間中斷
可是你的程式裡面 那值是0 @@"
TIMER 架構在指令週期上 先確定指令週期的時間 然後再去更改TMR1L,TMR1H這兩個值 (TIMER1)
然後 多試幾次 就會得到你想要的

^^

發表於: 2007/12/18 17:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#16
初級會員
初級會員


查看用戶資訊
恩,我了解
我之前看就知道沒有辦法做到 20 mS
所以我想要用 interrupt 達到每 5uS 可以讓其中一個 IO 轉變
可是我目前只做得到 17uS
就是說,我想要做個PWM,duty cycle 是5uS 週期是 10uS
不知道是不是我設定哪裡錯
謝謝

這樣清楚我想要的嗎?


發表於: 2007/12/18 15:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#15
資深會員
資深會員


查看用戶資訊
參照:

ventrox 寫到:
我現在做到的是
他只能到達 17uS
我不了解是不是哪裡沒有設定好
我想 8Mhz 應該可以做到 0.5uS 沒有錯,只是,我就是無法做到
能不能麻煩各位一下
我對 PIC 是新手,不懂還要去作其他設定

再次謝謝


還有,我需要的 PWM 週期是 20 mS
PWM Module 做得到嗎?


回答你第二個問題
PWM的Module 請看Datasheet 18F4455 page146-
基本上 你用18F系列 是達不到20mS的 那值要放一萬, 8BIT才255 所以是做不到 ~~~
其實我不清楚你是要怎樣應用
不過硬體是達不到這個RANGE

發表於: 2007/12/18 15:15
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#14
初級會員
初級會員


查看用戶資訊
我現在做到的是
他只能到達 17uS
我不了解是不是哪裡沒有設定好
我想 8Mhz 應該可以做到 0.5uS 沒有錯,只是,我就是無法做到
能不能麻煩各位一下
我對 PIC 是新手,不懂還要去作其他設定

再次謝謝


還有,我需要的 PWM 週期是 20 mS
PWM Module 做得到嗎?

發表於: 2007/12/18 14:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於使用 internal oscillator
#13
資深會員
資深會員


查看用戶資訊
參照:

Ryang 寫到:
1. 8MHz OSC 指令週期為 0.25uS (4MHz Fosc),與 5uS有40個指令執行時間,但 PIC18F 刻意執行到 40MHz 的速度,這時速度就非常快了。


8MHz 的OSC指令週期應該是0.5us, 不會是5uS
4MHZ FOSC 才是0.25uS
一個指令週期包含四個震盪時間(FOSC) ~ (An “Instruction Cycle” consists of four Q cycles: Q1through Q4.) -DATASHEET PIC18
F4455 page 61.

所以 你使用8M OSC 應該是得到0.5uS 不會是5uS

發表於: 2007/12/18 12:48
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... ]

教育訓練中心

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