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

論壇索引


Board index » All Posts (ventrox)




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


各位
麻煩大家
急需這部分
不知道是不是忘記設定什麼
還是哪裡設定錯了?
再次謝謝

發表於: 2007/12/17 17:21
頂部


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


我不太確定 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
#33
初級會員
初級會員


#pragma config OSC = HS, BOREN=OFF, BORV = 2, PWRT=ON, WDT=OFF, LVP=OFF

不好意思
上面忘記貼上去

發表於: 2007/12/17 13:59
頂部


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


謝謝你的回覆
我剛剛試了

其實我已經改過一些設定
可是我跑出來的卻還不是我想要的東西
不知道有沒有什麼其他的我忘記設定
我想要讓她跑 8Mhz
可是我量出來的大概只有 38microseconds
差很多
謝謝各位

發表於: 2007/12/17 11:18
頂部


關於使用 internal oscillator
#35
初級會員
初級會員


各位
想請問一下,
我目前用的是 PIC18F4480
我希望用他內建的震盪器
目前已經設定 OSCCON 的值
理論上,我希望他有 8MHz
且我開了 PLL 功能
可是他跑出來,我量他的時間,大概只有 17us
我一直不知道如何去調他
不知道各位有沒有辦法幫幫忙?

我的程式碼如下:


#include <p18f4480.h>
#include <timers.h>

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

#define TMR1_VAL 65536-1//65536-16384

//宣告函式原型
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; // 遞加PORTD
PORTC=PORTC^0xff;
}

void main (void) {


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


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

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

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

void Init_TMR1 (void){


T1CON = 0b10000101;
TMR1H=0;
TMR1L=0;
//OSCCON = 0b01110011;
OSCCON=0b01110000;
OSCTUNE=0b01001111;
PIE1bits.TMR1IE=1;
WriteTimer1(TMR1_VAL); // 寫入預設值
PIR1bits.TMR1IF = 0; // 清除中斷旗標

}

發表於: 2007/12/14 16:22
頂部



« 1 2 3 (4)



:::

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... ]

教育訓練中心

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