會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





pwm設置問題
新會員
註冊日期:
4月12日 20:15:59
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 2 / 9
離線
請問各位前輩,目前在使用pwm設定時,在頻率的設置上設定了4khz,但使用示波器卻顯示6khz,這是哪裡設置錯誤呢?

再詢問一個問題 => SetDCPWM1((unsigned int)ADRESH << 2);這段code的左移是為了達成什麼效果?

感恩

// PIC18F4520 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1H
#pragma config OSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF // Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = SBORDIS // Brown-out Reset Enable bits (Brown-out Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 3 // Brown Out Reset Voltage bits (Minimum setting)

// CONFIG2H
#pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768 // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config CCP2MX = PORTBE // CCP2 MUX bit (CCP2 input/output is multiplexed with RB3)
#pragma config PBADEN = ON // PORTB A/D Enable bit (PORTB<4:0> pins are configured as analog input channels on Reset)
#pragma config LPT1OSC = OFF // Low-Power Timer1 Oscillator Enable bit (Timer1 configured for higher power operation)
#pragma config MCLRE = ON // MCLR Pin Enable bit (MCLR pin enabled; RE3 input pin disabled)

// CONFIG4L
#pragma config STVREN = ON // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF // Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
#pragma config XINST = OFF // Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

// CONFIG5L
#pragma config CP0 = OFF // Code Protection bit (Block 0 (000800-001FFFh) not code-protected)
#pragma config CP1 = OFF // Code Protection bit (Block 1 (002000-003FFFh) not code-protected)
#pragma config CP2 = OFF // Code Protection bit (Block 2 (004000-005FFFh) not code-protected)
#pragma config CP3 = OFF // Code Protection bit (Block 3 (006000-007FFFh) not code-protected)

// CONFIG5H
#pragma config CPB = OFF // Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected)
#pragma config CPD = OFF // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF // Write Protection bit (Block 0 (000800-001FFFh) not write-protected)
#pragma config WRT1 = OFF // Write Protection bit (Block 1 (002000-003FFFh) not write-protected)
#pragma config WRT2 = OFF // Write Protection bit (Block 2 (004000-005FFFh) not write-protected)
#pragma config WRT3 = OFF // Write Protection bit (Block 3 (006000-007FFFh) not write-protected)

// CONFIG6H
#pragma config WRTC = OFF // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF // Boot Block Write Protection bit (Boot block (000000-0007FFh) not write-protected)
#pragma config WRTD = OFF // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF // Table Read Protection bit (Block 0 (000800-001FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF // Table Read Protection bit (Block 1 (002000-003FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR2 = OFF // Table Read Protection bit (Block 2 (004000-005FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR3 = OFF // Table Read Protection bit (Block 3 (006000-007FFFh) not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF // Boot Block Table Read Protection bit (Boot block (000000-0007FFh) not protected from table reads executed in other blocks)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

void main () {

LATD = 0x00; // 將PORTD清除
TRISD = 0; // 將TRISD設為0,PORTD設定為輸出

ADCON0=0b00000001; // 選擇AN0通道轉換,開啟類比訊號轉換模組
ADCON1=0b00001110; // 使用VDD,VSS為參考電壓,設定AN0為類比輸入
ADCON2=0b00111010; // 結果往左靠齊,TAD時間為32TOSC,轉換時間為20TAD

TRISCbits.TRISC2 = 0; // 設定RC2為PWM輸出
OpenPWM1(0x9B); // 設定CCP1為PWM功能與時脈周期

//T2CON = 0x00; //將觸發次數歸零
T2CON = 0b00000101; //T2CON定義
//T2CONbits.TOUTPS3 = 0;
//T2CONbits.TOUTPS2 = 0;
//T2CONbits.TOUTPS1 = 0;
//T2CONbits.TOUTPS0 = 0;
//T2CONbits.TMR2ON = 1;
//T2CONbits.T2CKPS1 = 0;
//T2CONbits.T2CKPS0 = 1;
//OpenTimer2(TIMER_INT_ON & T2_PS_1_4 & T2_POST_1_1);
RCONbits.IPEN = 0;
INTCONbits.GIE = 0;
INTCONbits.PEIE = 0;
PIR1bits.TMR2IF = 1;
PIE1bits.TMR2IE = 0;

while(1) { // 無窮迴圈
_delay(50); // 時間延遲以完成轉換
ConvertADC() ; // 進行訊號轉換
while(BusyADC()); // 等待轉換完成
LATD = ADRESH ; // 將轉換結果顯示於LED
SetDCPWM1((unsigned int)ADRESH << 2); // 調整PWM周期

}

附加檔案:



jpg  tek00000.jpg (111.00 KB)
72890_5b29f1e9073f7.jpg 800X480 px

6月20日 14:19:44
轉換PDF檔 列印


Re: pwm設置問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14389
等級: 72; EXP: 88
HP : 1078 / 1797
MP : 4796 / 74735
離線
1. 我沒有看到 Timer2 的週期設定值? Timer2 要啟用 PWM 才會動作的。

2. ADC 是設定成左移調整,所以 ADRESH 的值是 ADC 的 b9 ~ b2,ADRESL 只剩下 b1~b0,0,0,0,0,0,0

SetDCPWM1((unsigned int)ADRESH << 2); 這看起來很奇怪,一般如只用 8-bit 的話,會直接就將 ASDREH 的 MSB 傳給 CCPR1L 暫存器。或 (SetDCPWM1 = (unsigned int) ADRESH; 即可。

如要 10-bit PWM 解析度,則是需用右移設定,將 ADCRESH + ADCRESL 的直先取出來到一個變數後再傳給 SetDCPWM1( ) 的函數。

6月21日 10:48:41
轉換PDF檔 列印


Re: pwm設置問題
新會員
註冊日期:
4月12日 20:15:59
所屬群組:
註冊會員
文章: 6
等級: 1; EXP: 47
HP : 0 / 11
MP : 2 / 9
離線
RYANG板主,感恩你
想問一下T2CON = 0b00000101; //T2CON定義這段已經設定好周期嘞,不是嗎?

6月21日 14:28:16
轉換PDF檔 列印


Re: pwm設置問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14389
等級: 72; EXP: 88
HP : 1078 / 1797
MP : 4796 / 74735
離線
Timer2 還有一個暫存器叫 TMR2 的,用來設定 PWM 的週期使用。

請參考一下 Timer2 及 PWM1 的方塊圖 (Data sheet 裡)

6月21日 15:07:20
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2018 Winter Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project